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

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.




lunedì 4 agosto 2014

Switch Case


 # define Sensore A0
   
   int ValoreSensore = 0;
   
   void setup() 
       { pinMode (Sensore,INPUT);
         Serial.begin(9600);}

   void loop(){
       
       ValoreSensore = analogRead(Sensore);
       
       ValoreSensore = map(ValoreSensore, 0, 1023, 0, 3);
       Serial.print("Lettura:   ");
       Serial.println(ValoreSensore);
      
       switch (ValoreSensore)
              { case 0:    
                Serial.println("Genova");
                break;
                case 1:   
                Serial.println("Palermo");
                break;
                case 2:    
                Serial.println("Venezia");
                break;
                case 3:    
                Serial.println("Napoli");
                break;                       } 

       delay(1000);
        }



Serial Read

/* 
Serial.flush();  svuota il buffer di ricezione seriale
Serial.available() >0) // buffer di ricezione > 0

*/
    #define LED 6  
   
    byte rx = 0;    
     
    void setup()
    	 { pinMode(LED, OUTPUT); 
           Serial.begin(9600);     	  
    	   Serial.flush(); }
     
    void loop() {
 
      if (Serial.available() >0) 
    	 { rx = Serial.read(); 
    	   Serial.flush(); 
           switch (rx) 
                {case 'a':    
                 digitalWrite(LED, HIGH);
                 break;
                 
                 case 'b':    
                 digitalWrite(LED, LOW);
                 break; }}
    	}

domenica 3 agosto 2014

Sensore analogico

Collegare un potenziometro da 47K fra +Vcc e GND.Il perno centrale su A0. Esso simulerà un qualunque sensore analogico.

 # define Sensore A0
   
   int ValoreSensore = 0;
   
   void setup() 
       { pinMode (Sensore,INPUT);
         Serial.begin(9600);}

   void loop(){
       
       ValoreSensore = analogRead(Sensore);
  
       Serial.print("Lettura:   ");
       Serial.println(ValoreSensore);
       
       delay(1000);
        }


map()
Il valore in ingresso varia da 0 a +5Vcc. Arduino lo elabora come un valore 0 -1023.
Con l'istruzione map questo valore viene rimappato avendo come limiti 20 e 200 (o altri valori. Quando la tensione in ingresso è zero la lettura sarà 20,quando è invece +5V sarà 200.

 # define Sensore A0
   
   int ValoreSensore = 0;
   
   void setup() 
       { pinMode (Sensore,INPUT);
         Serial.begin(9600);}

   void loop(){
       
       ValoreSensore = analogRead(Sensore);
       
       ValoreSensore = map(ValoreSensore, 0, 1023, 20, 200);
       Serial.print("Lettura:   ");
       Serial.println(ValoreSensore);
       
       delay(1000);
        }


lunedì 3 dicembre 2012

map()


Il valore di uscita variarà da 0 a 1023

   # define SENSORE A0
   
   int ValoreSensore = 0;
   
   void setup() 
       {Serial.begin(9600);}

   void loop(){
       ValoreSensore = analogRead(0);
       Serial.print("VALORE DEL SENSORE   ");
       Serial.println(ValoreSensore);
       delay(2000);
}


Sketch di confronto.
Il valore in uscita varia in un range che va da 20 a 200
   # define SENSORE A0
   
   int ValoreSensore = 0;
   
   void setup() 
       {Serial.begin(9600);}

   void loop(){
       ValoreSensore = analogRead(0);
       ValoreSensore = map(ValoreSensore, 0, 1023, 20, 200);
       analogWrite(9, ValoreSensore);
       Serial.print("VALORE DEL SENSORE   ");
       Serial.println(ValoreSensore);
       delay(2000);
}


Valore min e max impostabile da potenziometri esterni.
   # define Sensore A0
   # define PotMin A1
   # define PotMax A2
   
   int ValoreSensore = 0;
   int ValoreMin = 0;
   int ValoreMax = 00;
   
   void setup() 
       { pinMode (Sensore,INPUT);
         Serial.begin(9600);}

   void loop(){
       
       
       ValoreMin= analogRead(PotMin);
       ValoreMax= analogRead(PotMax);  
     
       ValoreSensore = analogRead(Sensore);
       
       ValoreSensore = map(ValoreSensore, 0, 1023, ValoreMin, ValoreMax);
       Serial.print("Lettura:   ");
       Serial.println(ValoreSensore);
       
       delay(1000);
        }

