ЖК-дисплей не отображает желаемое с Arduino

У меня проблема с работой LCD и Arduino.

Когда я использую пример кода для LiquidCrystal.h, который отображает HelloWorld, ЖК-дисплей работает идеально. Но когда я добавляю то же самое как часть другого кода, ЖК-дисплей плохо отображается. он просто мерцает несколькими буквами, а затем постепенно исчезает.

В основном я хочу отображать данные, которые я получаю из браузера компьютера, подключенного к той же сети, к которой подключен Ethernet Shield. Но я просто пытаюсь отобразить основной, чтобы я мог соответствующим образом редактировать.

#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);
}

person mShaffaf    schedule 28.07.2016    source источник


Ответы (2)


Похоже, у вас есть конфликт между контактами, используемыми для ЖК-дисплея, и контактами, используемыми для экрана Ethernet.

Если вы используете Uno, Ethernet Shield использует шину SPI на контактах 11, 12 и 13. Эта строка из вашего кода:

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

говорит, что вы также используете контакты 11 и 12 для ЖК-дисплея.

Возможно, вам придется использовать разные контакты для дисплея или использовать другую плату, например Arduino Mega, которая дает вам больше возможностей для выбора шины SPI.

person Adrian McCarthy    schedule 28.07.2016

Какое оборудование LCD и Ethernet вы используете? Например, если вы используете ЖК-дисплей поверх Ethernet-щита Arduino, возникает аппаратный конфликт, и вам действительно нужно внести некоторые изменения (в моем случае, отрезать контакт 10 от ЖК-дисплея). Пожалуйста, сообщите нам о настройке вашего оборудования.

person Michael Yu    schedule 28.07.2016
comment
Это должно было быть опубликовано как комментарий к вопросу, а не как ответ. - person Adrian McCarthy; 29.07.2016
comment
Я использую отдельный ЖК-дисплей и подключил его к контактам Ethernet Shield, которые помещаются над Arduino. Задача решена. Это конфликт контактов. - person mShaffaf; 31.07.2016