我是 Python 和 MQTT 的新手。我能够编写一些 Python 工作代码来将连接的传感器数据发布到代理,现在我想订阅多个主题并在连接到树莓的 LCD 20x4 上写入所有有效负载。
实际上我写了一个 Python 来订阅一个主题并将有效负载写在 LCD 上;没问题,它正在工作。无法在同一个 Python 中包含其他主题并将有效负载写入 LCD。
您可以在下面找到我的“仅”一个主题的工作 Python 代码。
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# RPi-S-LCD.py
# Created on 8/1/2017
#
# Python program that write payloads on LCD 20x4
#
import time
import sys
import os
import paho.mqtt.client as paho
sys.path.append("/home/pi/Adafruit_Python_CharLCD")
import Adafruit_CharLCD as LCD
import Adafruit_GPIO.MCP230xx as MCP
### Define MCP pins connected to LCD
lcd_rs = 6
lcd_en = 4
lcd_d4 = 3 …Run Code Online (Sandbox Code Playgroud) 我想开发一个用于教育目的的 PC LCD 显示模拟器。显示器采用HD44780。
我不知道从哪里开始。
我正在尝试为一个名为uLCD32-pt的LCD设备编写一个脚本,问题是您需要以波特率9600连接它,并且为了获得更高的波特率,您必须连接它,发送更改波特率命令,然后以新设置的波特率发送新命令.在绘制像素时,我的液晶显示器显得非常慢,我知道它因为波特率,所以在连接到设备后,他们有什么方法可以改变波特率?到目前为止,这是我的代码?
import serial
import time
#Connect to uLCD32-pt with autobaud
ser = serial.Serial(
port='/dev/ttyUSB0',
baudrate=9600,
timeout=1,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
)
ser.write("U")
while(True):
#15 x white pixels
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0001)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#1
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0002)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#2
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0003)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#3
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0004)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#4
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0005)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#5
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0006)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#6
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0007)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#7
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0008)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#8
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0009)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#9
ser.write(chr(0x0050)+chr(0x0000)+chr(0x000A)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#10
ser.write(chr(0x0050)+chr(0x0000)+chr(0x000B)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#11
ser.write(chr(0x0050)+chr(0x0000)+chr(0x000C)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#12
ser.write(chr(0x0050)+chr(0x0000)+chr(0x000D)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#13
ser.write(chr(0x0050)+chr(0x0000)+chr(0x000E)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#14
ser.write(chr(0x0050)+chr(0x0000)+chr(0x000F)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#15
ser.write(chr(0x0050)+chr(0x0000)+chr(0x0010)+chr(0x0000)+chr(0x000A)+chr(0x00FF)+chr(0x00FF))#16
Run Code Online (Sandbox Code Playgroud) 早上好家伙.
我买了一个集成了电阻式触摸屏的LCD嵌入式显示器.TS可通过USB连接.
我已将其连接到运行Android 4.0.3的设备,并且触摸被正确识别为外部HID.问题:敲击(按下)不被认为是选择/确认......出现这种情况,当我点击屏幕,是在协调我finger..like的我感动corrispondance移动指针(箭头)的唯一的事情没有左键单击的鼠标HID
我不可能滚动或选择一些东西 - >对我来说很乱:(
请记住,我有另一台带有集成USB TS的LCD,可以正常工作.我可以选择的情况下,我对他们的挖掘图标,我可以滚动窗口等 - > exactely像左键鼠标点击总是 - >确定对我!
也许这是司机的问题,但我没有具体的想法.
Ps我没有该设备的特定驱动程序.
有什么建议吗?请帮我 :)
先感谢您!!!!!
我正在使用Winstar Display LCD(WH2004A-YYK-CP)和STM32处理器,代码用C语言编写.我需要以4位模式运行它.我运行它并写下我想要的东西.
如您所知,4位模式将8位数据发送为2位4位.问题是,当我在2个半字节之间重置时,它会输出奇怪的字符,无论我重置多少,它都无法正常工作.我提出的唯一解决方案是多次重置它.
为了弄清楚发生了什么,我在2个半字节(每个4位)之间增加了2秒延迟,并打印了一个长句.因此每当我重置它,处理器等待发送第二个半字节.
我正在重置它,它打印一些奇怪的东西,在第二次重置后它什么都没打印,在第三次重置后它再次正确打印.第四次重置它再次打印出一些奇怪的东西,第五次打印没有任何东西,第六次再次正确打印......并继续这样下去.因此,我现在确定问题是这些划分的字节.
类似的代码在8位模式下工作得非常好.
我要问的是:我怎么能确定"当我重置STM32处理器时,LCD没有等待在前一个会话中发送第一个半字节的某些数据的第二个半字节." 使用C代码?
更新:
我也在这里发送我的代码:http://pastebin.com/kHQQEqjx
LCD命令也在这里:http://imgur.com/mfDlj
我正在开发一个WPF应用程序,它将以全高清LCD屏幕(42英寸)显示.另外,我需要在绝对位置容纳控件.在开发环境中,我看不到长度为1920x1080的窗口(这是目标屏幕的固定分辨率).
完成此任务的最佳做法是什么?
我正在开发将在LCD上显示输出的系统。
我将变量数据类型声明为float,但是LCD显示屏显示0.00而不初始化,因为我用0.0声明了它,所以
我希望LCD显示屏显示0.000,但是无论我如何尝试更改初始化值,LCD显示屏始终显示0.00
因此,如何使LCD显示屏显示0.000,
这是图像的链接,
下面是我的代码:
#include <LiquidCrystal.h>
volatile int NbTopsFan;
float flowrate = 0.0;
float volume = 0.0;
int hallSensor = 2;
LiquidCrystal lcd (12, 11, 9, 8, 7, 6);
void rpm() {
NbTopsFan++;
}
void setup(){
pinMode(3, OUTPUT);
pinMode (hallSensor, INPUT);
Serial.begin (9600);
attachInterrupt (0, rpm, RISING);
lcd.begin (16, 2);
lcd.clear ();
}
void loop (){
digitalWrite(3, HIGH);
NbTopsFan=0;
sei();
delay(1000);
cli();
flowrate = NbTopsFan / 7.5;
volume += (flowrate …Run Code Online (Sandbox Code Playgroud) 此示例草图显示了如何使用setCursor()方法重新定位光标。要移动光标,只需调用具有行和列位置的setCursor()即可。例如,对于2x16显示器:
lcd.setCursor(0, 0); // top left
lcd.setCursor(15, 0); // top right
lcd.setCursor(0, 1); // bottom left
lcd.setCursor(15, 1); // bottom right
Run Code Online (Sandbox Code Playgroud)
我无法理解以上代码。任何人都可以提供相同的说明吗?
我买的液晶显示器不工作,我不知道为什么!当我上传代码时,显示屏仅亮起,但没有显示任何内容!有什么帮助吗?
我的 LCD 型号:1602A 带 I2C (16x2)就像这里的这个
地址:0x27(使用I2C扫描码检查)
代码:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup() {
lcd.begin(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(1,0);
lcd.print("hello everyone");
lcd.setCursor(1,1);
lcd.print("I am Giga Blitz");
}
void loop() {
}
Run Code Online (Sandbox Code Playgroud)
示意图: 点击此处查看图片
我有两个模块
以下代码段最相关,并附在下面:
顶层模块:
计数器counter1(...,error_count); lcd lcd1(...,error_count);
计数器模块:
模块计数器(...,error_count); ... 输出寄存器[31:0] error_count = 0; ... //每个时钟周期更新计数器 终端模块
LCD模块:
模块LCD(...,error_count); ... 输入[31:0] error_count; ... //用于在LCD上显示的error_count 终端模块
此代码有什么问题?显示屏仅输出0作为输出。我传递向量的方式有什么问题吗?
附加信息:我正在使用Xilinx Spartan 3E入门套件来测试此代码。LCD代码很好,我已经使用本地计数器(reg [31:0])对其进行了测试。
我正在使用 C 在 CodeVision AVR 中进行编码,我想从 0 数到 100(计数器),然后将其显示在 Proteus 的 LCD 上。在 CodeVision 中选择“全部构建”时,出现此错误。我不知道为什么。
未定义符号 'sprintf'
编码:
#include <mega16.h>
#include <delay.h>
#include <alcd.h>
void main(void)
{
int i;
char buffer[10];
lcd_init(16);
while(1)
{
for(i=0;i<=100;i++)
{
lcd_clear();
lcd_gotoxy(0,0);
sprintf(buffer, "Time=%2d", i);
lcd_putsf(buffer);
delay_ms(100);
}
}
}
Run Code Online (Sandbox Code Playgroud)