tynco
Nuovo Utente
- Messaggi
- 6
- Reazioni
- 0
- Punteggio
- 3
sono straniero e scusate se sbaglio a scrivere ,
Sto scrivendo un codice per leggere impulsi tipo onda quadra , a presenza di questi che mi resta ingresso alto fin che arrivano segnali appena si interrompe arrivo di segnali deve andare in allarme e poi girare in aspetto.
invece succede che va subito in allarme , non so dove sbaglio se ce qualcuno a dare una mano che posso sistemare codice .
Grazie.
ecco il code:
Sto scrivendo un codice per leggere impulsi tipo onda quadra , a presenza di questi che mi resta ingresso alto fin che arrivano segnali appena si interrompe arrivo di segnali deve andare in allarme e poi girare in aspetto.
invece succede che va subito in allarme , non so dove sbaglio se ce qualcuno a dare una mano che posso sistemare codice .
Grazie.
ecco il code:
C:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define BUZZER 9
#define ALARME 10
#define STBY 11
#define LAVORO 12
#define START 13
#define RUOTA 2
int start = 0;
LiquidCrystal_I2C lcd (0x27, 20, 4);
int stato;
#define ASPETTO 0
#define LAVORARE 1
#define ST1_ERROR 2
#define STOP1 9
#define ST_END 99
byte ruota;
long t1 = 3000;
long t2 = 0;
void setup() {
pinMode(RUOTA, INPUT_PULLUP);
pinMode(BUZZER, HIGH);
pinMode(ALARME, OUTPUT);
pinMode(STBY, OUTPUT);
pinMode(LAVORO, OUTPUT);
pinMode(START, INPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print(" > * <");
//delay(2000);
lcd.clear();
}
void loop() {
while (!digitalRead(START)) {
delay(3000);
stato = LAVORARE;
}
int ruota = digitalRead(RUOTA);
switch (stato) {
case ASPETTO:
lcd.setCursor (0, 0);
lcd.print ("RUOTA ");
lcd.print (ruota);
lcd.print (" ");
ruota = 0;
lcd.setCursor (0, 3);
lcd.print (">>> ASPETO <<<");
digitalWrite(BUZZER, HIGH);
digitalWrite(ALARME, HIGH);
digitalWrite(STBY, HIGH);
digitalWrite(LAVORO, HIGH);
break;
case LAVORARE:
lcd.setCursor (0, 0);
lcd.print ("RUOTA ");
lcd.setCursor (3, 0);
lcd.print (" ");
lcd.print (ruota);
lcd.setCursor (0, 3);
lcd.print ("**LAVORO IN CORSO**");
digitalWrite(BUZZER, HIGH);
digitalWrite(ALARME, HIGH);
digitalWrite(STBY, LOW);
digitalWrite(LAVORO, LOW);
;
if (ruota != 0) // penso che qui sbaglio
ruota = 0;
else {
stato = ST1_ERROR;
}
break;
case ST1_ERROR:
lcd.clear();
lcd.print(" >> ALARME: RUOTA << ");
lcd.setCursor(0, 1);
lcd.print(" NON CONTA ");
digitalWrite(BUZZER, LOW);
digitalWrite(ALARME, LOW);
digitalWrite(STBY, HIGH);
digitalWrite(LAVORO, HIGH);
delay (2000);
stato = STOP1;
break;
case STOP1:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" LA RUOTA NON GIRA ");
digitalWrite(BUZZER, HIGH);
digitalWrite(ALARME, LOW);
digitalWrite(STBY, HIGH);
digitalWrite(LAVORO, HIGH);
delay(6000);
stato = ST_END;
break;
case ST_END:
lcd.clear();
digitalWrite(BUZZER, HIGH);
delay(100);
stato = ASPETTO;
break;
}
}
Ultima modifica da un moderatore: