lunedì 3 dicembre 2012

Cancello Scorrevole


/* CANCELLO AUTOMATICO.
 - Pulsante APRI N.A = Premuto +5vCC
 - Fotocellula N.A = attiva +5Vcc 
 - FineCorsaApertura N.A = attivo +5Vcc
 - FineCorsaChiusura N.A = attivo +5Vcc

*/
   # define TASTOA       2 
   # define TASTOK       3  
   # define FINECC       4
   # define FINECA       5
   # define FOTOC        6 
   # define MOTOREA     11 
   # define MOTOREK     12 
    
   int valoreTastoA       = 0;
   int valoreTastoK       = 0;
   int valoreFINECC       = 0;
   int valoreFINECA       = 0; 
   int valoreFOTOC        = 0;

 void setup()  
   {pinMode(TASTOA,       INPUT); 
    pinMode(TASTOK,       INPUT);
    pinMode(FINECC,       INPUT);
    pinMode(FINECA,       INPUT);
    pinMode(FOTOC,        INPUT);
    pinMode(MOTOREA,      OUTPUT);
    pinMode(MOTOREK,      OUTPUT);} 
 
 void loop() {
//********** TASTO APRI  ****************** 
      
   valoreTastoA  = digitalRead(TASTOA);
   if (valoreTastoA == HIGH )               //-- Tasto Apri ON
      {digitalWrite(MOTOREK,  LOW);         //--- Motore Chiudi OFF
       digitalWrite(MOTOREA, HIGH);}        //--- Motore Apri ON
              
   valoreFOTOC   = digitalRead(FOTOC);
   if (valoreFOTOC == HIGH)                 //---Se Fotocellula attiva
      {{digitalWrite(MOTOREA, LOW);         //--- Motore Apri OFF
        digitalWrite(MOTOREK,LOW);          //--- Motore Chiudi OFF
        delay (3000);}                      //--- Attendi  
        valoreFOTOC   = digitalRead(FOTOC); //--- Leggi valore Fotocellula
          if (valoreFOTOC == LOW)           //--- Se Fotocellula OFF                        
             {digitalWrite(MOTOREA, HIGH);}}//--- Motore APRI ON riparte
  
   valoreFINECA  = digitalRead(FINECA); 
   if (valoreFINECA == HIGH)                //--- FineCorsa APRI ATTIVO   
       {digitalWrite(MOTOREA, LOW);         //--- Motore Apri OFF
        delay (1000);                       //--- Attesa tempo aperto
        digitalWrite(MOTOREK, HIGH);}       //--- Motore Chiudi ON
   
   valoreFINECC  = digitalRead(FINECC);     
   if (valoreFINECC == HIGH)                //--- FineCorsa CHIUSURA ATTIVO     
      {digitalWrite(MOTOREK, LOW);
       digitalWrite(MOTOREA, LOW); }        //--- Motore Chiudi OFF   
                  
   valoreTastoK  = digitalRead(TASTOK);     
   if (valoreTastoK == HIGH )               //-- Tasto Chiudi ATTIVO   
       {digitalWrite(MOTOREA, LOW);         //--- Motore Apri OFF
        digitalWrite(MOTOREK, LOW);}        //--- Motore Chiudi OFF     
        
 }

Nota:Premere e tenere premuto il pulsante APR fino ache il finecorsa di chiusura non passa da HIGH a LOW.



8 commenti:

  1. Risposte
    1. adesso funziona deve essere aggiustato

      Elimina
  2. L'ho testato a tavolino e funziona(va)
    http://arduinomicro.blogspot.it/2012/11/laboratorio-digitale.html

    RispondiElimina
  3. Ho provato a caricare il tutto ma non funziona ....

    RispondiElimina
  4. Cosa intendi dire" tenere premuto il tasto apre fino al raggiungimento del fine corsa chiusura cambia stato?? forse è l' il mio errore ??

    RispondiElimina
    Risposte
    1. Non me lo ricordo. Ho smanettao un pò con Arduino poi mi è passata la voglia. Usa lo schema di flusso come punto di riferimento ma sostituisci il delay con la funzione millis().Ciao e buone feste.

      Elimina
    2. Non funziona ma ch cavolo postate a fare ste scemenze?

      Elimina
  5. Ciao
    Volevo sapere se questo progetto è funzionante e se si può avere lo schema di collegamento
    Grazie

    RispondiElimina