ciao a tutti, io attualmente ho un codice che lavora autonomamente, ma ogni tanto ho bisogno di calibrare un valore , e per fare ciò ricarico un codice ad HOC su arduino per scoprire il nuovo valore, poi vado a modificarlo nel codice originale e lo ricarico.
ora vorrei che alla pressione di un tasto "entro in modalità modifica", quindi eseguo il codice ad HOC, una volta scoperto il valore, premendo un altro tasto (o lo stesso, ma questo lo vedrò in futuro), mi salva il valore nella variabile e torna al loop standard.
io ci sto provando a banco con un codice facile, ma non fà quello che voglio.
praticamente così come ho fatto, quando premo il tasto "tastomod" mi entra nel loop taratura, ma se premo nuovamente il tasto mi fà un ciclo nel loop standard e poi torna nell loop taratura.
come faccio ad uscire "bene" dal loop taratura?
alla fine dello stesso ho messo la riga "taratura();" in modo che mi rimanga sempre lì altrimenti dopo un giro mi usciva subito.
potete aiutarmi per favore?
grazie
#define ledgiri 3
#define ledfuori 2
#define startsonoff 5
#define tastomod 7
int girifatti = 0;
int girimax = 5;
void setup() {
pinMode(ledgiri, OUTPUT);
pinMode(ledfuori, OUTPUT);
pinMode(startsonoff, INPUT_PULLUP);
pinMode(tastomod, INPUT_PULLUP);
Serial.begin(9600); // inizializzo la comunicazione seriale
}
void loop() {
if ((digitalRead(startsonoff) == LOW))
{
for (int girifatti = 0; girifatti < girimax; girifatti++) {
digitalWrite(ledgiri, HIGH); //accensione led notifica
//girifatti++;
Serial.println(girifatti);
delay (700);
digitalWrite(ledgiri, LOW); //spegnimento led notifica
delay (700);
}
digitalWrite(ledfuori, HIGH); //accensione led notifica
delay (700);
girifatti == 0;
Serial.println("giri azzerati");
digitalWrite(ledfuori, LOW); //spegnimento led notifica
delay (700);
digitalWrite(ledfuori, HIGH); //accensione led notifica
delay (700);
digitalWrite(ledfuori, LOW); //spegnimento led notifica
delay (700);
}
if ((digitalRead(tastomod) == LOW)) {
Serial.println("vado in modifica");
delay (1000);
taratura();
}
digitalWrite(ledfuori, HIGH); //accensione led notifica
delay (100);
Serial.println("fuori");
digitalWrite(ledfuori, LOW); //spegnimento led notifica
delay (1000);
}
/////////////////////////////
void taratura() {
Serial.println("sono in modifica");
if ((digitalRead(startsonoff) == LOW)) {
girimax++;
Serial.println(girimax);
delay (500);
}
if ((digitalRead(tastomod) == LOW)) {
Serial.println("torno standard");
delay (500);
loop();
}
delay (500);
taratura();
}