problema con lettura di un pulsante

\

Buongiorno e benvenuto sul forum, essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI ([u]spiegando bene quali conoscenze hai di elettronica e di programmazione[/u] ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Qui una serie di link utili, [u]NON[/u] necessariamente inerenti alla tua domanda: - serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - pinout delle varie schede by xxxPighi: Pinout - link [u]generali[/u] utili: Link Utili

Scusa, non avevo visto quella discussione, ho rimediato subito ;)

Il problema potrebbe essere che il lettore rfid rimane attivato alla ricerca del tag da leggere e non fa proseguire il programma? esiste un modo per farlo funzionare a intervalli o qualcosa del genere?

  1. apri con l'IDE il tuo programma e poi Tools -> Auto format ... almeno mette a posto la formattazione, che così non si può leggere

  2. ovvio che se resti in attesa che ci sia una lettura dal RFID ... non fai altro ... ::) Se quindi è così (... non ho verificato), allora è il programma che è strutturato male ... NON devi mai creare condizioni bloccanti nel loop() !

Guglielmo

grazie per avermi risposto, ma se il programma non resta in attesa della lettura del rfid come fa a sapere quando ci passo un tag davanti?
Devo farlo funzionare a intervalli?

... ci sono delle cose poco chiare ... ::)

Cominciamo da queste ... sei nel loop() [u]che gira in continuazione dall'inizio alla fine[/u] ... ... mi spieghi allora dove pensi che queste due "return" ti portino ? ? ? :o ... return da che ? NON sei mica in una tua funzione che qualcuno ha chiamato ...

     if ( ! mfrc522.PICC_IsNewCardPresent())
     {
       return;
     }
     if ( ! mfrc522.PICC_ReadCardSerial())
     {
       return;
     }

Guglielmo

Soprattutto, non è un pc... Concettualmente, ma proprio "tirato per i capelli", il programma non "finirà" mai. Quindi dimentichiamoci la programmazione in c che si fa sui pc.

un pulsante che mi attivi il RFID quando lo premo per un tempo deciso da me, magari utilizzando "millis" potrebbe funzionare?

NO, devi entrare in un altra logica ... ... sei in un [u]ciclo infinito[/u] e devi in continuazione "interrogare" le varie cose che hai collegato, senza mai fermarti, e vedere se hanno qualche cosa da fornirti. In pratica fai un "polling" continuo delle tue varie periferiche.

Guglielmo

P.S.: Per periferiche con tempi "critici" (es. uno STOP di "emergenza") si usano invece gli "interrupts" ... ma per il momento dimentica questa possibilità.

Perchè questa parte di codice continua a funzionare :

{
  if(disponibile == 0){
  lcd.setCursor(0, 0);
  lcd.print("Parcheggio Pieno");
} else {
    lcd.setCursor(0, 0);
    lcd.print("Posti liberi : ");
    lcd.print(disponibile);
   
    
    }

Ma provando a mettere :

if (digitalRead(uscita) == 0)
      {
        if (disponibile != capacita) {
          disponibile++;;
          myservo.write(servoSU);;
          delay(3000);
          myservo.write(servoGIU);
        }
      }

prima della parte del codice dell'RFID, continua a non funzionare?