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:
- Software Energia
- Scheda di sviluppo LaunchPad MSP430
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
You don`t have permission to comment here!