Entrades digitals

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 cable inputPin.
  • 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à a HIGH o LOW. Retornarà HIGH quan el cable estigui a 5V i LOW 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.