Dit is de XylofoonBot. Aangedreven door twee micro servo's die door een Arduino Uno worden aangestuurd. In mijn zoektocht naar een origineel nieuw Arduino project is dit eigenlijk nog steeds niet wat ik in gedachten had, maar dit was wel een goede oefening in het ontwerpen van 3D modellen. De rode onderdelen, die ervoor zorgen dat de xylofoon op zijn plaats blijft en tevens dienen als houders voor de servomotortjes, komen namelijk uit de 3D printer op mijn werk. Ik heb ze zelf ontworpen met Tinkercad.
Omdat dit qua elektronica (twee servo's, een Arduino Uno en wat draadjes die via een breadboard worden aangesloten) en programmeerwerk niet veel voorstelt, ga ik er niet al te veel over uitweiden. Het meeste werk zat hem in het ontwerpen van de houders voor de servo's, die je eventueel ook mag hergebruiken:
Zoals gezegd stelt de programmacode niet veel voor, maar voor de volledigheid volgt nu het programma dat ervoor zorgt dat de XylofoonBot bij het opstarten eerst van links naar rechts over de xylofoon "aait" en vervolgens de toonladder blijft herhalen.
#include <Servo.h> Servo servoHit; Servo servoNote; int led = 13; int posUp = 70; int posDown = 90; int notePos = 108; int notes[] = {108, 100, 90, 80, 72, 64, 56, 48}; // c d e f g a b C void play (int note) { servoNote.write(note); delay(250); servoHit.write(posDown); delay(50); servoHit.write(posUp); } void setup() { servoHit.attach(9); servoNote.attach(10); pinMode(led, OUTPUT); servoNote.write(notePos); delay(500); servoHit.write(posDown); for (int i = 0; i<8; i++) { servoNote.write(notes[i]); delay(100); } delay(500); servoHit.write(posUp); servoNote.write(80); delay(2000); } void loop() { for (int i=0; i<8; i++) { play(notes[i]); delay(500); } }
De volgende video toont de XylofoonBot in actie:
Zoals je ziet gaat het niet zo heel vloeiend, dus daar kan nog wel wat op verbeterd worden.
Een leuke volgende stap is om hem via MIDI aan te sturen. Maar of ik dat zelf ga doen of dat aan mijn informaticaleerlingen ga over laten, dat weet ik nog niet...