Вывод текста на LCD
- Войдите на сайт для отправки комментариев
Пнд, 05/11/2012 - 21:40
Uno+1602A
При нажатии на кнопку во второй строке Off меняется на On, при отпускании обратно на Off. При нажатии вместо On появляется Onf. Чтото никак тостучать не могу?
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
int buttonState = 0;
const int buttonPin = 8;
int relaypin = 3;
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.clear();
lcd.print("Switch");
pinMode(buttonPin, INPUT);
pinMode(relaypin, OUTPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
lcd.setCursor(0, 1);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
// lcd.clear();
lcd.write("On");
digitalWrite(relaypin, HIGH);
}
else {
lcd.write("Off");
digitalWrite(relaypin, LOW);
}
}
Перед тем как хотите вывести что-то новое дисплей нужно очищать, раскоментируйте строку 25
lcd.clear();Ну это я тоже пробовал, приэтом экран начинает мерцать
Это потому что вы часто выводите.Задержку в конце поставьте
27lcd.write("On ");Предлагаю такую редакцию строики 27
27lcd.write("On ");Предлагаю такую редакцию строики 27
Оригинально конечно, чтото о пробеле я не подумал
Орегинально то оно оригинально, но подход сам по себе не верный и с задержкой тоже самое. Вам нужно реализовать такой код, что бы при нажатии и отпускании кнопки информация отправлялась на дисплей только один раз.
Скажем например так
#include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 7, 6, 5, 4); boolean buttonState = 0; const int buttonPin = 8; int relaypin = 3; void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.clear(); lcd.print("Switch"); pinMode(buttonPin, INPUT); pinMode(relaypin, OUTPUT); } void loop() { if(digitalRead(buttonPin) && !buttonState){ lcd.clear(); lcd.setCursor(0, 1); lcd.write("On"); digitalWrite(relaypin, HIGH); buttonState = 1; } if(!digitalRead(buttonPin) && buttonState){ lcd.clear(); lcd.setCursor(0, 1); lcd.write("Off"); digitalWrite(relaypin, LOW); buttonState = 0; } }Орегинально то оно оригинально, но подход сам по себе не верный и с задержкой тоже самое. Вам нужно реализовать такой код, что бы при нажатии и отпускании кнопки информация отправлялась на дисплей только один раз.
Да, ты верно мыслишь, пока проверить твой код не могу приду домой залью в ардуино, я вчера пробовал и с задержкой и с очисткой, но все получалось не так как надо