De la mateixa manera que pots assignar ’0′ o ’1′ a un Pin a l’Arduino, pots llegir el valor generat per un sensor que hi estigui connectat. En treballar amb Pins digitals, utilitzarem sensors que només poden estar ON i OFF.
Un simple cable és un bon exemple d’un INPUT
(entrada) digital. Pots connectar un cable al Pin 5, per exemple, i encendre’l connectant l’altra part del cable o bé a 5 volts o bé a GND (0 volts) al connector del teu Arduino.
Prova això! Agafa un dels connectors del teu kit, connecta’l al Pin 5 i programa el següent codi al teu Arduino:
int inputPin = 5; int ledPin = 13; void setup() { pinMode(inputPin, INPUT); pinMode(ledPin, OUTPUT); } void loop() { if (digitalRead(inputPin) == HIGH) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } }
Aquest programa introdueix algunes coses noves:
- En primer lloc, veiem que es poden utilitzar moltes variables. En aquest cas en tenim una pel LED
ledPin
i una altra pel cableinputPin
. - De la mateixa manera que un
pinMode
es pot utilitzar per assignar un Pin com a OUTPUT, pots assignar el Pin com a INPUT. - Hi ha una ordre,
digitalRead(inputPin)
, que llegirà el valor del volt a l’inputPin
i retornarà si està aHIGH
oLOW
. RetornaràHIGH
quan el cable estigui a 5V iLOW
quan es connecti a GND. - El programa utilitza una instrucció condicional
if
per comprovar el valor de l’inputPin
. - Quan vulguis comparar dos valors en un programa, has d’utilitzar dues vegades el signe ‘igual a’, és a dir,
==
. Això fa que l’ordinador entengui que els vols comparar, enlloc d’assignar. Aquest “doble igual” és el que anomenem un operador. Hi ha altres operadors que comparen altres tipus de valors.
Botó
Provem-ho ara amb un botó. Per aquest exemple necessitaràs muntar la Shield Bàsica Educativa a l’Arduino i connectar un botó tinkerKit al connector D9 amb un cable tinkerKit.
Pots fer servir el mateix codi de l’exemple anterior, però necessitaràs canviar el valor de l’inputPin a 9. Això és perquè, de fet, el connector D9 està connectat al Pin 9.
int inputPin = 9; int ledPin = 13; void setup() { pinMode(inputPin, INPUT); pinMode(ledPin, OUTPUT); } void loop() { if (digitalRead(inputPin) == HIGH) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } }
Continua experimentant!
- Escriu un programa que faci sonar un so en prémer el botó.
Nota: Recorda que el connector D9 està connectat al Pin digital 9. Si tens alguna cosa a D9, no podràs utilitzar-lo per a connectar-hi res més.