Glastik robot

Uit KekBot
Naar navigatie springen Naar zoeken springen

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 en hier



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


Ralph--84.27.35.55 11 nov 2012 15:05 (CET)