Salve ragazzi, ho realizzato un programma per scheda relè (quella impilabile su Arduino uno) e ho avuto alcuni problemi.
Secondo il progetto il primo relè deve funzionare da temporizzatore per 3 minuti. Il secondo deve attivarsi se premo un pulsante per 3 secondi e si disattiva se lo premo per altri 3. Poi ho un altro pulsante e se lo premo una volta si attiva il terzo relè, se lo premo di nuovo si attiva il quarto e infine se tengo premuto questo pulsante per 3 secondi si spegne tutto.
Ecco il programma che ho scritto:
#define out1 5
#define out2 6
#define out3 7
#define out4 8
#define inp1 9
#define inp2 10
#define inp3 11
long int tempo1=180; //ogni tempo va espresso in secondi
long int tempo2=3;
long int tempo3=3;
long int tem1;
long int tem2;
long int tem3;
long int pul2;
long int pul3;
int bussate=0;
void setup() {
pinMode(out1,OUTPUT);
pinMode(out2,OUTPUT);
pinMode(out3,OUTPUT);
pinMode(out4,OUTPUT);
pinMode(inp1,INPUT);
pinMode(inp2,INPUT);
pinMode(inp3,INPUT);
digitalWrite(out1,LOW);
digitalWrite(out2,LOW);
digitalWrite(out3,LOW);
digitalWrite(out4,LOW);
}
void loop() {
tem1=tempo1*1000;
tem2=tempo2*1000000;
tem3=tempo3*1000000;
if ( digitalRead(inp1) == HIGH ) {
digitalWrite(out1,HIGH);
delay(tem1);
digitalWrite(out1,LOW); }
else {
digitalWrite(out1,LOW); }
if ( digitalRead(inp2) == HIGH ){
pul2=pulseIn(inp2,HIGH);
if(pul2>=tem2){
digitalWrite(out2,HIGH); } }
else { digitalWrite( out2,LOW ); }
if ( digitalRead(inp3) == HIGH ) {
bussate=bussate++;
pul3=pulseIn(inp3,HIGH);
if(bussate=1){
digitalWrite(out3,HIGH); }
else if(bussate=2){
digitalWrite(out4,HIGH); }
if(pul3>=tem3){
digitalWrite(out3,LOW);
digitalWrite(out4,LOW); }
}
}
i pulsanti sono collegati a inp1 inp2 inp3 mentre le uscite 5,6,7,8 sono già collegate ai relè tramite la scheda.
Purtroppo non funziona nulla e quindi sicuramente ho sbagliato tantissime cose. Conosco poco della programmazione di Arduino quindi se qualcuno potesse aiutarmi gliene sarei riconoscente. Grazie.