====== Berend ====== Het lasergesneden houten looprobotje \\ De oorsprong van deze robot is [[https://hackaday.io/project/11776-otto-diy|Otto]] en is door de hackerspace "Backspace" in Duitsland vertaald naar [[https://hackaday.io/project/26244-otto-lc|Otto LC ]],de lasergesneden houten versie.\\ De tekeningen die je daar kunt genereren heb ik aangepast aan de MG90s servo's met metalen tandwielen in plaats van de SG90 servo's met plastic tandwielen en een arduino nano strong in plaats van een standaard arduino nano met breakout board. \\ Hij is dus wat robuuster gemaakt (zoals we dat doen in het noorden), welke naam past daar beter bij dan Berend ;-)\\ {{:berend:berend.jpeg?nolink&400|}} ==== Wat krijg je als je meedoet aan de workshop : ==== * lasergesneden houten robot frame * Arduino Nano Strong * 4 MG90S Servo's * HC-SR04 ultrasone afstendmeter * beetje houtlijm voor de te lijmen delen * 10 schroefjes voor het vastzetten van de arduino, de servo's en de voeten {{:berend:berend_workshop_parts.jpg?nolink&400|}} ==== zelf meenemen : ==== * Een lang Micro USB snoer * Een laptop met werkende arduino suite (regel dit van tevoren!) * Extra dingen die je op of in Berend wilt plakken / lijmen / laseren / whatever * Optioneel Een powerbank of andere batterij als je hem meteen los wilt laten lopen. De arduino slikt 7-12v via de power connector of 5v via de usb plug (misschien goede opties : [[https://www.aliexpress.com/item/7-4V-600mAh-Balance-Plugs-Rechargeable-Li-ion-Battery-with-USB-Charger-for-RC-Boat-Skytech/32934799228.html|AliExpress]] [[https://www.conrad.nl/p/reely-lipo-accupack-74-v-600-mah-aantal-cellen-2-15-c-softcase-bec-bus-1614803|conrad]] ) ==== Wat houdt de workshop in : ==== Tijdens de workshop krijg je uitleg over de verschillende componenten die gebruikt worden, bouw je het robotje en krijg je voorbeeld programma's die uitleggen hoe je de verschillende componenten aanstuurt. Uiteraard is er ruimte zat om hierna nog tot diep in de nacht te stoeien met de bewegingen die er voor zorgen dat Berend gaat lopen en reageren op obstakels. {{ :berend:berend_handleiding.pdf |}} ==== Arduino Type : ==== Er is een kans dat Mac en Windows gebruikers extra [[https://sparks.gogo.co.nz/ch340.html|drivers]] moeten installeren zodat de Arduino door hun computers herkent wordt. Op Linux zouden de drivers standaard beschikbaar moeten zijn. Het type Arduino is een "Arduino Nano" met processor type "ATmega328p (old bootloader)" ==== Code ==== basis code voor lopen : #include Servo lefthip; // create servo object to control the left hip servo Servo leftfoot; // create servo object to control the left foot servo Servo righthip; // create servo object to control the right hip servo Servo rightfoot; // create servo object to control the right foot servo void setup() { lefthip.attach(2); // attaches the servo on pin 2 to the left hip servo object leftfoot.attach(3); // attaches the servo on pin 3 to the left foot servo object righthip.attach(5); // attaches the servo on pin 5 to the right hip servo object rightfoot.attach(4); // attaches the servo on pin 4 to the right foot servo object lefthip.write(90); // center the servo leftfoot.write(90); // center the servo righthip.write(90); // center the servo rightfoot.write(90); // center the servo } void loop() { stepforward(10); delay(10000); } void stepforward(int steps) { moveServo(rightfoot,90,60); moveServo(leftfoot,90,50); moveServo(lefthip,90,60); moveServo(righthip,90,60); for (int x=0; x <= steps; x++){ moveServo(leftfoot,50,90); moveServo(rightfoot,60,90); moveServo(leftfoot,90,120); moveServo(rightfoot,90,130); moveServo(righthip,60,120); moveServo(lefthip,60,120); moveServo(rightfoot,130,90); moveServo(leftfoot,120,90); moveServo(rightfoot,90,60); moveServo(leftfoot,90,50); moveServo(lefthip,120,60); moveServo(righthip,120,60); } moveServo(leftfoot,50,90); moveServo(righthip,60,90); moveServo(lefthip,60,90); moveServo(rightfoot,60,90); } void moveServo(Servo servoName, int oldAngle, int newAngle) { if (newAngle > oldAngle){ for (int x=oldAngle; x <= newAngle; x++) { servoName.write(x); delay(10); } } if (newAngle < oldAngle){ for (int x=oldAngle; x >= newAngle; x--) { servoName.write(x); delay(10); } } }