# Dwengo/tekenrobot
## Tekenrobot met Dwengo

In deze tutorial leer je stap voor stap om een tekenrobot te maken die reageert op muisbewegingen. De robot wordt gemaakt met 2 servomotoren die je aansluit op een Dwengo-bordje. De verbinding met Dwengo gebeurt met Processing.
Dwengo
We maken gebruik van het Dwengo - experimenteerbord. Meer info hierover vind je op de uitstekende website Dit projectje lijkt me niet ideaal om met Dwengo te starten. Hiervoor vind je wel uitstekende tutorials op de website.
Als inleiding kan ik zeker ook dit eboekje aanraden.
Processing
Processing is een uitbreiding van Java, speciaal ontwikkeld om te programmeren in een visuele context.
De software is open-source en te installeren op Linux, Windows of Mac. Ga naar hun website voor meer informatie. Als je onder Linux werkt download je de juiste versie en je pakt ze uit in een map naar keuze. Bijv. /home/processing Het opstarten doe je door naar de juiste map gaan en onderstaande regel uit te voeren.
sudo is belangrijk omdat je zo zeker de rechten hebt voor de seriële verbinding.
Materiaal
De tekenarm wordt gemaakt in Lego. Twee eenvoudige servomotoren zorgen voor de beweging. De verbinding tussen PC en Dwengo gebeurt met een seriële-naar-USB kabel.
Vereiste voorkennis
Dwengo wordt geprogrammeerd in C, en Processing is Java, dus een minimum aan programmeerervaring is vereist. De achterliggende wiskunde (Pythagoras en cosinusregel) worden gezien in het derde en vierde jaar secundair onderwijs.
Van leerlingen van het 5e jaar mag je dus veronderstellen dat ze voldoende wiskundige achtergrond hebben.
* Stap 1: Wiskunde
* Stap 2: Pseudocode
* Stap 3: Een robotarm maken met Lego
* Stap 4: De robotarm in Dwengo
* Stap 5: Beweeg de robotarm door muisbeweging
* Stap 6: Robotarm beweegt naar coördinaten doorgegeven door muis

### Stap 1: Wiskunde

Hierboven zie je een schematische weergave van de tekenarm.
De twee rode lijnstukken a en c zijn de twee assen.
De bedoeling is dat je de x en y-coördinaat van punt C omzet naar een beweging van 2 servomotoren.
De eerste servomotor beweegt lijnstuk a en zal dus gelijk zijn aan (alfa + gamma) De tweede servomotor beweegt lijnstuk c en zal dus gelijk zijn aan (beta)
gamma
De hoek gamma bereken je door de tangens van deze hoek.
* tan (gamma) = y / x tangens in een rechthoekige driehoek is overstaande rechthoekszijde delen door aanliggende rechthoekszijde
* Houd er rekening mee dat in 'C' geen graden, maar radialen gebruikt worden voor de hoeken.
alfa
Voor alfa heb je de cosinusregel nodig die je moet omvormen naar alfa. In deze cosinusregel heb je ook de lengte van b nodig. Die bereken je door Pythagoras toe te passen.
beta
Voor beta heb je de cosinusregel nodig die je moet omvormen naar beta. In deze cosinusregel heb je ook de lengte van b nodig. Die bereken je door Pythagoras toe te passen.

### Stap 2: Pseudo-code

* begin lus in Processing
       Lees x en y coördinaat van muis op scherm.
       Stuur x en y coördinaat via seriële verbinding naar Dwengo
* Einde lus Processing
* Begin lus Dwengo
       Ontvang (x,y)
       Bereken alfa, beta en gamma
       Zet (alfa + gamma) om in waarde voor je servomotor (0-255)
       Zet (beta) om in waarde voor je servomotor (0-255)
       Beweeg servo 1 en servo 2 naar deze positie
       Wacht korte tijd om servo tijd te gunnen te bewegen
* Einde lus Dwengo

### Stap 3: De tekenarm

Maak in Lego een arm die op 2 plaatsen scharniert. Probeer je arm zo te maken dat de servo's niet teveel belast worden. Je kan later ook een motor toevoegen die je pen op en neer beweegt.
Dwengo ondersteunt standaard 2 servomotoren, dus als je een derde motor nodig hebt zal dit een gewone motor zijn.
* 2 servomotoren en wat Lego maken een eenvoudige robotarm.Het bordje is Dwengo.
* 2 servomotoren en wat Lego maken een eenvoudige robotarm. Het bordje is Dwengo.

### Stap 4: Robotarm laten bewegen met Dwengo

Nu zal je een functie moeten schrijven die de x-en y-coördinaat omzet naar 2 bewegingen van een servo-motor.
Met onderstaande code kan je de arm laten bewegen in Dwengo.

### Stap 5: Robotarm bewegen met muis
##### Test seriële communicatie tussen Dwengo en Processing

De bedoeling is dat je een muisbeweging doorgeeft aan je Dwengobordje, dat de relatieve beweging kort op het scherm laat zien De code hieronder is Dwengo
Gebruik onderstaande Processingcode om in samenwerking met Dwengo de seriële verbinding te testen.
Deze code maakt een seriële verbinding met Dwengo en stuurt de x -en y-coördinaat van de muis door.

##### Doorgeven relatieve muisbeweging waardoor de arm beweegt

Je gebruikt de Processing code van hierboven en de Dwengocode van hieronder.
Een eerste gevecht tussen twee standaard Dwengo robots