Pulsante di "Reset" come replicarlo sulla breadboard

ciao a tutti !

qualcuno sa dirmi qual è il comando per creare un pulsante di reset ?
ovvero che quando finisce il void loop, premendolo riparta il ciclo ?

Ho fatto un timer, alla fine del void loop ho messo questo comando: while(1){}
quindi una volta finito il ciclo, si ferma tutto ....

Anziché premere il tasto sull'arduino c'è un modo per portare il tasto reset sulla breadboard ?

Grazie !

Basta mettere un pulsantino collegato a massa ed al pin "reset" che c'è sull'Arduino. Non serve una resistenza dato che c'è già sull'Arduino.

Grazie 1000, me ne ero accorto 30 secondi fa !!! :stuck_out_tongue: :stuck_out_tongue: :stuck_out_tongue: :stuck_out_tongue: :stuck_out_tongue:

Grazie ancora

Ciao anerDev

Non é un buon stile di programmazioone di "parcheggiare" il controller in un loop infinito e tirarlo fuori con un reset.

Puoi nello stesso modo mettere il cosdice che devi eseguire in una if nel loop() che controlla se hai schiacciato un tasto. Il vantaggio é ch l' arduino risponde molto piú velocemente al pulsante che il Reset.

Ciao Uwe

Non ho capito bene quello che intendi, ancora sono molto scarso !
Comunque ti posto il sorgente, e magari mi spieghi cosa devo modificare ...

const int buttonPin = 6;     // Pin del pulsante
int buttonState = 0;         // Variabile pulsante

void setup() {
  pinMode(8, OUTPUT); // LED 
  pinMode(9, OUTPUT); // LED
  pinMode(10, OUTPUT); // LED
  pinMode(buttonPin, INPUT); // Pulsante
}

void loop(){
  buttonState = digitalRead(buttonPin); // Legge il valore del pulsante

  if (buttonState == LOW) { // Se il pulsante da valore basso, non premuto    
    digitalWrite(8, LOW); // LED Spento
    digitalWrite(9, LOW); // LED Spento
    digitalWrite(10, LOW); // LED Spento
  } 
  else { // Se il pulsante da valore alto, premuto
    noTone(11);
    tone(7, 400, 1000); // Indicare pin buzer (7), tonalità (400), tempo (1000)
    digitalWrite(10, HIGH); // Accendi LED
    delay(30000); // LED acceso per 30 secondi
    digitalWrite(10,LOW); // Si spegne il LED
    
    noTone(11); 
    tone(7, 400, 1000); // Indicare pin buzer (7), tonalità (400), tempo (1000)
    digitalWrite(9, HIGH); // Accendi LED
    delay(29000); // LED acceso per 29 secondi
    digitalWrite(9, LOW); // Si spegne il LED
    
    noTone(11); 
    tone(7, 400, 1000); // Indicare pin buzer (7), tonalità (400), tempo (1000)
    digitalWrite(8, HIGH);  // Accendi LED
    delay(1000); // LED acceso per 1 secondo
    
    while(1){}
  }
}

Dovrebbe funzionare; non dimenticare la resistenza da pulsante e massa.
Ciao Uwe

Funziona alla perfezione, solo che se vedi alla fine ho dovuto mettere il comando while per bloccare il loop ...
Ora il tasto reset mi serviva semplicemente per far ripartire il loop quando mi serviva !
Però non ho capito cosa intendi dire tu nella risposta sopra ...

Il led 8 resta acceso per l# infinito non per 1 secondo.

al posto di
"while(1){}"
metti una variabile a 1 per esempio
"restartstatus = 0;"
poi dicciamo che hai messo un pulsante sul piedino 2 che mette l'entrata a H quando viene premuto.

come prima funzione nel
"loop(){"
controlli se il pulsante di restart é premuto e metti la variabile restartstatus su 1.
poi metti if(restartstatus ==1)
{
qua metti tutto il codice del Loop()

}

È fatta.

const int buttonPin = 6;     // Pin del pulsante
const int restart =2;                   // pulsante per  fare ripartire il codice
int buttonState = 0;                   // Variabile pulsante
int restartstatus =1;       

void setup() {
  pinMode(8, OUTPUT); // LED 
  pinMode(9, OUTPUT); // LED
  pinMode(10, OUTPUT); // LED
  pinMode(buttonPin, INPUT); // Pulsante
  pinMode(restart, INPUT); // Pulsante

}

void loop(){
  if (digitalRead(restart)==1)
   {
   restartstatus =1;
   }
  buttonState = digitalRead(buttonPin); // Legge il valore del pulsante

  if (restartstatus==1)
  {
  if (buttonState == LOW) { // Se il pulsante da valore basso, non premuto    
    digitalWrite(8, LOW); // LED Spento
    digitalWrite(9, LOW); // LED Spento
    digitalWrite(10, LOW); // LED Spento
  } 
  else { // Se il pulsante da valore alto, premuto
    noTone(11);
    tone(7, 400, 1000); // Indicare pin buzer (7), tonalità (400), tempo (1000)
    digitalWrite(10, HIGH); // Accendi LED
    delay(30000); // LED acceso per 30 secondi
    digitalWrite(10,LOW); // Si spegne il LED
    
    noTone(11); 
    tone(7, 400, 1000); // Indicare pin buzer (7), tonalità (400), tempo (1000)
    digitalWrite(9, HIGH); // Accendi LED
    delay(29000); // LED acceso per 29 secondi
    digitalWrite(9, LOW); // Si spegne il LED
    
    noTone(11); 
    tone(7, 400, 1000); // Indicare pin buzer (7), tonalità (400), tempo (1000)
    digitalWrite(8, HIGH);  // Accendi LED
    delay(1000); // LED acceso per 1 secondo
    
    restartstatus = 0;
  }
}
}

Ciao Uwe

uwefed:
Dovrebbe funzionare; non dimenticare la resistenza da pulsante e massa.
Ciao Uwe

Non dovrebbe servire, dato che l'Arduino ce l'ha integrata ed il pulsante di reset collegato al pin di reset è un "rimando" e basta.

Grazie !!

@leo72
anerDev scrive:

if (buttonState == LOW) { // Se il pulsante da valore basso, non premuto

percui deduco a pulsante non premuto livello LOW percui non puó essere usato la resistenza pullup interna. Oltre questo il codice non la attiva.
Ciao Uwe

Hai ragione tu. Si parlava di pulsante di reset ed io davo per scontato che lo collegasse direttamente al pin di reset, non avevo neanche guardato con attenzione il codice. Invece no, usa un pin generico per cui è sicuramente necessaria.

Raga grazie mille !!! Funziona alla perfezione ! Sapete aiutarmi in questo http://arduino.cc/forum/index.php/topic,52733.0.html ????