Drumrobot-D: verschil tussen versies

Uit KekBot
Naar navigatie springen Naar zoeken springen
 
(4 tussenliggende versies door een andere gebruiker niet weergegeven)
Regel 36: Regel 36:
== Filmpje: ==  
== Filmpje: ==  


komt nog
Zie de robot in [http://www.youtube.com/watch?v=Q83b1CBicnw&feature=plcp.avi actie]
 




----
----


== Code: ==
#include <Servo.h>


<nowiki>
#include <Servo.h>
Servo myservo;  // create servo object to control a servo  
Servo myservo;  // create servo object to control a servo  
Servo myservo2;                // a maximum of eight servo objects can be created  
Servo myservo2;                // a maximum of eight servo objects can be created  
int Delay = 300;
  int pos = 0;   // variable to store the servo position
 
  const int buttonPin = PUSH2;   
int rythm[4] = {
  int buttonState = 0;
   0,1,1,1};
   int rithm = 0;


void hitLeft()
void hitLeft()
{
{
  myservo2.write(0);
  myservo.write(0);
}
}


void hitRight()
void hitRight()
{
{
  myservo.write(0);
  myservo2.write(0);
}
}


void liftLeft()
void liftLeft()
{
  myservo.write(30);
}
int Wait()
{
    int Time = 0;
    int time = 0;
    if(digitalRead(4) == HIGH)
    {
      while(digitalRead(4) == HIGH);
      while(digitalRead(4) == LOW);
      Time = millis();
      while(digitalRead(4) == HIGH);
      time = millis();
      Delay = time - Time;
    }
}
void liftRight()
{
{
   myservo2.write(30);
   myservo2.write(30);
}
}


void liftRight()
void liftBoth()
{
{
   myservo.write(30);
   myservo.write(0);
  myservo2.write(0);
}
}
void setup()  
void setup()  
{  
{  
   myservo.attach(P1_2);  // attaches the servo on pin 9 to the servo object  
   myservo.attach(8);  // attaches the servo on pin 9 to the servo object  
   myservo2.attach(P2_2);  
   myservo2.attach(9);
   pinMode(buttonPin, INPUT_PULLUP);  
  Serial.begin(9600);
  pinMode(4,INPUT);
   pinMode(5,INPUT);
  digitalWrite(4,LOW);
  digitalWrite(5,LOW);
}  
}  
 
void hitBoth()
{
  myservo2.write(30);
  myservo.write(30);
}
 
 
void loop()  
void loop()  
{  
{  
   int rythm = 3; //rythm 1 = slow, 2 = med and 3 = fast.
   Serial.println(Delay);
  if(rythm == 1)
   for (int i =0; i < 4; i++)
  {
   {
    hitRight();
 
    hitLeft();
    switch(rythm[i])
    delay(80);
    {
    liftRight();
    case 0:
    liftLeft();
      hitBoth();
    delay(300);
      delay(80);
    hitRight();
      liftBoth();
    delay(80);
      break;
    liftRight();
    delay(300);
    hitRight();
    delay(80);
    liftRight();
    delay(300);
    hitRight();
    delay(80);
    liftRight();
    delay(300);
   }
  if(rythm == 2)
  {
    hitRight();
    hitLeft();
    delay(80);
    liftRight();
    liftLeft();
    delay(200);
    hitRight();
    delay(80);
    liftRight();
    delay(200);
    hitRight();
    delay(80);
    liftRight();
    delay(200);
    hitRight();
    delay(80);
    liftRight();
    delay(200);
  }
  if(rythm == 3)
   {
    hitRight();
    hitLeft();
    delay(80);
    liftRight();
    liftLeft();
    delay(150);
    hitRight();
    delay(80);
    liftRight();
    delay(150);
    hitRight();
    delay(80);
    liftRight();
    delay(150);
    hitRight();
    delay(80);
    liftRight();
    delay(150);
  }
  if(rythm == 4)
  {
    hitRight();
    liftLeft();
    delay(80);
    liftRight();
    delay(80);
    hitLeft();
    delay(80);
    liftLeft();
    delay(80);
  }
}
</nowiki>


    case 1:
      hitRight();
      delay(80);
      liftRight();
      break;


    case 2:
      hitLeft();
      delay(80);
      liftLeft();
      break;
    }
    Wait();
    delay(Delay);
  }


----
}


== Contact: ==  
== Contact: ==  


komt nog
[mailto:265858@student.fontys.nl Casper van Kampen]






----
----

Huidige versie van 24 jan 2013 om 11:23


Info:

Door: Casper van Kampen & Tim Lubbers

Dit is een robot gemaakt voor het kekrobot project. De Drumrobot-D is een drumbot die muziek maakt m.b.v servomotoren. We hebben de servo's aan een houten model pop vastgemaakt en aan de servo's zitten 2 ijzeren stokjes. De servomotoren zijn gecodeerd, zodat ze op een bepaalde ritme gaan bewegen waardoor er melodieën worden gecreëerd. Wat bij ons zo speciaal is, is dat we laten zien dat je met simpele producten (blikjes, wc-rollen, vuurwerk sterretjes) een muziek opstelling kan bouwen en dat het dus niet veel geld hoeft te kosten om iets leuks te maken.



Status:

Op het moment zijn de ritmes/melodieën af. Het moet alleen nog via communicatie met andere robots zien te werken, zodat ze als een orkest spelen.



Problemen:

-De Launchpad heeft een gelimiteerde mogelijkheid tot ontwikkeling. Zo kan er geen seriale poort worden aangesproken of uitgelezen.

-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



  1. include <Servo.h>

Servo myservo; // create servo object to control a servo Servo myservo2; // a maximum of eight servo objects can be created int Delay = 300;

int rythm[4] = {

 0,1,1,1};

void hitLeft() {

 myservo.write(0);

}

void hitRight() {

 myservo2.write(0);

}

void liftLeft() {

 myservo.write(30);

}


int Wait() {

   int Time = 0;
   int time = 0;
   if(digitalRead(4) == HIGH)
   {
     while(digitalRead(4) == HIGH);
     while(digitalRead(4) == LOW);
     Time = millis();
     while(digitalRead(4) == HIGH);
     time = millis();
     Delay = time - Time;
   }

}

void liftRight() {

 myservo2.write(30);

}

void liftBoth() {

 myservo.write(0);
 myservo2.write(0);

}


void setup() {

 myservo.attach(8);  // attaches the servo on pin 9 to the servo object 
 myservo2.attach(9); 
 Serial.begin(9600);
 pinMode(4,INPUT);
 pinMode(5,INPUT);
 digitalWrite(4,LOW);
 digitalWrite(5,LOW);

}

void hitBoth() {

 myservo2.write(30);
 myservo.write(30);

}


void loop() {

 Serial.println(Delay);
 for (int i =0; i < 4; i++)
 {  
   switch(rythm[i])
   {
   case 0:
     hitBoth();
     delay(80);
     liftBoth();
     break;
   case 1:
     hitRight();
     delay(80);
     liftRight();
     break;
   case 2:
     hitLeft();
     delay(80);
     liftLeft();
     break;
   }
   Wait();
   delay(Delay);
 }

}

Contact:

Casper van Kampen