我在使用LCD和Arduino时遇到问题。
当我使用显示HelloWorld的LiquidCrystal.h的示例代码时,LCD工作得很完美。但是当我添加相同的代码作为另一个代码的一部分时,LCD不能很好地显示。它只是闪烁几个字母然后逐渐消失。
基本上我想显示从计算机浏览器获得的数据,该浏览器连接到以太网屏蔽连接到的同一网络。但我只是尝试显示基本的,以便我可以进行相应的编辑。
#include <SPI.h>
#include <Ethernet.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
boolean incoming = 0;
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 };
IPAddress ip(192,168,0,117);
EthernetServer server(80);
void setup()
{
lcd.begin(16, 2);
lcd.print("hello, world!");
Serial.begin(9600);
Ethernet.begin(mac, ip);
server.begin();
Serial.println("My IP Address is: ");
Serial.println(Ethernet.localIP());
}
void loop()
{
lcd.setCursor(0,1);
lcd.print(millis() / 1000);
EthernetClient client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if(incoming && c == ' '){
incoming = 0;
}
if(incoming == 1){
Serial.println(c);
}
if(c == '$'){
incoming = 1;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
}
}
有效的示例代码是:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
lcd.print("hello, world!");
}
void loop() {
lcd.setCursor(0, 1);
lcd.print(millis() / 1000);
}
答案 0 :(得分:0)
看起来您在用于LCD的引脚和用于以太网屏蔽的引脚之间存在冲突。
如果您使用的是Uno,则引脚11,12和13上的Ethernet shield uses the SPI bus。代码中的这一行:
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
说你也是using pins 11 and 12 for the LCD。
您可能需要为显示器使用不同的引脚或使用不同的电路板,如Arduino Mega,这为SPI总线提供了更多选择。
答案 1 :(得分:-1)
您使用的是哪种LCD和以太网硬件?例如,如果您在Arduino以太网屏蔽的顶部使用LCD-Display,则存在硬件冲突,您实际上必须进行一些修改(在我的情况下,从LCD切割引脚10)。请告诉我们您的硬件设置。