# Digitale inputs en outputs

Aan het einde van dit hoofdstuk kun je:

Uitleggen wat digitale signalen zijn.
Werken met digitale outputs (zoals LED's) en inputs (zoals knoppen).
Een programma schrijven dat reageert op gebruikersinvoer via een knop.


# Werken met een LED

### Digitale Signalen

- **Digitaal**: Signalen met slechts twee mogelijke toestanden: **hoog** (HIGH) of **laag** (LOW), oftewel aan of uit.
- **Gebruik**: Digitale signalen worden gebruikt om apparaten zoals LED's en knoppen te bedienen of uit te lezen.

### Werken met LED's (Digitale Outputs)

**LED aansluiten:**

1. **Componenten**: LED, 220Ω weerstand, breadboard, jumper wires.
2. **Aansluiting**: 
    - Verbind de **anode** (+, lange poot) van de LED via de weerstand met digitale pin 9 van de Arduino.
    - Verbind de **kathode** (-, korte poot) van de LED met de GND (ground) van de Arduino.

**Code om LED te laten branden:**

```c++
void setup() {
  pinMode(9, OUTPUT); // Zet pin 9 als output
}

void loop() {
  digitalWrite(9, HIGH); // Zet pin 9 hoog (LED aan)
}

```

# Werken met een knop

**Knop aansluiten:**

1. **Componenten**: Drukknop, 10kΩ weerstand (pull-down), breadboard, jumper wires.
2. **Aansluiting**: 
    - Verbind één kant van de knop met 5V.
    - Verbind de andere kant van de knop met digitale pin 7 en met een 10kΩ weerstand naar GND.

**Code om knop uit te lezen:**

```c++
void setup() {
  pinMode(7, INPUT); // Zet pin 7 als input
  pinMode(9, OUTPUT); // LED pin
}

void loop() {
  int knopStatus = digitalRead(7); // Lees de status van de knop

  if (knopStatus == HIGH) {
    digitalWrite(9, HIGH); // Zet LED aan
  } else {
    digitalWrite(9, LOW); // Zet LED uit
  }
}

```

### Uitleg van de Code

- **pinMode()**: Stelt de pin in als INPUT of OUTPUT.
- **digitalRead()**: Leest de status van een digitale inputpin (HIGH of LOW).
- **digitalWrite()**: Zet een digitale outputpin op HIGH of LOW.
- **if-else structuur**: Bepaalt welk deel van de code wordt uitgevoerd op basis van een voorwaarde.

### Opbouw van de Schakeling

- Zorg ervoor dat alle verbindingen stevig zijn.
- Controleer of de weerstand op de juiste plaats zit om kortsluiting te voorkomen.
- Gebruik een schema als referentie.

### Veelgemaakte Fouten

- **Verkeerde aansluiting van de LED**: Let op de anode en kathode.
- **Weerstand vergeten**: Dit kan leiden tot het doorbranden van de LED.
- **Pull-down weerstand missen**: Zonder deze kan de input "zweven" en onvoorspelbaar gedrag vertonen.

### Veiligheidstips

- Controleer altijd je schakeling voordat je de stroom inschakelt.
- Gebruik de juiste weerstandswaarden om componenten te beschermen.
- Raak de Arduino niet aan op plekken waar spanning aanwezig is tijdens gebruik.