Покажи участието

От тук може да видиш всички публикации на този потребител.


Теми - moschino

Страници: [1]
1
Ардуино (Arduino) / Затруднение с кода ( lcd 16x2 )
« -: Април 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-то само леко променят контраста си без да изобразяват нещо.

Страници: [1]