Energia 02 - Controlliamo il lampeggio di un LED

Valutazione attuale: 4 / 5

Introduzione

Nello scorso articolo abbiamo dato un’occhiata generale ad Energia, arrivando a caricare lo Sketch “Blink” sul nostro MSP430. In questa lezione, riprogrammeremo il nostro microcontrollore modificando la velocità di accensione/spegnimento, ovvero la frequenza del lampeggio del LED.

Materiale necessario

Per il nostro progetto abbiamo bisogno del seguente materiale:

 

Esempio Applicativo - Controlliamo il lampeggio di un LED


Andiamo a riaprire l'esempio “Blink” dal menu:

  • File → Examples → Basics.

Aprendo l'esempio si ottiene il programma come mostrato in Figura 1.
 


Figura 1: Energia, esempio base per il lampeggio di un LED.

Dato che stiamo per modificare lo Sketch di esempio (programma), la prima cosa che dobbiamo fare sarà salvare la nostra  copia. Dal menu File dell'IDE (ambiente di sviluppo) selezionare:

  • File → Save As...

e quindi salvare lo Sketch con il nome di 'Blink_var',  come mostrato in Figura 2.


Figura 2: Programma di esempio salvato prima di ulteriori modifiche.


Abbiamo salvato cosi il nostro esempio raggiungibile anche dal menù Sketchbook :

  • File → Sketchbook

Come mostrato in Figura 3.


Figura 3: Lista dei programmi salvati nello Sketchbook.

Questo è il codice che andremo a modificare:


void setup() {                
  pinMode(RED_LED, OUTPUT);  
}

void loop() {
  digitalWrite(RED_LED, HIGH);         // turn the LED on (HIGH is the voltage level)
  delay(1000);                         // wait for 1000mS
  digitalWrite(RED_LED, LOW);          // turn the LED off by making the voltage LOW
  delay(1000);                         // wait for 1000mS
}

La prima cosa da notare è che la maggior parte del codice è occupato dai commenti (testo in verde).
I commenti non sono istruzioni del programma, ma solo chiarimenti sul come funziona quest'ultimo.  
Tutto quello presente tra / * ….... * / agli inizi dello Sketch è un commento di blocco, che di solito viene messo all'inizio per spiegare il funzionamento completo dello Sketch.
Gli altri commenti presenti dopo il simbolo // si riferiscono invece alle singole righe del programma.

Nella prima riga di codice è presente la funzione “setup”:


void setup() {                
  pinMode(RED_LED, OUTPUT);  
}

All'interno di questa funzione si devono dichiarare gli ingressi e le uscite che andremo ad utilizzare nel nostro Sketch seguendo la sintassi “pinMode(PIN, OUTPUT/INPUT);” inseriti all'interno delle parentesi {}.
In questo caso utilizzeremo la sintassi “RED_LED” dato che Energia ha già delle librerie interne dove vengono inizializzati i LED Rosso e Verde presenti sulla scheda LaunchPad collegati rispettivamente ai Pin P1.0 e P1.6.

Tali informazioni sono salvate nel file pins_energia.h presente nella directory:

C:\[ percorso base] \energia-0101E0012\hardware\msp430\variants\launchpad

Nella seconda parte dello Sketch è presente un'altra funzione :


void loop() {
  digitalWrite(RED_LED, HIGH);         // turn the LED on (HIGH is the voltage level)
  delay(1000);                         // wait for 1000mS
  digitalWrite(RED_LED, LOW);          // turn the LED off by making the voltage LOW
  delay(1000);                         // wait for 1000mS
}

Nel ciclo “void loop(){ }” sono presenti le funzioni del programma che verranno eseguite all'infinito dal microcontrollore.

In questo esempio viene inizializzato il pin RED_LED come pin digitale, cosi da poter settare  il pin solamente in due stati, ossia acceso o spento, e posto allo stato HIGH (quindi acceso), dopodiché attraverso la funzione “delay(1000);” si effettua una pausa di 1000ms ovvero 1 secondo.
Successivamente Il Pin viene inizializzato LOW, quindi spento, per poi entrare in pausa per un altro secondo. Il ciclo viene ripetuto all'infinito.

Andiamo ora a cambiare il tempo di accensione/spegnimento del LED andando a modificare il parametro contenuto all'interno del delay.
Nelle librerie interne di Energia è inizializzato anche il LED Verde presente nativamente sulla scheda LaunchPad con il nome “GREEN_LED”.
Nel nostro esempio faremo accendere il LED Rosso per poi mandare in pausa il microcontrollore per 500mS, accenderemo il LED Verde, ancora una volta in pausa per 500mS e poi andremo a spegnere entrambi i LED. Il codice sarà dunque :


void setup() {                
  pinMode(RED_LED, OUTPUT);  
  pinMode(GREEN_LED, OUTPUT);   
}

void loop() {
  digitalWrite(RED_LED, HIGH);         // turn the LED on (HIGH is the voltage level)
  delay(500);                          // wait for 500mS
  digitalWrite(GREEN_LED, HIGH);       // turn the LED on (HIGH is the voltage level)
  delay(500);                          // wait for 500mS
  digitalWrite(RED_LED, LOW);          // turn the LED off by making the voltage LOW
  digitalWrite(GREEN_LED, LOW);        // turn the LED off by making the voltage LOW
  delay(500);                          // wait for 500mS
}

A questo punto andremo a compilare il codice per vedere se sono presenti errori, salveremo le modifiche apportate al codice e lo caricheremo sul nostro LaunchPad mediante i pulsanti di scelta rapida, come mostrato in Figura 4.

Se tutto andrà bene vedremo accendere i nostri LED!


Figura 4: Pulsanti di scelta rapida di Energia.


Autore : Andrea Valeriani


Bibliografia


You don`t have permission to comment here!

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login