Glastik robot: verschil tussen versies
Naar navigatie springen
Naar zoeken springen
Geen bewerkingssamenvatting |
|||
Regel 33: | Regel 33: | ||
== Code == | == Code == | ||
<nowiki> | <nowiki> | ||
// | #include <Servo.h> | ||
void | |||
{ | 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; | |||
} | |||
} | |||
</nowiki> | </nowiki> | ||
Regel 48: | Regel 150: | ||
---- | ---- | ||
== Contact: == | == Contact: == | ||
Versie van 12 nov 2012 13:08
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)