6
« -: Април 29, 2013, 11:55:50 am »
Здравейте... създавам vending машина с четири слота. Целта ми е при натискане на един от четирите бутона да се активира бубината на реле, което от своя страна е ключ към захранващата верига на електромоторче с редуктор. До тук всичко е ок ... проблемът е в това, че искам всички действия да бъдат print-вани на lcd дисплей (16x2) т.е. ако няма натиснат бутон на дисплея да пише "Моля изберете артикул" , а след като някой от четирите бутона бъде натиснат и докато релето сработва да се изписва да речем "Вие избрахте Артикул 1" или артикул 2,3,4. Ето кодът с управлението на релетата:
#include <LiquidCrystal.h>
int relay1 = 22;
int relay2 = 23;
int relay3 = 24;
int relay4 = 25;
int button1= 30;
int button2= 31;
int button3= 32;
int button4= 33;
int button1status = 0;
int button2status = 0;
int button3status = 0;
int button4status = 0;
LiquidCrystal lcd(50, 51, 44, 45, 46, 47);
void setup() {
lcd.begin(16, 2);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
pinMode(button1, INPUT);
pinMode(button2, INPUT);
pinMode(button3, INPUT);
pinMode(button4, INPUT);
}
void loop(){
button1status = digitalRead(button1);
button2status = digitalRead(button2);
button3status = digitalRead(button3);
button4status = digitalRead(button4);
if(button1status == HIGH){
digitalWrite(relay1,HIGH);
delay(2000);
}else{
digitalWrite(relay1,LOW);
}
if(button2status == HIGH){
digitalWrite(relay2,HIGH);
delay(2000);
}else{
digitalWrite(relay2,LOW);
}
if(button3status == HIGH){
digitalWrite(relay3,HIGH);
delay(2000);
}else{
digitalWrite(relay3,LOW);
}
if(button4status == HIGH){
digitalWrite(relay4,HIGH);
delay(2000);
}else{
digitalWrite(relay4,LOW);
}
Пробвах в блоковете "if" да използвам
lcd.setCursor(0,0);
lcd.print(".........");
, но уви - опресняването става или прекалено бързо или прекалено бавно и в крайна сметка пикселите на lcd-то само леко променят контраста си без да изобразяват нещо.