# Embedded Systems

In deze module ga je aan de slag met Arduino. Je gaat met electronica aan de slag en gaat met breadboards aan de slag om o.a. knopjes, displays, ledjes, motoren e.d. te programmeren.

### Programma's

De Arduino ontwikkelomgeving download je [hier](https://www.arduino.cc/en/Main/Software)

### Onderwerpen die aan bod komen:

* Wat zit er op een Arduino Uno?
  * <https://www.arduino.cc/> voor info en ideeen
  * Ophalen datasheet Arduino Uno, processor datasheet (Atmel ATmega328P), bespreken, alternatieven (introduceren zelf bouwen Arduino!)
* Werking breadboard
  * Toelichten van rol breadboard, prototyping, alternatieven (eiland-printjes etc)
* Gebruik verschillende analoge en digitale sensoren
  * temperatuur
  * afstand (ultrasoon)
  * tast (schakelaar/button)
  * licht
  * geluid
* Eenvoudige actuatoren zoals LED's, servo-motoren etc.
  * Ook LCD's (eventueel kant-en-klaar)
* Gebruik (externe) Libraries
  * neopixels/ledstrips
  * lcd's
* Nabouwen van gegeven opstellingen (fritzing)
  * Simulator ([tinkercad](https://www.tinkercad.com))
  * Het is leuk om Fritzing, Tinkercad en zelf bouwen in dezelfde opdrachten te gebruiken, bouw een Fritzing tekening na in Tinkercad en in het echt.
* Elementair idee over de functie van een weerstand (kunnen herkennen)
  * Ook hier weer leuk om Tinkercad te gebruiken, Tinkercad geeft het duidelijk aan als een weerstand te klein is gekozen en daardoor een LED stuk gaat. In Tinkercad kun je ook een Ampere- en Volt-meter aansluiten, dat ook te gebruiken is in voorbeelden/les.
* Seriële monitor
  * als communicatiemiddel (voor waarden in van PC naar Arduino, of lees gemeten waarden af in PC)
  * voor debug doeleinden (laat een programma aan de PC doorgeven waar het is, in welke regel)
* Debuggen van een embedded systeem
  * Naast debuggen via seriële monitor kun je ook LEDs of LCD gebruiken, zelf geluid (denk aan piep-toontjes bij het opstarten van een PC!)
  * inklemmen probleem
* State diagrams
* Programmeren in C.
  * Arduino Cheat Sheet (Mark Liffition is een hele goede)
  * Arduino Language Reference (<https://www.arduino.cc/reference/en/>)
  * plaats van declaraties ((globale) variabelen, gebruikte libraries), setup en loop functies.
  * Getypeerde taal.
  * Gecompileerde taal versus Geїnterpreteerde taal

## Planner

| Week # | Date     | Subject                                               |
| ------ | -------- | ----------------------------------------------------- |
| 1      | 9 maart  | afmaken eindopdraht vorige periode                    |
| 2      | 16 maart | Opstarten + Les 1                                     |
| 3      | 23 maart | Les 2,3                                               |
| 4      | 30 maart | Les 4,5                                               |
| 5      | 6 april  | Les 6,7                                               |
| 6      | 13 april | uitloop, eindopdracht                                 |
| 7      | 20 april | eindopdracht                                          |
| 8      | 4 mei    | eindopdracht                                          |
| 9      | 11 mei   | <p>Ieindopdracht</p><p>DL: eigen project (15 mei)</p> |
| 10     | 18 mei   | Presenteer je eindopdracht                            |

<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://metis-montessori-lyceum.gitbook.io/informatica/keuzemodules/embedded-systems.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
