eridano bertini
Indicatore di direzione vento
Tutorials -
Lunedì 06 Dicembre 2010 15:08
Scritto da eridano bertini

Sfruttando alcune delle  innumerevoli proprietà di Arduino 2009 son riuscito a realizzare un semplice indicatore di direzione su 360 gradi, semplice ma nello stesso tempo funzionale e preciso.

Il circuito richiede soltanto due fotoresistenze collegate a due pin analogici di Arduino, che grazie ad un dischetto/matrice particolare rileva la posizione e la visualizza su un display  a cristalli liquidi (16,2).

Il CODICE

// IREZIONE VENTO CON DUE FOTORESISTENZE
/*La taratura puo essere effettuata nel modo seguente:
  Programmare l'ATMEGA 328 includendo la riga 
  //lcd.print(analogRead(FA);ed escludendo la riga //lcd.print(GRADI);
  quindi mettere in funzione il tutto
  poi posizionando l'indicatore tutto verso NORD legger il valore 
  minimo di FA  ed annotarlo.Posizionare l'indicatore tutto vrso SUD
  e leggere il valore max di FA ed annotarlo.
  Ora inserire questi due valori nella riga
  GRADI = map(analogRead(FA),minore,maggiore,0,180);
  al posto di minore e maggiore,quindi disabilitare la riga
  //lcd.print(analogRead(FA); e riprogrammare l'integrato.
  
*/

#include ;
LiquidCrystal lcd(2,3,4,5,6,7);   //ordine dei piedini collegati ad ARDUINO

#define FA 0            //piedino di collegamento fotoresistenza A       
#define FB 1            //piedino di collegamento fotoresistenza B     

int GRADI;    //variabile relativa al valore dei gradi letto 
int maggiore; //variabile che stabilisce la modalita del calcolo

void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
}
void loop()
{
GRADI = map(analogRead(FA),0,1023,0,180); //legge il valore e lo conserva convertendolo in 0°-180°
maggiore = map(analogRead(FB),0,1023,0,100); //legge il valore e lo conserva convertendolo in 0-100
    
if (maggiore <= 50){        //se la fotoresistenza B è illuminata per il 50% o meno
  GRADI = GRADI;            //il conteggio dei gradi è  GRADI=GRADI else GRADI = (180 - GRADI)+180
  
} else {
  
  GRADI = (180 - GRADI)+180;
}
       lcd.clear();         //ripulisce il display LCD
       lcd.setCursor(1,0);  //Posiziona il cursore sulla prima casella della prima riga
       lcd.print(" DIREZIONE VENTO ");
       lcd.setCursor(0,1); //sposta il cursore sulla seconda riga
       lcd.print("   ");
       //lcd.print(analogRead(FA); //per la taratura abilitare questa riga
       lcd.print(GRADI);           //per la taratura disabilitare questa riga
       lcd.print("  Gradi ");
                                  
 Serial.print("DIREZIONE del VENTO = ");    //stampa su Serial Monitor i valori
 Serial.print(GRADI);
 Serial.print(" Gradi ");
 Serial.print("     ");
 Serial.print(analogRead(FA));
 Serial.println( maggiore);      
 delay(1000);                                
}
 

Gioblu Robotics © 2010 - 2012 · Sitemap · privacy

gioscarab@gmail.com

Gioblu BOTServer è online dal 10 Aprile 2010 - 319.232 Visite - 1.027.175 Pagine visualizzate - 182.309 Visitatori unici - 536 utenti attivi