3. Encès i desactivació dels LEDs¶

Els pendents¶
- Enceneu i apagueu els díodes LED del tauler de control PC42.
- Generar parpelleig de LEDs amb el temps esperant.
PC42 Panell de control LEDES¶
El tauler de control té 6 LED. 5 LED són d’un sol color. L’últim LED a la dreta és un LED RGB amb els tres colors bàsics de color vermell, verd i blau.
Porta Color 1 Vermell 2 Groga 3 Verd 4 Blava 5 Blanc 6 RGB-vermell 7 RGB-VERDE 8 RGB-Azul
El LED RGB permet generar colors compostos per altres:
Porta Color 6 + 7 RGB-Yellow 7 + 8 RGB-CYAN 6 + 8 RGB-Morible 6 + 7 + 8 RGB-Blanco
La funció: CPP: Fun: ledWrite¶
-
ledWrite
(int ledNum, int bright)¶ Aquesta funció permet activar o desactivar un LED específic. Els seus paràmetres són els següents:
`` lednum``: LED que s’encendrà o s’apagarà. Els valors vàlids oscil·len entre 1 per LED D1 a 8 per al color blau del LED D6.
El LED D6 és un LED RGB, que conté 3 LEDs al seu interior. Els números 6, 7, 8 representen respectivament els colors vermells, verds i blaus del LED D6.
`` Bright``: Brillo amb el qual s’encén el LED.
- `` Led_off``: Apagueu el LED. Es pot substituir pel número zero.
- `` Led_``: encén el LED amb la intensitat màxima.
La funció: CPP: Fun: DigitalWrite¶
-
digitalWrite
(int ledNum, int bright)¶ Aquesta funció és similar a la funció anterior ledWrite '. La seva operació és idèntica, accepta dues ` `` `` Bright`` `` `` per establir el LED que es manejarà i la seva brillantor.
La funció té el mateix nom que la funció d'Arduino per gestionar els pins de sortida digital. D’aquesta manera es manté la compatibilitat dels noms per a aquells programadors acostumats a l’entorn Arduino.
Exemple: enceneu el LED D1¶
El següent programa encendrà definitivament el LED D1 mitjançant la funció ledWrite
1 2 3 4 5 6 7 8 9 10 11 12 | // Enciende el led D1
#include <Wire.h>
#include <PC42.h>
void setup() {
pc.begin(); // Inicializar el módulo PC42
pc.ledWrite(1, LED_ON); // Encender el led D1
}
void loop() {
}
|
Programa equivalent a l’entorn Arcublock:

En aquest enllaç podeu descarregar: Descarregueu: `Program Archive for Environment
Exemple: LD D1 Flicker¶
Si voleu activar i desactivar el LED D1 amb un període de segon, una manera de fer -ho és encendre el LED, esperar mig segon, apagar el LED i esperar mig segon. Quan es repeteix aquesta seqüència, el LED parpelleja. Per aconseguir una meitat de segon, s’utilitza la funció `` retard (500) `` que provoca 500 mil·lisegons (0,5 segons). Per assegurar -se que la seqüència es repeteix indefinidament, el codi s’introdueix al bloc `` bucle () ``, que es repeteix una i altra vegada dins del programa Arduino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // Parpadea el led D1 una vez por segundo
#include <Wire.h>
#include <PC42.h>
void setup() {
pc.begin(); // Inicializar el módulo PC42
}
void loop() {
pc.ledWrite(1, LED_ON); // Encender el led D1
delay(500); // Esperar medio segundo (500 ms)
pc.ledWrite(1, LED_OFF); // Apagar el led D1
delay(500); // Esperar medio segundo (500 ms)
}
|
Programa equivalent a l’entorn Arcublock:

En aquest enllaç podeu descarregar: Descarregueu: `Program Archive for Environment
Exercicis¶
Programa el codi necessari per resoldre els problemes següents.
Enceneu de forma permanent les LEDES D1, D3 i D5.
Enceneu el LED D1, espereu un segon, activeu el LED D2, espereu un segon, continueu la seqüència fins que els primers 4 LED estan encesos. Un cop finalitzat, el programa mantindrà els 4 LED encesos.
Enceneu els LEDs vermells, ambre i verds com en un semàfor.
Primer el LED verd s’encendrà i es mantindrà durant 4 segons. El LED verd s’apagarà i el LED ambre s’encendrà durant 2 segons. Finalment, el LED ambre s’apagarà i el vermell s’encendrà, que es mantindrà durant 4 segons.
Aquesta seqüència es repetirà indefinidament.
Modifiqueu l'exercici anterior de manera que el LED ambre parpelleja tres vegades, canviant l'encesa a la segona meitat, abans d'encendre el LED vermell.
Programa una balisa que s’encén alternativament el LED vermell i el LED blau. Cada LED ha de romandre un segon. Un dels dos LED sempre ha de ser i mai serà els dos LED alhora.
Enceneu el LED D1, espereu un segon, apagueu el LED D1 i engegueu el LED D2. S'encendran d'aquesta manera, consecutivament, els primers 5 LED. En cada moment només hi haurà un LED. Un cop finalitzada la seqüència, tornarà a començar des del principi.
Feu una modificació a l’exercici anterior de manera que en tot moment hi hagi 2 LEDES encès.
Al començament del programa, els LED D1 i D2 s’han d’encendre.
Al cap d'un segon, els LeDes D2 i D3 s'encendran.
La seqüència continuarà fins que LeDes D6 i D1 s’encenguin.
A partir d’aquest moment, el programa es repetirà de nou des del principi.
El següent programa té diversos errors. Corregiu els errors sintàctics per funcionar correctament.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
// Programa con errores sintácticos // Enciende 6 ledes en secuencia a derecha y a izquierda #include <Wire.h> #include <PC42.h> void setup() { pc.begin(); // Inicializar el módulo PC42 pc.ledWrite(1, LED_on); } void loop() { for(char i=1; i<=5; i++) { pc.ledWrite(i+1, LED_ON); // Encender el led siguiente delay(250); // Esperar 250 milisegundos pc.ledWrite(i, LED_OFF); // Apagar el led anterior delay(100); // Esperar 100 milisegundos } for(char i=5; i>=1; i--) { pc.ledWrite(i, LED_ON); // Encender el led anterior delay(250); // Esperar 250 milisegundos pc.ledWrite(i+1, LED_OFF); // Apagar el led siguiente delay(100); // Esperar 100 milisegundos }
Realitzeu un programa que parpelleja D1 una vegada per segon al mateix temps que D2 parpelleja dues vegades per segon.