
LEZIONE n° 4 – URTI e LUCI
La lezione è sui sensori digitali ed analogici e la loro gestione.
Abbiamo 2 ingressi connessi a due interruttori e 3 uscite connesse a tre LED.
Quando schiacciamo il primo interruttore si accende il LED rosso, quando schiacciamo il secondo interruttore si accende il LED giallo, quando li schiacciamo insieme si accende il LED verde.
Per provare a fare le modifiche proposte copiare il listato (colorato in rosso) ed incollarlo in un editor di solo testo [Notepad ad esempio]
listato programma esempio numero 5:
// urti con led
int urtoSX=2;
int urtoDX=7;
int led_urtoSX=6;
int led_urtoDX=5;
int led_urtoCX=8;
int tempo_led;
int val_urtoSX;
int val_urtoDX;
void setup()
{
Serial.begin(9600);
pinMode (urtoSX,INPUT);
pinMode (urtoDX,INPUT);
pinMode (led_urtoSX,OUTPUT);
pinMode (led_urtoDX,OUTPUT);
pinMode (led_urtoCX,OUTPUT);
digitalWrite(led_urtoSX,LOW); // SPEGNI LED
digitalWrite(led_urtoDX,LOW); // SPEGNI LED
digitalWrite(led_urtoCX,LOW); // SPEGNI LED
delay(500);
}
void loop()
{
val_urtoSX=digitalRead(urtoSX);
val_urtoDX=digitalRead(urtoDX);
tempo_led=500;
if ((val_urtoSX==HIGH)&&(val_urtoDX==HIGH))
{
digitalWrite(led_urtoCX,HIGH); // ACCENDI LED
Serial.println(“Urto centro”);
delay(tempo_led);
digitalWrite(led_urtoCX,LOW); // SPEGNI LED
}
if ((val_urtoSX==HIGH)&&(val_urtoDX==LOW))
{
digitalWrite(led_urtoSX,HIGH); // ACCENDI LED
Serial.println(“Urto sinistro”);
delay(tempo_led);
digitalWrite(led_urtoSX,LOW); // SPEGNI LED
}
if ((val_urtoSX==LOW)&&(val_urtoDX==HIGH))
{
digitalWrite(led_urtoDX,HIGH); // ACCENDI LED
Serial.println(“Urto destro”);
delay(tempo_led);
digitalWrite(led_urtoDX,LOW); // SPEGNI LED
}
}
LE MODIFICHE PROPOSTE SONO:
CAMBIARE COLORE ai LED (via software)
invece di ACCENDERE il LED farlo LAMPEGIARE PER 3 VOLTE
Abbiamo 1 ingresso ANALOGICO di cui leggiamo il valore e stampiamo sul monitor il valore letto.
listato programma esempio numero 6:
/*
lettura sensore di luce
*/
int sensorPin = A4;
int sensorValue = 0; // variable to store the value coming from the sensor
int soglia = 500; //soglia
int TEMPO = 1000; //soglia
void setup()
{
Serial.begin(9600);
}
void loop()
{
// read the state of the pushbutton value:
sensorValue = analogRead(sensorPin);
// print the results to the serial monitor:
Serial.print(” sensor = ” );
Serial.print(sensorValue);
Serial.print(“\n “);
// Serial.println(outputValue);
delay(10);
delay(TEMPO);
}
LE MODIFICHE PROPOSTE SONO:
TROVARE LA SOGLIA DELLA LUCE A 20 cm DI DISTANZA
QUANDO SI TROVA LA LUCE ACCENDERE UN LED
di seguito le slide della lezione
(69)