Digitale poorten

Digitale Poorten

Arduino hardware

Een Arduino board heeft verschillende digitale poorten. Deze poorten kunnen slechts twee mogelijke waarden hebben: HIGH of LOW. HIGH staat voor 5V en LOW voor 0V. De digitale poorten kunnen gebruikt worden om digitale signalen te lezen of te schrijven.

Ingang of uitgang

Digitale poorten kunnen ingesteld worden als ingang of uitgang. Als een poort is ingesteld als ingang INPUT, kan je de digitale waarde van de poort lezen. Als een poort is ingesteld als uitgang OUTPUT, kan je de digitale waarde van de poort schrijven.

De digitale poorten van een Arduino board zijn genummerd van 0 tot 13. Belangrijk: Maak geen gebruik van de digitale poorten 0 en 1, deze worden gebruikt voor de seriële communicatie met de computer. Noot: De digitale poort 13 heeft een ingebouwde LED.

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

Digitale poorten aansturen

Je kan het voltage van een digitale poort aanpassen met de functie digitalWrite(). De functie heeft twee argumenten: de pin die je wil aansturen en de waarde die je wil schrijven. De waarde kan HIGH of LOW zijn.

void setup() {
    pinMode(13, OUTPUT);
}
void loop() {
    digitalWrite(13, HIGH);
}

Belangrijk tussendoortje!

In bovenstaande schets maak je twee keer gebruik van pin 13. Maar wat als je deze later wil vervangen door pin 6? Dan moet je in de hele code op zoek gaan naar alle plaatsen waar je pin 13 hebt gebruikt en deze vervangen door pin 6. Dit is niet handig en kan leiden tot bugs, of fouten in je code. Daarom is het beter om een constante te gebruiken voor de pinnummers. Zo kan je op één plaats de pinnummers aanpassen en worden deze overal in de code automatisch aangepast.

const int ledPin = 13;
void setup() {
    pinMode(ledPin, OUTPUT);
}
void loop() {
    digitalWrite(ledPin, HIGH);
}

Digitale poorten lezen

Je kan de digitale waarde van een digitale poort lezen met de functie digitalRead(). De functie heeft één argument: de pin die je wil lezen. De functie geeft HIGH of LOW terug. Het resultaat van deze functie kan je dus opslaan in een variabele.

const int buttonPin = 3;
void setup() {
    pinMode(buttonPin, INPUT);
}
void loop() {
    int waarde = digitalRead(buttonPin);
    if(waarde == HIGH) {
        Serial.println("De poort is hoog.");
    } else {
        Serial.println("De poort is laag.");
    }
}