Buongiorno a tutti sono nuovo del forum e sto cercando un piccolo aiutino, ho cercato un pò dappertutto ma forse non so nemmeno cercare quelo che mi serve, mi spiego subito.
Sto provando a fare un piccolo programmino per simulare una protezione che tenga disabilitate tutte le uscite di arduino in sua assenza e nel caso sia tutto regolare e questa viene a mancare deve disabilitare e portare tutto allo stato iniziale e far suonare un buzz.
questo è il codice che ho fatto
int LED = 2; // Pin del LED
int BUTTON = 7; // Pin del il pulsante
int CONTROLLO = 8; // Pin di input per il controllo/protezione
int BUZZ = 6; // Pin del BUZZER
int val = 0;
int cnt = 0;
int old_val = 0;
int state = 0;
void setup(){
pinMode(LED, OUTPUT); // segnala ad Arduino che LED è un output
pinMode(BUTTON, INPUT); // BUTTON è un input
pinMode(CONTROLLO, INPUT); // CONTROLLO è input
pinMode(BUZZ, OUTPUT); // BUZZ è output
}
void loop(){
cnt = digitalRead(CONTROLLO); //legge lo stato del controllo
//Se la protezione è valida allora vai avanti
if (cnt == HIGH) {
val = digitalRead(BUTTON); //legge il valore dell'input e lo conserva
//Verifica che l'input sia HIGH(pulsante premuto) e ne cambia lo stato
if ((val == HIGH) && (old_val == LOW)) {
state = 1 - state;
delay(10);
}
old_val = val; // Memorizza il valore precedente di val
if (state == 1){
digitalWrite(LED, HIGH); // Accende il LED
} else {
digitalWrite(LED, LOW); // Spegne il LED
}
} else { //Se la protezione non è valida ferma la macchina e fai suonare il buzz
val = old_val = LOW;
digitalWrite(LED, LOW); // Spegne il LED
buzz(6, 4186, 100);
delay(10);
}
}
void buzz(int targetPin, long frequency, long length) {
long delayValue = 1000000/frequency/2;
long numCycles = frequency * length / 1000;
for (long i=0; i < numCycles; i++)
{
digitalWrite(targetPin,HIGH);
delayMicroseconds(delayValue);
digitalWrite(targetPin,LOW);
delayMicroseconds(delayValue);
}
}
Procedura di prova
Abilito la protezione
pigio il pulsante
Accendo il LED
disabilito la protezione
il led si spegne e suona il buzz
riabilito la protezione
?????ed il led è di nuovo acceso senza pigiare il tastino????
Cosa potrei fare per far cadere tutte le uscite di Arduino alla disabilitazione della protezione?
Grazie a tutti in anticipo