Arduino Esercizio N°2

Realizzare un circuito che abbia come input analogico una fotoresistenza ed un output analogico costituito da un led luminoso.

L’intensità della luminosità del led deve poter essere regolata dalla fotoresistenza.
La luminosità del led deve essere inversamente proporzionale alla luminosità presente nell’ambiente.
Possiamo impostare un circuito come quello qui schematizzato.

 

  • LED collegato tra il pin 9 e la massa.
  • Resistenza da 220 Ω collegata tra il LED e la massa.
  • Fotoresistenza alimentata a 5V collegata all’ingresso analogico A0.
  • Resistenza da 4.7 kΩ collegata tra la foto resistenza e la massa..

Il pin analogico A0 legge i valori della fotoresistenza, tenendo conto che 0 → ambiente buio 1023 → ambiente completamente illuminato

Questi valori devono essere convertiti in un range 0÷255, ma al contrario; quindi noi useremo la funzione di conversione map proprio al contrario

lux = map(trimmer, 26, 923, 255, 0);

questo permette di avere il massimo della luminosità del LED quando nell’ambiente è buio, mentre quando la luminosità dell’ambiente sarà al suo massimo il LED sarà completamente spento. Per regolare la l’illuminazione dell’ambiente nel simulatore bisogna cliccare sulla foto resistenza e regolare il cursore che appare sotto di essa.

 

Il programma stampa sul monitor seriale anche i valori dell’ingresso analogico A0 della variabile trimmer e dell’uscità costituita dall’intensità luminosa del LED tramite la varibile lux.

int trimmer = 0;
int lux = 0;
void setup(){
   pinMode(A0, INPUT);
pinMode(9, OUTPUT);
Serial.begin(9600);
}
void loop(){
   // legge il valore analogico in ingresso
trimmer = analogRead(A0);
   // lo converte in un output analogico di uscita
lux = map(trimmer, 26, 923, 255, 0);
   //applica il valore di uscita al led
analogWrite(9, lux);

Serial.print(trimmer);Serial.print(“ – “);
Serial.println(lux);
   //aspetta 2 millisecondi prima del ciclo successivo per
   //permettere il convertitore analogico-digitale di
  //reimpostarsi dopo l’ultima lettura: delay(2);

//pausa 2ms

}

All’avvio il valore della luminosità dell’ambiente è 0 dunque il LED dovrebbe trovarsi al massimo della sua luminosità.

 

Arduino Esercizio N°3

Costruire un circuito dotato di un input analogico costituito da un potenziometro ed un output digitale, costituito da tre led luminosi (verde, giallo, rosso) che si accendono alternativamente a secondo del valore dell’input analogico.

Collegheremo i LED ed il potenziometro nel seguente modo:

  • 3 LED collegato tra ai pin 13, 11 e 9.
  • 3 resistenze da 220 Ω da collegare tra i LED e i pin.
  • Potenziometro collegato all’ingresso analogico A0.

L’ingresso analogico può variare tra 0÷1023.
Il valore acquisito dall’ingresso A0 viene memorizzato nella variabile val. Stabiliamo (arbitrariamente) che se:

val≥682 si accende solo il LED rosso collegato al pin 13

341≤val<682 si accende solo il LED giallo collegato al pin 11

val<341 si accende solo il LED verde collegato al pin 9

il codice del programma: è il seguente:

int val = 0;
void setup() {
  pinMode(A0, INPUT);
pinMode(13, OUTPUT);
pinMode(11, OUTPUT);
pinMode(9, OUTPUT);
Serial.begin(9600);
}
void loop() {
   //legge il valore analogico in ingresso:
val = analogRead(A0);
if(val>=682){
digitalWrite(13,HIGH); digitalWrite(11,LOW); digitalWrite(9,LOW);
}else if(val>=341 && val<682){
digitalWrite(13,LOW); digitalWrite(11,HIGH); 
digitalWrite(9,LOW);
}else{
digitalWrite(13,LOW); digitalWrite(11,LOW); digitalWrite(9,HIGH);
}//fine if-else-if
Serial.println(val); delay(2);
}

Il valore della variabile analogica acquisita è inviato al monitor seriale.

Arduino Esercizio N°4

Tramite l’utilizzo di un potenziometro e della scheda Arduino pilotare la velocità di un motore a corrente continua.

Per far funzionare il motore occorre solo un potenziometro, collegando i due alla scheda come segue:

  • Motore DC collegato al pin 5.
  • Potenziometro collegato all’ingresso analogico A0.

L’ingresso analogico A0 può variare tra 0÷1023.
L’uscita digitale del pin 5 può variare solo tra 0÷255; occorrerà la funzione.

map(valore, basso1,alto1,basso2,alto2)

per convertire proporzionalmente i valori; il codice è semplice e breve. 

int x= 0;
int y = 0;
void setup(){
pinMode(5, OUTPUT);
}
void loop(){
x= analogRead(A0);
y = map(x, 0, 1023, 0, 255);
analogWrite(5, y);
}

La variabile x memorizza l’ingresso analogico 0÷1023.
La variabile y memorizza l’uscita digitale 0÷255.

Una volta assemblato, il circuito, potrebbe avere il comportamento seguente.