const int PIN_BUZZER = 8; unsigned long TempoInizio = 0; int range = 99; bool old = HIGH; bool puls = LOW; void setup() { Serial.begin(9600); pinMode(PIN_BUZZER, OUTPUT);// buzzer pinMode(12, INPUT_PULLUP); } void loop() { puls = digitalRead(12); //serve per eseguire il comando //solo 1 volta quando premo if (digitalRead(12) == LOW && old == HIGH) { TempoInizio = millis(); range = 0; old != puls; } switch (range) { case 0: { // your hand is on the sensor tone(PIN_BUZZER, 100); if ( millis() - TempoInizio > 500) { TempoInizio = millis(); range = 1; } } break; case 1: { // your hand is close to the sensor tone(PIN_BUZZER, 500); if ( millis() - TempoInizio > 500) { TempoInizio = millis(); range = 2; } } break; case 2: { tone(PIN_BUZZER, 800); if ( millis() - TempoInizio > 800) { TempoInizio = millis(); range = 3; } } break; case 3: { tone(PIN_BUZZER, 1700); if ( millis() - TempoInizio > 1700) { TempoInizio = 0; range = 4; } } break; case 4: { // your hand is nowhere near the sensor noTone(PIN_BUZZER); break; } } }