Skip to main content
search

PictoBlox Desktop: Motors bedienen met een motorcontroller aan de Arduino Nano

We kunnen met PictoBlox ook motors bedienen. Hiervoor hebben we een motorcontroller board nodig, en natuurlijk motors.

Als je ook motors hebt, kan je deze klaarmaken voor leuke experimenten. Kijk eens op: https://junioriot.nl/motors/
Soms moet je de motorcontroller nog even klaarmaken voor het breadboard: https://junioriot.nl/l298n-solderen-breadboard/

Tip voor de docent: Neem bijvoorbeeld de gele motors. De motors kan je voorzien van klittenband (de haakjes zijde) en je kunt de wielen er met een schroefje al op monteren. Het breadboard kan je dan voorzien van klittenband (pluisjes zijde) zodat de motors losjes op hun plek kunnen blijven. Als je de gele motors gebruikt, dan kan je twee motors beter uitlijnen door een stokje in de asjes te steken. Na gebruik halen de deelnemers alles weer uit elkaar.

We willen de bediening op D2-D3, D5-D6 gebruiken voor de robot bediening.

We hebben nodig:

    • Je Arduino Nano
    • de motor controller, die je hebt klaar gemaakt voor het breadboard
    • twee gele motors, liefst met klittenband eraan. Aan de motors heb je al draden gemaakt.
    • twee wielen, want dat is ook wel handig
    • een breadboard, liefst met klittenband eronder

Maak de verbindingen:

    • Arduino GND aan motorcontroller –
    • Arduino 5V aan motorcontroller +
    • Arduino D2, aan motorcontroller IN1
    • Arduino D3, aan motorcontroller IN2
    • Arduino D5, aan motorcontroller IN3
    • Arduino D6, aan motorcontroller IN4
    • De ene motor aan MOTOR-A (eventueel draden omdraaien om andere kant op te laten draaien)
    • De andere motor aan MOTOR-B (eventueel draden omdraaien om andere kant op te laten draaien)

Om te kunnen zien of de poorten goed bediend worden, kan je op D2-D3 en op D5-D6 nog een paar ledjes prikken.

Nadat je deze aansluitingen hebt gemaakt, kan je jouw programma maken.

Als je klittenband hebt, dan helpt dit om snel een ludieke robot in elkaar te klitten. Natuurlijk kan je zelf bijvoorbeeld een mooier frame ontwerpen en 3D printen.

  • Maak dit programma:

    • when [  left arrow  ] key pressed
    • set digital pin [  2  ] output as [  HIGH  ]
    • wait (  0.2  ) seconds
    • set digital pin [  2  ] output as [  LOW  ]
    • when [  right arrow  ] key pressed
    • set digital pin [  3  ] output as [  HIGH  ]
    • wait (  0.2  ) seconds
    • set digital pin [  3  ] output as [  LOW  ]
    • when [  up arrow  ] key pressed
    • set digital pin [  5  ] output as [  HIGH  ]
    • wait (  0.2  ) seconds
    • set digital pin [  5  ] output as [  LOW  ]
    • when [  down arrow  ] key pressed
    • set digital pin [  6  ] output as [  HIGH  ]
    • wait (  0.2  ) seconds
    • set digital pin [  6  ] output as [  LOW  ]

 

  • Druk op de groene vlag om je programma te starten
  • Druk op de pijltjestoetsen om de robot te laten rijden

Lukt het om met de pijltjestoetsen de robot te laten rijden?

 

 

Extra: de bediening aanpassen?

Kan jij er voor zorgen dat met pijltje vooruit de twee motors de goede kant op draaien? Kan je ook de andere pijltjes fixen?

Rijdende robot met LDR sensors

We willen nu dat de robot harder of zachter gaat rijden met de LDR sensoren. We kunnen daarvoor poort D3 en D5 gebruiken. Zorg dat je nu eerst het programma van de vorige oefening gebruikt. de motorcontroller kan de PWM signalen prima vertalen naar de motor bediening.

Eerst willen we zorgen dat de robot vooruit rijdt. Het kan zijn dat je de snoertjes van IN1 en IN2 daarvoor moet verwisselen. Voor de andere motor zijn dat de snoertjes van IN3 en IN4.

Laten we de eerste motor controleren. In het vorige programma zit poort D3 bij de pijltjestoets naar rechts. Druk eens op deze toets: de kant die de robot oprijd noemen we vooruit. Je kunt nu IN1 en IN2 verwisselen als je de robot de andere kant op wilt hebben.

Nu kan je de tweede motor controleren. In het vorige programma hoort D5 bij de pijltjestoets omhoog. Druk nu op deze toets. Je kunt nu IN3 en IN4 verwisselen als je de robot de andere kant op wilt hebben.

