const int analogPin = 34; // Pin GPIO per leggere il segnale analogico
const int buzzerPin = 2; // Pin GPIO per il buzzer
const int ledPin = 4; // Pin GPIO per il LED
const float threshold = 50; // Soglia di variazione considerata come "fissa" per la resistenza (adatta in base al tuo circuito)
const unsigned long fixedTime = 4000; // Tempo in millisecondi (4 secondi)
int lastReading = 0;
unsigned long lastChangeTime = 0;
bool buzzerActive = false;
void setup() {
pinMode(analogPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(buzzerPin, LOW);
digitalWrite(ledPin, LOW);
Serial.begin(9600);
}
void loop() {
int analogValue = analogRead(analogPin);
if (abs(analogValue - lastReading) < threshold) {
if (!buzzerActive && (millis() - lastChangeTime >= fixedTime)) {
// Primo beep (1 secondo)
tone(buzzerPin, 500); // Attiva il buzzer a 1000 Hz (1 kHz) per 1 secondo
delay(1000);
digitalWrite(ledPin, HIGH); // Attiva il LED
buzzerActive = true;
Serial.println("Resistenza stabile da più di 4 secondi.");
}
} else {
lastChangeTime = millis();
noTone(buzzerPin); // Disattiva il buzzer
if (buzzerActive) {
digitalWrite(ledPin, LOW); // Disattiva il LED
buzzerActive = false;
}
}
lastReading = analogValue;
delay(100); // Delay minimo per evitare una lettura eccessiva
}