Blink

Al llarg de la introducció a la programació, vam veure com fer petits programes i animacions amb l’ordinador. Enceníem i apagàvem els píxels a la pantalla de l’ordinador. Com saps, la placa Arduino no té pantalla, però té un LED, una petita làmpada que es pot encendre i apagar fàcilment usant un programa. Es pot dir que Ardunio té una pantalla d’un sol píxel.

Aquest LED a la placa està connectat al Pin digital 13. Com pots veure a la placa, tots els Pins estan numerats i agrupats per funcionalitat. Hi ha un grup de 14 Pins (numerats del 0 al 13) que són Pins digitals i, després, un altre grup de 6 Pins (etiquetats d’A0 a A5) que són els analògics. Més endavant explicarem els Pins analògics; ara ens centrarem en els digitals.

Vegem com controlar el LED del teu Arduino utilitzant una ordre senzilla. El primer exemple és el que anomenem Blink, que significa encendre i apagar el LED repetidament.

De la mateixa manera que els programes Processing sempre necessiten tenir una funció setup() i una funció draw(), els programes Arduino requereixen les funcions setup() i loop():

  • setup(): Aquesta part del programa només s’executa al principi. Aquí podràs configurar les funcionalitats dels Pins, ja siguin inputs (entrades) o outputs (sortides), o decidir si realitzaran una funció més complexa com ara enviar senyals a través del cable USB.
  • loop(): Aquesta part funcionarà infinitament (o fins que desconnectis la font d’alimentació). Les ordres al loop seran executades una darrere l’altra. Quan arribem a l’última ordre, començarà de nou des del principi.

El programa Blink més bàsic funciona de la següent manera:

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

void loop() {
   digitalWrite(13, HIGH);
   delay(1000);
   digitalWrite(13, LOW);
   delay(1000);
}
  • pinMode(pinNumber, INPUT | OUTPUT | INPUT_PULLUP): S’utilitza per determinar si el Pin digital al teu Arduino està escrivint(OUTPUT) o llegint (INPUT | INPUT_PULLUP) els senyals des de o cap a l’entorn.
  • digitalWrite(pinNumber, HIGH | LOW): S’utilitza per fer que un Pin digital concret escrigui 5 volts(HIGH) o 0 volts (LOW) a una sortida.
  • delay(time): Atura el programa durant una certa quantitat de temps. El temps s’expressa en milisegons. Si vols aturar el programa durant 2 segons, hauràs d’escriure delay(2000).

Recordem també el que vèiem durant la setmana de Processing:

  • Cada línia acaba amb punt i coma ‘;’.
  • Els blocs de codis estan continguts entre claus ‘{ }’.
  • Les funcions comencen amb una definició com void.
  • Les funcions tenen paràmetres que figuren entre parèntesi ‘( )’, i poden tenir tants paràmetres com necessitis.

Però, tornant a allò que fa el programa: aquest encén el LED marcat amb la ‘L’ al teu Arduino, espera 1 segon, l’apaga i espera un altre segon. Després, això es repeteix una vegada i una altra fins a l’infinit. Carrega’l a la placa utilitzant la fletxa dreta (el segon botó de la barra d’eines) i comprova com funciona.

¡Continua experimentant!

  • Ara pots provar a veure què succeeix quan canvies els temps dins la funció delay. Què passa si fas els delays més petits? El llum parpelleja més ràpidament o més lentament?
  • També pots utilitzar el llum per simular els batecs del cor. Comprova els teus batecs prenent-te el pols. Notaràs que sempre obtens dues pulsacions, alguna cosa així com: tock tock… pausa… tock tock… pausa… Ho pots simular amb un LED? (SUGGERIMENT: pots copiar i enganxar el codi).
  • En darrer lloc, què passa quan el delay es converteix en un interval veritablement petit? Per exemple, el pots canviar a delay(10): encara pots veure el parpelleig del llum?

Afegeix-li els teus propis LEDs

Vols afegir al circuit els teus propis LEDs? Quan treballis amb un LED és important que recordis que tenen polaritat. Els LEDs estan construïts per a mostrar-la. El Pin llarg s’anomena ànode, i és el positiu quan el connectem al circuit: aquest ha d’estar connectat a l’extrem positiu de l’alimentador. El Pin curt, o càtode, ha d’estar connectat a terra (0 volts).

Els LEDs no es trencaran si els connectes amb la polaritat oposada: simplement no funcionaran. No obstant això, a través dels LEDs no hi pot circular gaire corrent. Per assegurar-te que no es cremin, els has de posar una resistència davant. El valor de la resistència és variable. En el nostre cas utilitzarem 220 ohm per als LEDs.

Per fer més fàcil la construcció de circuits, utilitzarem la Shield Bàsica Educativa. Un cop muntada al teu Arduino, la Shield amplia les capacitats de la placa, a més d’afegir-li característiques extra. Per fer el circuit amb un LED, farem ús de la breadboard. Llegeix sobre la breadboard aquí, i sobre la Basic Education Shield aquí.

Si fas un circuit com el que hem mostrat anteriorment, hauràs de canviar el programa Blink per direccionar-lo al Pin número 5 enlloc del Pin número 13. El programa es podria assemblar al següent:

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

void loop() {
   digitalWrite(5, HIGH);
   delay(1000);
   digitalWrite(5, LOW);
   delay(1000);
}

Potser recordes les variables de la primera setmana del curs. Cal que tinguis present que les variables són llocs dins la memòria de l’ordinador on podem emmagatzemar números, caràcters o fins i tot cadenes de text (strings) completes. Les variables tenen un tipus (com int per números i strings per cadenes de textos) i un nom al qual li pots assignar el que vulguis.

En aquest cas, volem que una variable emmagatzemi el número que representa el Pin que estem canviant amb el nostre programa. Escrivint el programa d’aquesta manera, si decidíssim connectar el LED a un altre Pin només hauríem de reemplaçar el número del Pin en un únic lloc del codi, enlloc d’haver-ho de fer en tres.

Vegem com seria:

int ledPin = 5;

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

void loop() {
   digitalWrite(ledPin, HIGH);
   delay(1000);
   digitalWrite(ledPin, LOW);
   delay(1000);
}

Evidentment, és possible connectar i controlar més d’un LED al teu Arduino. Als projectes d’aquesta setmana veuràs que, en fer servir diversos LEDs, obtenim el que anomenem VU-Metro. Un VU-Metro és una línia de LEDs agrupats. Existeixen diverses funcions que hem preparat perquè puguis controlar molts LEDs més fàcilment. Llegeix sobre el VU-Metro aquí.

Nota: Et recomanem que no utilitzis els Pins 0 i 1 excepte si realment els necessites. Aquests Pins s’utilitzen perquè Arduino enviï informació a l’ordinador. Si els connectes qualsevol cosa, Arduino no serà capaç de comunicar-se i, per tant, no serà possible reprogramar-lo.