SwitchCase1

     
     # define SENSORE A0
    
     int       LetturaSensore =   0;
     int       Range          =   0;
     const int ValoreMinimo   =   0;      
     const int ValoreMassimo  = 600;    
        
    void setup() 
         {Serial.begin(9600);}

   void loop() {
  
       LetturaSensore = analogRead(SENSORE);
       Range = map(LetturaSensore, ValoreMinimo, ValoreMassimo, 0, 3);

      switch (Range) 
           {case 0:  
               Serial.print   ("LIVELLO BASSO     ");
               Serial.println (LetturaSensore);
               break;
            case 1:    
                Serial.print   ("LIVELLO MINIMO   ");
                Serial.println (LetturaSensore);
                break;
            case 2:    
                Serial.print   ("LIVELLO MASSIMO   ");
                Serial.println (LetturaSensore);
                break;
            case 3:    
                Serial.print   ("LIVELLO ALTO   ");
                Serial.println (LetturaSensore);
                break; } 
      delay(2000);  
}





giovedì 1 novembre 2012

IF ELSE 2




   # define PIN3   3     
   # define PIN4   4  
   # define PIN5   5     
   # define PIN6   6  
   # define PIN7   7  
   
   int valorePin3       = 0;
   int valorePin4       = 0;
   int valorePin5       = 0;
   int valorePin6       = 0;
   int valorePin7       = 0;
   
 void setup()  
   {pinMode(PIN3, INPUT);
    pinMode(PIN4, INPUT);
    pinMode(PIN5, INPUT);
    pinMode(PIN6, INPUT);
    pinMode(PIN7, INPUT);
    Serial.begin(9600)  ;} 
    
 void loop() {
    valorePin3  = digitalRead(PIN3);
if (valorePin3 == HIGH ) 
   {Serial.print("PIN3HIGH");
    Serial.println();
    delay (2000); 
    valorePin4  = digitalRead(PIN4);
  if (valorePin4 == HIGH )                
     {Serial.print("PIN4HIGH");
     Serial.println();
     delay (2000); 
     valorePin5  = digitalRead(PIN5);
    if (valorePin5 == HIGH )                
       {Serial.print("PIN5HIGH");
        Serial.println();
        delay (2000);   
        valorePin6  = digitalRead(PIN6);
          if   (valorePin6 == HIGH )                
               {Serial.print("PIN6HIGH");
                Serial.println();
                delay (2000); }}
          
          else {Serial.print("PIN5LOW"); 
                Serial.println();
                delay (2000);
                valorePin7  = digitalRead(PIN7);
              if   (valorePin7 == HIGH )                
                   {Serial.print("PIN7HIGH");
                    Serial.println(); }
              else {Serial.print("PIN7LOW");
                   Serial.println(); }}}}              
                   
else {Serial.print("PIN3LOW");
      Serial.println(); 
      delay (2000);  }     
    }  
   
   
   

IF ELSE 1


   # define PIN3   3     
   # define PIN4   4  

   int valorePin3       = 0;
   int valorePin4       = 0;

   
 void setup()  
   {pinMode(PIN3, INPUT);
    pinMode(PIN4, INPUT);
    Serial.begin(9600)  ;} 
    
 void loop() {
  valorePin3  = digitalRead(PIN3);

   if   (valorePin3 == HIGH )                
       { Serial.print("   PIN3HIGH   ");
          delay (5000);                 
          valorePin4  = digitalRead(PIN4); 
           if   (valorePin4 == HIGH )                
                { Serial.print("   PIN4HIGH   ");
                  delay (5000); }  
           else { Serial.print("   PIN4LOW   ");
                  delay (5000); }} 
 
   else { Serial.print("   PIN3LOW   ");
          delay (5000); }        
 }