Category: Programmazione

Arduino e fotoresistenza

Posted by – 27 aprile 2010

Eccomi di nuovo online! :D Stasera ci occuperemo di collegare una comunissima fotoresistenza ad Arduino e in base alla luce presente si accenderà un Led. Sembra difficile? Non lo è per niente.
Per realizzare tutto ciò, in primis, diamo un’ occhiata ai collegamenti fisici da fare tra i vari componenti. La fotoresistenza e una resistenza da 1kOhm vanno collegati in serie. Fatto questo colleghiamo al piedino lontano dalla resitenza della fotoresistenza (scusate ma sembra un gioco di parole-.-) la 5V di Arduino e dal lato della resistenza colleghiamo il GND. Dopodichè dove il piedino della fotoresistenza è collegato alla resistenza, esattamente lì, colleghiamo al pin digitale 1. Poi ovviamente collegate un Led al pin 13 di Arduino. Posto il pdf di uno schemino fatto da me. Magari si capisce meglio va. :D Schemino collegamenti

E adesso veniamo al codice che spiegherò subito dopo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int light;
int ledPin = 13;
int photoresistor = 1;
 
void setup()
{
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}
 
void loop()
{
  light = analogRead(photoresistor);
  light = constrain(light, 970, 1023); //<-- il 970 potete cambiarlo 
  light = map(light, 970, 1023, 0, 255); //in base alle vostre "condizioni"
  analogWrite(ledPin, light);
  Serial.println(light);
}

In pratica tutto questo funziona così. La fotoresistenza, dalla “lettura analogica”, prende un valore tra 0 e 1023. Giocando con la quantità luce di che c’ era in stanza ho realizzato che avrei voluto che il Led si accendesse a 970. La funzione constrain è utilizzata in modo tale che solo i valori tra 970 e 1023 vengano presi in considerazione. In pratica se sono presenti altri valori non compresi in quel range la funzione resitituisce 0. La funzione map è usata per mappare questo valore (che sceglierete voi) ad un valore di PWN (che va da 0 a 255) in modo tale da far accendere il Led.

Benissimo provateci anche voi e per ogni dubbio o osservazione o quello che vi pare non esitate a contattarmi. Vi lascio con un video dimostrativo di tutto ciò. :D Alla prossimaaaaaa :D

2 Shift Register! :)

Posted by – 21 aprile 2010

Ecco di seguito, foto e video, della versione con 2 shift register 74HC595 collegati ad Arduino :D

Se ve lo state chiedendo..si, stavo guardando i simpson :D

Arduino e Shift Register 74HC595

Posted by – 21 aprile 2010

Ecoomi di nuovo qui dopo un bel periodo di inattività!.. :D Eh si, ho avuto abbastanza da fare in questi ultimi due mesi e non sono riuscito a dedicare tanto tempo al blog..Tuttavia i progettini con Arduino continuavano ad esserci e alcuni sono riuscito a portarli a termine..
Quello che vi mostro oggi è un semplicissimo esempio su come usare lo shift register 74HC595 per usare solamente 3 pin dell’ Arduino per controllare 8 LED..Tutto ciò è scritto nel tutorial ufficiale di Arduino, precisamente qui. Non è per niente una cosa difficile da fare anche se ho avuto qualche problemino con i collegamenti :D .. Sottolineo il fatto che nel realizzare il circuito non ho usato un condensatore come scritto nel tutorial, ma alla fine funziona tutto benissimo. Un video in cui mostro lo shift e Arduino a lavoro lo trovate qui e alcune foto sono presenti nel mio album di Flickr.
Prometto di non abbandonare mai più così tanto il mio blog, quindi vi assicuro che ci rivedremo molto presto (spero :D , speriamo!).
Alla prossima!

Controllare Led dal Web con Arduino

Posted by – 8 marzo 2010

Prendendo spunto da qui sono riuscito a controllore 4 Led collegati ad Arduino dal web. :) In pratica lo sketch proposto da Instructables crea un web server sull’ Arduino e, con l’ aggiunta di qualche funzione di libreria (led.h, wstring.h ecc.), è in grado di controllare lo stato dei Led (on, off). Inoltre, genialata del creatore dello sketch :) , Arduino aggiorna lo stato del nostro Twitter in automatico ad ogni cambiamento di stato dei Led. :D Tutto quello di cui abbiamo bisogno è una Arduino, l’ Ethernet Shield (ovviamente!), un paio di Led e un router.
Tutto ciò fa capire che con qualche piccola modifica qua e là è possibile realizzare sketch in grado di controllare svariati oggetti, ad esempio servo motori, per creare progettini interessanti.

Si inizia con Arduino!(Quasi)

Posted by – 6 marzo 2010

In attesa del 10 di marzo, giorno in cui è fissato l’ orale di analisi matematica, ho deciso di dilettarmi giusto 5 minuti con Arduino! :)
Il risultato è un trio di LED lampeggianti prima in sequenza e poi emettendo una specie di flash. Ciò di cui mi sono servito è: 3 LED, 3 resistenze, l’ Arduino Duemilanove, un pò di C e ovviamente un attimo di pazienza. Ecco fatto. :D

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
int ledPin1 =  10;    // LED connected to digital pin 10
int ledPin2 =  11;    // LED connected to digital pin 11
int ledPin3 =  12;    // LED connected to digital pin 12
 
// The setup() method runs once, when the sketch starts
 
void setup()   {                
  // initialize the digital pin as an output:
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);  
  pinMode(ledPin3, OUTPUT);
}
 
// the loop() method runs over and over again,
// as long as the Arduino has power
 
void loop()                     
{
  digitalWrite(ledPin1, HIGH);   // set the LED on
  delay(1000);                   // wait for a second
  digitalWrite(ledPin1, LOW);    //set the LED off
  delay(100);                  
  digitalWrite(ledPin2, HIGH);
  delay(1000);                  
  digitalWrite(ledPin2, LOW);
  delay(100);
  digitalWrite(ledPin3, HIGH);    
  delay(1000);                  
  digitalWrite(ledPin3, LOW);
  delay(100);
 
  digitalWrite(ledPin1, HIGH);
  digitalWrite(ledPin2, HIGH);   
  digitalWrite(ledPin3, HIGH);   
  delay(100);
  digitalWrite(ledPin1, LOW);
  digitalWrite(ledPin2, LOW);
  digitalWrite(ledPin3, LOW);
  delay(100);
  digitalWrite(ledPin1, HIGH);
  digitalWrite(ledPin2, HIGH);   
  digitalWrite(ledPin3, HIGH);   
  delay(100);
  digitalWrite(ledPin1, LOW);
  digitalWrite(ledPin2, LOW);
  digitalWrite(ledPin3, LOW);
  delay(1000);
}

Questo che segue è il risultato filmato con la videocamera (scusate per la qualita ma è un cellulare :) ).


Switch to our mobile site