Difficoltà nel completare la scrittura del programma di una sbarra che si alza

#include <Servo.h>

Servo myservo;  // creo l'oggetto per controllare il servo


int pos =0;

const int buttonPin = 12; //pin bottone
int buttonState = 0; //variabile per leggere lo stato del bottone

void setup() {
  myservo.attach(5);  // servo pin. 9 
  

  pinMode(buttonPin, INPUT);
  }

void loop() {
ì
 
  buttonState = digitalRead(buttonPin);  //leggo lo stato del bottone
  
 
 
    if(buttonState == HIGH){      
      myservo.write(90); 
   for (pos = 90; pos >= 0; pos -= 1) {   
      myservo.write(pos);                 
      delay(15);                          
     }                      
    
 
    delay(100);                       

    for (pos = 90; pos >= 0; pos -= 1) {    // va da 90 a 0 gradi
      
      myservo.write(pos);             
      delay(15);                          
    } 
 }
 }

Salve a tutti, sono in difficoltà nel terminare il codice con la funzione che vorrei aggiungere.
Questo programma prevede che premendo il pulsante la sbarra si alzi e passati alcuni secondi si riabbassi alla posizione iniziale.

Al posto dellla classica fotocellula che attivandosi rialza la sbarra io vorrei che mentre la sbarra si sta abbassando se spingo lo stesso pulsante la sbarra torna a rialzarsi fino alla posizione di 90 gradi. Ho provato a scrivere questa parte di programma, ma mi entra in conflitto con l'altra.

Grzie se potete aiutarmi spero di essere stato chiaro.

Ti consiglio una piccola macchina stati finiti basata su il comando strutturato switch case del C++.
In effetti nel il link seguente trovi appunto una barra di accesso.

Però ti consiglio anche di usare la libreria JC_Button:

Per la gestione dei rimbalzi del contatti elettrici, di cui sono afflitti anche i pulsanti tattili.

Nello stesso sito c'è un esempio di come usare la JC_Button:

Si vedo, il problema è il delay, al suo posto usa la funzione millis(), la quale restituisce il valore di un contatore interno che viene incrementato ogni 1 millesimi di secondo.

Ciao.

Grazie mille sto cercando di risolvere usando l'operatore che mi hai consigliato. Unica cosa nell'esempio che mi riporti l'azionamento della sbarra e il pulsanze che rialza la sbarra dono distinti. Io vorrei usare un unico pulsante. Cambia nulla nel caso?

Non è chiaro. Esempio di JC_Button?
Oppure ti riferisci al link "Applicazione accesso a parcheggio", in quest'ultimo caso i pulsanti sono due,
quello verde simula la coppia di fotocellule, mentre il pulsante play sul telecomando alza la barra.
Intanto potresti postare il codice su cui stai lavorando, così domani guardo meglio come usi la JC_Button
e visto che non ti serve fotocellula provo a sistemarti il codice, con un solo pulsante.

Ciao.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.