1. Encès i desactivació dels LEDs

Els pendents

  • Enceneu i apagueu els díodes LED de l'escut Picuino.
  • Generar parpelleig de LEDs amb el temps esperant.

Llibreta de gestió per a Arduino

Per començar a programar, és necessari

Al següent lloc web podeu veure com els passos necessaris per a la instal·lació d’una llibreria per a Arduino.

: Ref: add-library

La funció `` 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 a LED D1 a 8 per al color blau del LED D6.

El LED D6 és un LED RGB, que integra 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.
  • Valors entre 2 i 255: encendre el LED amb una intensitat proporcional al nombre.

Encén el LED D1

El següent programa encantarà definitivament el LED D1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// Enciende el led D1

#include <Picuino.h>

void setup() {
   pio.begin();               // Inicializar el shield Picuino UNO
   pio.ledWrite(1, LED_ON);   // Encender el led D1
}

void loop() {
}

LED D1 Flash

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 dins del bloc `` bucle () ``, que es repeteix una i altra vegada un cop iniciat el programa Arduino.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
// Parpadea el led D1

#include <Picuino.h>

void setup() {
   pio.begin();               // Inicializar el shield Picuino UNO
}

void loop() {
   pio.ledWrite(1, LED_ON);   // Encender el led D1
   delay(500);                // Esperar medio segundo (500 ms)
   pio.ledWrite(1, LED_OFF);  // Apagar el led D1
   delay(500);                // Esperar medio segundo (500 ms)
}

Exercicis

Programa el codi necessari per resoldre els problemes següents.

  1. Enceneu de forma permanent les LEDES D1, D3 i D5.

  2. Enceneu el LED D1, espereu un segon, activeu el LED D2, espereu un segon i continueu fins que els primers 5 LED estiguin encesos. Un cop finalitzat, el programa mantindrà els 5 LED encesos.

  3. 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.

  4. Modificar l'exercici 3 per a l'ambre va provocar parpellejar tres vegades, canviant l'encesa per extingir cada meitat segon, abans d'encendre el LED vermell.

  5. 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.

  6. 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.

  7. 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 arribi a la situació inicial.

  8. El programa següent té diversos errors, corregeix els errors sintàctics perquè funcionin 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
    // Enciende 6 ledes en secuencia a derecha y a izquierda
    // Programa con errores sintácticos
    
    #include <Picuino.h>
    
    void setup() {
       pio.begin();               // Inicializar el shield Picuino UNO
       pio.ledWrite(1, LED_on);
    }
    
    void loop() {
       for(char i=1; i<=5; i++) {
          pio.ledwrite(i+1, LED_ON);  // Encender el led siguiente
          delay(250);                 // Esperar 250 milisegundos
          pio.ledWrite(i, LED_OFF);   // Apagar el led anterior
          delay(100);                 // Esperar 100 milisegundos
       }
    
       for(char i=5; i>=1; i--) {
          pio.ledWrite(i, LED_ON);    // Encender el led anterior
          delay(250);                 // Esperar 250 milisegundos
          pio.ledWrite(i+1, LED_OFF); // Apagar el led siguiente
          delay(100);                 // Esperar 100 milisegundos
       }
    
  9. Realitzeu un programa que parpelleja D1 una vegada per segon al mateix temps que D2 parpelleja dues vegades per segon.