Salve, sono nuovo del forum. Sono uno studente di 16anni di elettrotecnica. Da poco abbiamo iniziato lo studio di Arduino, ma vengo subito al dunque. Devo simulare un nastro trasportatore senza peraltro il motore. Premendo un pulsante P1 si attiva un relé e si accede un led1 che indica che il nastro si è avviato. Questo per 10s, tempo necessario per giungere al finecorsa. Trascorsi questo tempo si accende un altro LED per 3 secondi, il quale simula il conteggio del pezzo trasportato. Premendo poi il Pulsante P2 il nastro trasportatore si ferma. Il problema è banale, col PLC mi basterebbe usare un paio di pulsanti in serie, un normalmente aperto e l'altro normalmente chiuso, la bobina e i due led. Con Arduino riesco a fare la prima parte: Attivo il relè (con un transistor pilotato dall'uscita di Arduino) ed accendo il LED1 per 10.000ms. Dopo accendo l'altro LED2 per 3.000ms in modo da simulare il conteggio. Il problema, almeno per me, è P2, quello che dovrebbe spegnere tutto l'impianto (relè e LED1). Io ho provato a scrivere questo sketch, ma all'avvio LED1 mi lampeggia molto velocemente. Premo P1 si accende il LED1 (e scatta il relé), passano i 10s e si accende il LED2 per 3s e fin qui nessun problema se non che all'inizio, prima di premere S1 il LED1 lampeggia in modo molto veloce, quasi impercettibile. dopo essere trascorsi i 3s di accensione del secondo LED, indipendentemente che prema o meno S2 il LED1 si spegne ed il relé si diseccita. Dove sbaglio? Grazie a chi vorrà darmi un aiuto, che ammetto sarà banale ma che non riesco a capire...
int pinLed1=13; //assegna Led 1 al pin 13
int pinLed2=12; //assegna Led 2 al pin 12
int bottone1=2; //assegna S1 al pin 2
int bottone2=3; //assegna S2 al pin 3
int statoPulsante1=LOW;
int StatoPulsante2=HIGH;
void setup() {
pinMode(pinLed1, OUTPUT); //Led 1 come uscita
pinMode(pinLed2, OUTPUT); //Led 2 come uscita
pinMode(bottone1, INPUT); //S1 come ingresso
pinMode(bottone2, INPUT); //S2 come ingresso
}
void loop() {
int leggiBottone1=digitalRead(bottone1); //legge lo stato logico di S1
int leggiBottone2=digitalRead(bottone2); //Legge lo stato di S2
if (leggiBottone1 == 0)
statoPulsante1=LOW;
digitalWrite(pinLed1, LOW);
} else {
statoPulsante1=HIGH; // Se S1 chiuso pone alto il Led1
digitalWrite(pinLed1, HIGH);
delay(10000); //Accende il Led1 per 10s (simula trasporto)
digitalWrite(pinLed2, HIGH);
delay (3000); //Accende il Led2 per 3s (simula conteggio)
digitalWrite(pinLed2, LOW); //Spegne Led2 (conteggio avvenuto)
}
if (leggiBottone2 == 1)
statoPulsante2=HIGH;
digitalWrite(pinLed1, LOW); //Se S2 è chiuso, spegne Led1
} else {
statoPulsante=LOW;
digitalWrite(pinLed1, HIGH); //Altrimenti ripete il loop in attesa che S1 venga chiuso
}
}