per PaoloP è un int.
eccovi il codice, non è lungo e nemmeno difficile e comunque sia il problema è isolato, il resto non dovrebbe influenzare minimamente.
int elettroDx = 9;
int elettroSx = 10;
int pompaDx = 11;
int pompaSx = 12;
int sensore = 13;
int pulsante = 2;
volatile int contatore=0;
int x=0;
int nruote=0;
int Rsensore=0;
void setup ()
{
Serial.begin(9600);
pinMode(elettroDx, OUTPUT);
pinMode(elettroSx, OUTPUT);
pinMode(pompaDx, OUTPUT);
pinMode(pompaSx, OUTPUT);
pinMode(sensore, INPUT);
}
void loop()
{
if(true) //la condizione originale non era questa ma il problema sorge anche cosi
utilizzo();
}
void utilizzo()
{
contatore++;
delay(1); //delay necessario altrimenti succede quanto spiegato prima
if( contatore == 1000)
avviso();
lavaggio();
}
void lavaggio()
{
//apertura pompe
digitalWrite(pompaDx, HIGH);
digitalWrite(pompaSx, HIGH);
delay(1000); //indicativo per pressione
//chiusura pompe
digitalWrite(pompaDx, LOW);
digitalWrite(pompaSx, LOW);
//apertura valvole
digitalWrite(elettroDx, HIGH);
digitalWrite(elettroSx, HIGH);
do
{
delay(1000);
x++;
}
while((( x<=5 || input()==false)) && nruote<1);
x=0;
digitalWrite(elettroDx, LOW);
digitalWrite(elettroSx, LOW);
}
boolean input()
{
if( digitalRead(sensore)==HIGH && digitalRead(pulsante)==LOW && nruote==0 ) //attivato-->ruota && pulsante start premuto 0--> prima ruota
{
nruote++; //possibile delay per utenti riconglioniti
return true;
}
if( digitalRead(sensore)==HIGH && nruote==1 ) //attivato-->ruota && pulsante start premuto
{
nruote++;
return true;
}
return false;
}
void avviso(){
Serial.println("AIUTO");
}
grazie per l'aiuto