Glastik robot

Uit KekBot
Naar navigatie springen Naar zoeken springen
De printervriendelijke versie wordt niet langer ondersteund en kan mogelijk weergavefouten bevatten. Werk uw browserbladwijzers bij en gebruik de ingebouwde browser printfunctionaliteit.

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)