Код для реализации простого сигнала светофора, а также отображения на ЖК-дисплее, какой цвет включен?
Я попробовал код, приведенный ниже, для простого сигнала светофора, а также для отображения на ЖК-дисплее, какой цвет включен, но это не сработало. Пожалуйста, сделай так, чтобы это сработало.
int red = 10;
int yellow = 9;
int green = 8;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup(){
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
}
void loop(){
changeLights();
delay(1500);
}
void changeLights(){
lcd.print("red");
digitalWrite(yellow,LOW );
digitalWrite(red, HIGH);
digitalWrite(green,LOW );
delay(3000);
lcd.print("yellow");
digitalWrite(yellow,HIGH );
digitalWrite(red,LOW );
digitalWrite(green,LOW );
delay(3000);
lcd.print("green");
digitalWrite(yellow,LOW );
digitalWrite(red,LOW );
digitalWrite(green,HIGH );
delay(3000);
//if(
}
@zartasha malik, 👍1
Обсуждение2 ответа
▲ 3
Напишите скетч, чтобы протестировать свой ЖК-дисплей.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 4, 2);
void setup(){
lcd.begin();
lcd.print("Hello World!");
}
void loop() {
lcd.setCursor(0, 1);
lcd.print(millis() / 1000);
}
Убедитесь, что вывод R/W подключен к GND на вашем макете. Возможно, вам потребуется подключить контрастный вывод к 5 В. В идеале он должен быть подключен к стеклоочистителю планки 10 Ком с любым концом, подключенным к GND и 5 В (чтобы вы могли варьировать контрастность).
Как только эта настройка заработает, измените свой код
void setup(){
lcd.begin();
lcd.print("Traffic signals");
delay(500);
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
}
void loop(){
changeLights();
lcd.setCursor(0,0);
}
,
@Dougie
▲ 0
Небольшое обновление вашего кода
- Добавлена
функция lcd.begin();
- добавлена
функция lcd.clear ();
, позволяющая удалять старые символы перед добавлением нового дисплея
Вот полный код
int red = 10;
int yellow = 9;
int green = 8;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
}
void loop() {
changeLights();
delay(1500);
}
void changeLights() {
lcd.clear();
lcd.print("red");
digitalWrite(yellow, LOW );
digitalWrite(red, HIGH);
digitalWrite(green, LOW );
delay(3000);
lcd.clear();
lcd.print("yellow");
digitalWrite(yellow, HIGH );
digitalWrite(red, LOW );
digitalWrite(green, LOW );
delay(3000);
lcd.clear();
lcd.print("green");
digitalWrite(yellow, LOW );
digitalWrite(red, LOW );
digitalWrite(green, HIGH );
delay(3000);
//if(
}
Результат будет выглядеть следующим образом:
Вот ссылка на пример симулятора Arduino
,
@ArduinoFan
Смотрите также:
- Как подключить LCD i2c, используя только контакты A0 и A1 (приведены SDA, SCL, GND и VCC)
- Как повторить другое действие внутри цикла?
- Работа с мультиплексорами для получения постоянного напряжения на выходе
- Включение и выключение двух наборов светодиодов с помощью двух кнопок
- Печать string and integer LCD
- Несколько условий оператора if
- Светодиоды: разница между общим анодом и общим катодом
- Отправка значения с одного Arduino на другой
Что не работает? Что он должен делать?, @VE7JRO
ЖК-дисплей не будет работать, если вы не " начнете` его..., @Majenko
Вам необходимо предоставить дополнительную информацию. Что не работает? Вы пробовали простой скетч, который просто включает один из ваших светильников, затем редактируете его, чтобы включить следующий, а затем последний? (Вам нужно использовать максимально простой код, чтобы исключить проблемы с оборудованием), @Duncan C