Glastik robot
Hoofdpagina | Fanbot | Eckart College | Fontys Robots | Kekbot mechatronics kit | Hardware | Software&Programma's | Tips
Info:
door Ralph en Kostas
Dit is een robot gemaakt voor het kekrobot project. de glastikbot is een drumbot die een melody maakt doormiddel van op een glas te tikken
Status:
De drumbot kan rythme en noten lezen waardoor het mogelijk is om liedjes in te laden en door de drumbot te laten afspelen.
Problemen:
- De Launchpad heeft een gelimiteerde mogelijkheid tot ontwikkeling. Zo kan er geen seriale poort worden aangesproken of uitgelezen.
- De Launchpad wekt te weinig energie op om meerdere servo's aan te spreken.
- We zijn uiteindelijk overgestapt naar een arduino, omdat deze wel de potentiële waarde heeft om een succesvol drumbot te ontwikkelen.
Filmpje
Zie de robot in actie
Code
#include <Servo.h> Servo myservo1; Servo myservo2; Servo myservo3; int pos1 = 0; int delaylinks = 2; int delayrechts = 2; int delaymidden = 2; int check1 = 0; int check2 = 0; int noteLib[] = { 2,2,1,2,0,2,1,0,0,0,0,0,1,1,1,0,1,2,1,0,0 }; //e e d e c e d c c c c c d d d c d e d c c int thisNote = 0; int note; int noteDurations[] = { 4,6,4,6,4,6,4,4,6,4,4,6,4,6,4,4,4,6,4,4,6 }; //ee de ce dcc ccc dd dcde dcc //46 46 46 446 446 46 4446 446 int thisDuration = 2; int Duration; void setup() { Serial.begin(9600); myservo1.attach(11); myservo2.attach(10); myservo3.attach(9); } void links(){ Serial.println("links"); for(pos1 = 50; pos1 < 85; pos1 += 1) // hoe hoger des te meer tegen het glas aan { myservo1.write(pos1); delay(delaylinks); //Serial.println(pos1); } Serial.println("links omlaag"); for(pos1 = 85; pos1>=51; pos1-=1) // hoe hoger des te meer tegen het glas aan { myservo1.write(pos1); delay(delaylinks); } } void rechts(){ Serial.println("rechts"); for(pos1 = 35; pos1 < 65; pos1 += 1) // hoe lager des te meer tegen het glas aan { myservo2.write(pos1); delay(delayrechts); } for(pos1 = 65; pos1>=36; pos1-=1) // hoe lager des te meer tegen het glas aan { myservo2.write(pos1); delay(delayrechts); } } void midden(){ Serial.println("midden"); for(pos1 = 30; pos1 < 60; pos1 += 1) // hoe lager des te meer tegen het glas aan { myservo3.write(pos1); delay(delaymidden); } for(pos1 = 60; pos1>=31; pos1-=1) // hoe lager des te meer tegen het glas aan { myservo3.write(pos1); delay(delaymidden); } } void loop(){ // Serial.print("thisnote = "); // Serial.println(thisNote); note = noteLib[thisNote]; Duration = noteDurations[thisDuration]; // Serial.print("note = "); // Serial.println(note); switch (note) { case 0: Serial.println("case 0"); delaylinks = Duration; links(); thisNote++; thisDuration++; break; case 1: Serial.println("case 1"); delayrechts = Duration; rechts(); thisNote++; thisDuration++; break; case 2: Serial.println("case 2"); delaymidden = Duration; midden(); thisNote++; thisDuration++; break; } if (thisNote == 9){ thisNote = 0; thisDuration = 0; } }
Contact:
Ralph--84.27.35.55 11 nov 2012 15:05 (CET)