Visualizzazione post con etichetta Digitale. Mostra tutti i post
Visualizzazione post con etichetta Digitale. Mostra tutti i post

sabato 10 gennaio 2015

Senso di rotazione.



     /* Due fotointerruttori a forcella affiancati.
        Il fascio di luce viene interrotto da un disco rotante.
        Il senso di rotazione viene stabilito in
        funzione di quale fotodiodo viene illuminato
        per primo.
     */     
      int canaleA=6;
      int canaleB=9;
      int contatore=0;
      boolean avanti;
      boolean indietro;
      boolean memoriaA;
      boolean memoriaB;
      boolean direzione;
       
      void setup()
          { Serial.begin(9600);
            pinMode(6,INPUT);
            pinMode(9,INPUT); }
      
      void loop() {
      
      canaleA=digitalRead(6);
      canaleB=digitalRead(9);
      Serial.print(contatore);
      Serial.print("  Avanti ");
      Serial.print(avanti);
      Serial.print("  indietro ");
      Serial.println(indietro);
                
      if ( canaleB==1 && canaleA==1)
         { direzione=1;
           memoriaA=0;
           memoriaB=0;             }
  
      if ( canaleA==0 && direzione==1)
         { indietro=1;
           avanti=0;
           direzione=0;              }
    
      if ( canaleB==0 && direzione==1)
         { avanti=1;
           indietro=0;
           direzione=0;              }
              
     if ( canaleB==0 && avanti==1 && memoriaA==0)
        { contatore=contatore+1;
          memoriaA=1;                           }
   
     if ( canaleA==0 && indietro==1 && memoriaB==0)
        { contatore=contatore-1;
          memoriaB=1;                             }
       
     
    }//---------FINE LOOP--------------
       

venerdì 21 novembre 2014

ARDUINO ridotto all'essenziale.





Programmate un chip ATMEGA328 fornito di bootlader con una scheda Arduino.
Rimuovete dallo zoccolo di Arduino ed inseritolo nello zoccolo saldato su una piastra millefori.
Aggiunete i due condensatori ed il quarzo.


Sulla stessa base millefori costruite uno o più stadi di uscita a relè.





Ed uno o più stadi di ingresso.Attenzione che lo stato è invertito: quando il diodo led riceve corrente il pin di ingresso di Arduino è LOW.
Un'ingresso analogico sul fotoaccoppiatore non va bene perchè 1,5V servono al diodo per cui la tensione in ingresso su Arduino andrebbe da circa 2V.




venerdì 2 novembre 2012

Elaborazione di un segnale digitale 2a

La condizione logica del pin 2 viene acquisita ed elaborata tramite la condizione IF

    
      # define Sensore 2
      # define LED     7
      
      int StatoSensore= 0;
      
      void setup() 
          { pinMode (Sensore, INPUT); 
            pinMode (LED, OUTPUT);  
            digitalWrite(Sensore, HIGH);
            digitalWrite(LED, LOW); 
            Serial.begin (9600);  }
            
      void loop() {
       
           StatoSensore = digitalRead (Sensore);
           Serial.println("\n");
           if (StatoSensore == LOW) 
              { digitalWrite(LED, HIGH); 
                Serial.print ("Attenzione Ostacolo ");} 
           
           else 
              {digitalWrite(LED, LOW);
               Serial.print ("Nessun Ostacolo ");}
                  
           delay (500); 
      }

Elaborazione di un segnale digitale 1a



Gli shield che elaborano segnali digitali hanno 3 piedini: +5V; OUT;GND.
L'uscita OUT può essere HIGH (+5V) o LOW (0V) invertendo tale valore quando viene acquisita l'informazione: un ostacolo, la presenza di calore umano,un rumore...
Lo scketch è sostanzialemnte uguale per tutti e non prevede alcuna libreria.