Почему ЖК-дисплей не работает с этим оператором if?

#include <LiquidCrystal.h>
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); 
int greenLedPin = 12;
int blueLedPin = 11;
int redLedPin = 8;
int yellowLEdPin = 9;

int lightSensorPin = A0;
int analogValue = 0;

void setup() {
  // поместите сюда свой код установки для однократного запуска:
  lcd.begin(16, 2); 
  pinMode(greenLedPin, OUTPUT);
  pinMode(blueLedPin, OUTPUT);
  pinMode(redLedPin, OUTPUT);
  pinMode(yellowLEdPin, OUTPUT);
  Serial.begin(9600);
  while (! Serial);

}

void loop() {
  // поместите сюда свой основной код для многократного запуска:
  Serial.println(analogRead(lightSensorPin));
  analogValue = analogRead(lightSensorPin);
  if (analogValue < 50) {

digitalWrite(redLedPin, HIGH);


  }
  else if (analogValue >= 50 && analogValue <= 99) {
    digitalWrite(yellowLEdPin, HIGH);
  }
  else if (analogValue >= 100 && analogValue <= 300) {

    digitalWrite(blueLedPin, HIGH);
    lcd.print("its bright");
 }
  else {
      digitalWrite(greenLedPin, HIGH);
      lcd.print("its bright");
      }

  delay(3000);
  digitalWrite(greenLedPin, LOW);
  digitalWrite(blueLedPin, LOW);
  digitalWrite(redLedPin, LOW);
  digitalWrite(yellowLEdPin, LOW);
  lcd.clear();

}

Я новичок в этом деле, поэтому извините, если это глупая ошибка, и я знаю, что мой ЖК-дисплей работает правильно, поскольку я проверил его и убедился, что все контакты в порядке.

, 👍1

Обсуждение

В Uno контакты 0 и 1 используются для последовательного порта. Вы не можете использовать контакт 1 для последовательного порта в дополнение к ЖК-дисплею. Что произойдет, если вы измените проводку, чтобы использовать другой контакт, и соответствующим образом обновите код?, @per1234

большое спасибо, кажется, это сработало для меня, @PHANTOM NightCore

Пожалуйста. Я очень рад это слышать! Я написал формальный ответ, чтобы система Stack Exchange могла считать ответом на этот вопрос. Если вы считаете это правильным ответом, вы можете «[принять](https://stackoverflow.com/help/accepted-answer)»., @per1234


1 ответ


Лучший ответ:

1

В Uno контакты 0 и 1 используются для последовательного порта. Вы не можете использовать контакт 1 для последовательного порта в дополнение к ЖК-дисплею. В общем, лучше избегать использования контактов 0 и 1.

Вам необходимо изменить проводку ЖК-дисплея, чтобы использовать другой контакт, и соответствующим образом обновить код. Например, если вы переместили разъем RS ЖК-дисплея с контакта 1 на Arduino на контакт 13, вы обновите эту строку:

LiquidCrystal lcd(1, 2, 4, 5, 6, 7);

кому:

LiquidCrystal lcd(13, 2, 4, 5, 6, 7);

После этого ваш ЖК-дисплей должен работать правильно.

,