Salve a tutti, avrei bisogno di un codice che faccia eseguire il tempo impostato da un tasto (+1 minuto, -1 minuto) e che quando sia scaduto il tempo (es. 5 minuti) il codice si fermi, per poi magari farlo ripartire da un tasto.
In pratica ho 3 bottoni, uno per aumentare il tempo, uno per diminuire e uno per far riniziare il ciclo e che una volta impostato il tempo si accendino progressivamente 3 led, rosso all inizo poi giallo e poi verde quando è a fine, sarebbero le porte: rosso = 7, giallo = 8, verde = 7
inoltre vorrei che appunto il tempo sia impostato all'inizio, quindi nel setup se si può e dopodichè che parta il loop per quel tempo...non so se sono stato molto chiaro, ecco il codice (i tasti sono ancora da aggiungere nel codice e utilizzerei le porte analogiche come digitali, usando int x = 17, int z = 18, int y = 19, rispettivamente le porte A3 A4 e A5)
int DP = A0;
int DD = A2;
int verde = 13;
int rosso = 9;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
Serial.begin(9600);
pinMode(DP, INPUT);
pinMode(DD, INPUT);
pinMode(verde, OUTPUT);
pinMode(rosso, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
// read the input on analog pin 0:
int sensorValue = analogRead(DP);
int sensor2 = analogRead(DD);
if (sensorValue == 0 && sensor2 == 0) {
digitalWrite(rosso, HIGH);
digitalWrite(verde, LOW);
Serial.println("SPENTO");
lcd.setCursor(0,0);
lcd.print("OFF ");
}
else if (sensorValue > 0 && sensor2 < 10) {
Serial.println("ON: 5V");
lcd.setCursor(0,0);
lcd.print("ON: 5V");
digitalWrite(rosso, LOW);
digitalWrite(verde, HIGH);
}
else if (sensor2 >0) {
Serial.println("ON: 9V");
digitalWrite(rosso, LOW);
digitalWrite(verde, HIGH);
lcd.setCursor(0,0);
lcd.print("ON: 9V");
}
}