Il blog di Nicola Amatucci

La mia finestra sul mondo…

Arduino (3) – Accendiamo e spegnamo la luce

con un commento

Nell’ultimo articolo abbiamo descritto come far lampeggiare un led, utilizzando la scheda Arduino come un “costoso interruttore”. Adesso proviamo ad aggiungere un interruttore per accendere e spegnere il led. Per realizzare un interruttore basta tagliare il filo che chiude un circuito: quando i fili sono separati, la corrente non passa; quando i fili sono messi in contatto, il circuito si chiude, la corrente passa e circola nel circuito. Ci sono interruttori in svariate forme, noi utilizzaremo l’interruttore incluso nel kit:

a3_interruttore

Con un interruttore possiamo realizzare un input digitale, ovvero sul PIN in ingresso possiamo leggere un valore logico basso oppure alto, a seconda dello stato dell’interruttore. Come si può immaginare, quando l’interruttore è aperto, ovvero non c’è una connessione, si leggerà il valore logico basso; quando l’interruttore viene chiuso, si leggerà il valore logico alto.

a3_interruttore_schema

Lo schema qui riportato è quello da applicare al PIN dal quale verrà letto il valore logico, e il resistore inserito nel circuito, serve a portare al valore logico basso l’ingresso quando l’interruttore è aperto, evitando di avere valori flottanti. Il PIN dovrà essere settato come INPUT, mediante pinMode(), e la lettura deve avvenire con digitalRead(), poichè siamo in presenza di un input digitale. Mentre l’interruttore rimane chiuso, l’uscita su cui è collegato il led deve diventare alta.

Il circuito sarà costituito da due parti: la parte relativa al led, facilmente riproducibile; la parte relativa al pulsante, dove bisogna andare a replicare lo schema della precedente figura.

a3_circuito

L’interruttore ha due piedini sempre connessi e altri due da connettere mediante la pressione del pulsante. Come si vede uno di questi ultimi è collegato all’alimentazione e l’altro è collegato a terra tramite il resistore. Tra il resistore e l’interruttore viene collegato il PIN2, ovvero quello da cui il nostro microcontrollore andrà a leggere l’ingresso digitale.

a3_foto

Lo sketch per questo esperimento è il seguente:

int led_pin = 8;
int btn_pin = 2;

void setup() {
	pinMode(led_pin, OUTPUT);
	pinMode(btn_pin, INPUT);
}

void loop()
{
	int in = digitalRead(btn_pin);
	if (in == LOW)
	{
		digitalWrite(led_pin, LOW);
	}
	else
	{
		digitalWrite(led_pin, HIGH);
	}
}

In questo sketch incontriamo il costrutto decisionale if … else … il quale permette di scegliere tra due o più alternative (mediante “else if“), a seconda se è verificata o meno la condizione logica espressa tra parentesi. Se l’input letto è alto, spegne il led, altrimenti se è alto (l’unica altra alternativa), accende il led, proprio come fatto nel precedente articolo. Alla luce di quanto detto: cosa fa il seguente sketch?

int led_pin = 8;
int btn_pin = 2;

int stato = LOW;

void setup() {
	pinMode(led_pin, OUTPUT);
	pinMode(btn_pin, INPUT);
}

void loop()
{
	int in = digitalRead(btn_pin);

	if (in == HIGH)
	{
    		if (stato == LOW)
    		{
      			stato = HIGH;
    		}
    		else
    		{
			stato = LOW;
		}
	}

	digitalWrite(led_pin, stato);
}

Risposta: premuto il tasto, il led cambia da acceso a spento e viceversa, restando in quello stato fino alla successiva pressione.

Written by Nicola

15 Aprile 2009 a 15:01

Una Risposta

Subscribe to comments with RSS.

  1. [...] un pulsante a quattro piedini (vedi Articolo) [...]


Lascia un commento