Pas je ontwerp aan. We willen de bediening op D2-D3, D5-D6 gebruiken voor de robot bediening. A0 en A1 gebruiken we voor twee LDR lichtgevoelige weerstanden.

We hebben nodig:

    • Je Arduino Nano
    • de motor controller, die je hebt klaar gemaakt voor het breadboard
    • twee gele motors, liefst met klittenband eraan. Aan de motors heb je al draden gemaakt.
    • twee wielen, want dat is ook wel handig
    • een breadboard, liefst met klittenband eronder
    • twee LDR lichtgevoelige weerstanden
    • twee ‘grote’ weestanden van 100k

Maak de verbindingen:

    • Arduino GND aan motorcontroller –
    • Arduino 5V aan motorcontroller +
    • Arduino D2, aan motorcontroller IN1
    • Arduino D3, aan motorcontroller IN2
    • Arduino D5, aan motorcontroller IN3
    • Arduino D6, aan motorcontroller IN4
    • De ene motor aan MOTOR-A (eventueel draden omdraaien om andere kant op te laten draaien)
    • De andere motor aan MOTOR-B (eventueel draden omdraaien om andere kant op te laten draaien)
    • Weerstand 1 linker pootje, aan Arduino GND
    • Weerstand 1 rechter pootje, aan Arduino A0
    • LDR 1 linker pootje, aan Arduino A0
    • LDR 1 rechter pootje, aan Arduino 5V
    • Weerstand 2 linker pootje, aan Arduino GND
    • Weerstand 2 rechter pootje, aan Arduino A0
    • LDR 2 linker pootje, aan Arduino A1
    • LDR 2 rechter pootje, aan Arduino 5V

De meetwaarden van A0 en A1 zitten ok deze keer weer tussen 0 en 1024. We weten dat het getal bij de LDR en de weerstand vooral in het middengebied zal zitten.  De PWM heeft een getal nodig tussen 0 en 254. We maken nu in het programma een andere berekening.

Als je de aansluitingen hebt gemaakt, maak je dit programma:

 

    • when flag clicked
    • set digital pin [  2  ] output to [  LOW  ]
    • set digital pin [  6  ] output to [  LOW  ]
    • forever
      • set [  my variabele  ] to ( ( read analog pin [  A0  ] ) – (  450  ) )
      • if (  ( my variable ) < 0 ) then
        • set [  my variable  ] to (  0  )
      • set [  variabele 2  ] to ( ( read analog pin [  A0  ] ) – (  450  ) )
      • if (  (  variable 2 ) < 0 ) then
        • set [  variable 2  ] to (  0  )
      • set PWM pin [  3  ] output as ( my variable )
      • set PWM pin [  5  ] output as ( variable 2 )
      • wait (  0.1  ) seconds

Druk op de groene vlag om het programma te starten. Gebruik een lichtje om de robot te proberen te bedienen. Het lijkt erop dat de robot stil staat als er veel licht is, en in de schaduw gaat rijden. Kan je zien dat de motors langzaam en snel willen draaien?

 

Arduino Nano programmeren in Upload mode

Laat je vorige programma op het scherm staan. Bij dit programma heb je het toetsenbord van je computer niet meer nodig. Dit programma kan je daarom helemaal in de Arduino Nano zetten. Het programma blijft dan werken, bijvoorbeeld als je de Arduino aansluit op een powerbank.

Aan de bovenkant van je scherm zie je Mode: Stage / Upload

  • Klik op ‘Upload’
  • Kies je board
  • Connect je board

PictoBlox toont je opnieuw programmeeromgeving en geeft je nu de mogelijkheden om een programma te schrijven voor de Arduino Nano in Upload mode.

Het eerste blok van je programma ‘when flag clicked’ is donkergrijs, omdat je dit blok in Upload mode niet meer kunt gebruiken.

  • Vervang ‘when flag clicked’ door ‘when Arduino Nano starts up’

Je programma ziet er nu zo uit:

PictoBlox toont naast het programma ook de c++ code. Dit is precies hetzelfde programma, maar dan in een andere weergave.

  • Druk op ‘Upload Code’

De code staat nu echt op de Arduino Nano. Kijk nog eens of je robot goed reageert. Meestal werkt het programma nu veel soepeler.

Tip 1: Het Uploaden werkt goed in PictoBlox Desktop, maar niet in PictoBlox Web.

Tip 2: Als je de LDR’s tussen GND en Ao zet, en de weerstanden tussen A0 en 5V, dan wordt het een licht zoekende robot. Het zoekt dan de plek met het sterkste licht. Kan je controleren of dit klopt?

 

En verder?

Hierna kan je zelf projecten bedenken, of probeer nog eens deze oefening: https://junioriot.nl/extra-licht-programmeren-in-pictoblox/

Close Menu