Eckart College: verschil tussen versies

Uit KekBot
Naar navigatie springen Naar zoeken springen
Martijn (overleg | bijdragen)
Marijn (overleg | bijdragen)
 
(20 tussenliggende versies door 3 gebruikers niet weergegeven)
Regel 2: Regel 2:


=Eckartcollege, 05/11/2012 - 25/01/2013=
=Eckartcollege, 05/11/2012 - 25/01/2013=
[[Bestand:Start_kl.JPG|right|300px|frame|Robotbouwers]]<br><br><br>
== Het Team ==
== Het Team ==
===Teamleden===
===Teamleden===
Regel 12: Regel 13:


==Projectplan==
==Projectplan==
'''1 - Oriëntatie''' <br />Bekijk verschillende robots en beschrijf hoe deze robots werken. Specificeer je zoekrichting naar muziekrobots en automaten (mechanische overbrengingen vanuit één bron).
Het projectplan is in zijn geheel te downloaden via [https://www.dropbox.com/s/5ilgqmuxe0bixlb/projectplanMuziekrobot_def.pdf deze] link.
<br />'''2 - Analyse: Constructie'''<br />Onderzoek wat de beste constructie zou zijn voor de muziek robot bij verschillende bewegingen.
Zorg er voor dat deze constructie voor een goede stevigheid zorgt en het systeem soepel loopt.
<br />'''3 - Analyse: C++ en TI-launchpad'''<br />Zoek op hoe de programmeertaal C++ werkt in combinatie met de TI-launchpad. Probeer het tot de basis te beperken, en bekijk wat je misschien nodig gaat hebben.
<br />'''4 - Programma van eisen'''<br />De opdrachtgever wil graag dat je een programma van eisen opstelt voor je robots. Leg hierin vast wat de opdrachtgever wil wat je doet, en voeg daaraan je eigen eisen en wensen toe.
<br />'''5 - Muziek: Instrumenten'''<br />Kies een aantal instrumenten die je wilt gaan gebruiken met je robots. Kijk hierbij naar de haalbaarheid en de beperkingen en mogelijkheden van de eenheden voor je robot. Zorg voor wat diversiteit in je keuze.
<br />'''6 - Muziek: Lied'''<br />Kijk met je groep welk lied je de muziekrobot zou willen laten spelen, kijk hier dus goed naar welke liedjes mogelijk zijn qua complexiteit.
<br />'''7 - Ontwerpvoorstel maken'''<br />Maak een ontwerp voor de muziekrobots. Houd er rekening mee dat je ontwerp moet voldoen aan het vooraf gemaakte programma van eisen. In het ontwerpvoorstel moet je ook zorgen dat het aansluit met de instrumenten die je gaat gebruiken. De tekening moet uiteraard gemaakt worden volgens de regels die van toepassing zijn op een technische tekening. Kijk terug naar de vorige stappen, om te kijken of je nog steeds overal aan voldoet, en of je ideeën nog steeds haalbaar zijn.
<br />'''8 - Product maken: Constructie'''<br />Werk hetgene wat je in je ontwerp getekend hebt uit tot een werkend constructie.
Als je precieze onderdelen nodig hebt voor je constructie is het mogelijk om gebruik te maken van de lasersnijder en/of 3D-printer van de opdrachtgever, zorg er wel voor dat je het ontwerp van deze onderdelen zelf op de computer op orde maakt. Zorg dat je controleert of alles werkt als je klaar bent, en kijk terug of je alles toegepast hebt in je prototype.
<br />'''9 - Muziek: Lied uitschrijven'''<br />Schrijf je lied zo uit dat je weet hoe je je robot moet programmeren, kijk dus naar de ritmes en bewegingen die de robot zal moeten maken zodat je de goede klanken/noten krijgt.
<br />'''10 - Product maken: Communicatie tussen de eenheden'''<br />Programmeer een voorbeeld voor je robot om de communicatie tussen de eenheden te testen en te kijken hoe dit werkt en in elkaar zit.
<br />'''11 - Product maken: Programmeren'''<br />Programmeer de robot zo dat hij je uitgekozen lied kan spelen op de manier hoe je hem hebt uitgewerkt in deelopdracht 9. Maak hierbij ook gebruik van de kennis die je in deelopdracht 10 hebt opgedaan rondom de communicatie tussen de eenheden. Las regelmatig een moment in, om je code te testen op de robots. Hiermee voorkom je een hoop fouten.
<br />'''12 - Controle'''<br />Zorg ervoor dat alles wat er in je programma van eisen staat ook in je robot terug te vinden is.
Zorg dat alles werkt!
<br />'''13 - Eindpresentatie'''<br />Presenteer je robots aan de opdrachtgever.
 


== De Weblog ==
== De Weblog ==
In deze weblog zullen wij de vooruitgang van ons project bijhouden.
In deze weblog zullen wij de vooruitgang van ons project bijhouden.


===Oriëntatie===
===Vooronderzoek===
====Oriëntatie====
Bij de oriëntatie hebben wij gekeken naar:
Bij de oriëntatie hebben wij gekeken naar:
<br />- [http://www.youtube.com/watch?v=IwuiOwZrzCM&feature=context-cha De piano spelende robot]
<br />- [http://www.youtube.com/watch?v=IwuiOwZrzCM&feature=context-cha De piano spelende robot]
Regel 46: Regel 32:
<br />19 nov 2012 12:46 (CET)
<br />19 nov 2012 12:46 (CET)


===Analyse: Constructie===
====Analyse: Constructie====
''Moet nog komen''
''Moet nog komen''


===Analyse: C++ en TI-launchpad===
====Analyse: C++ en TI-launchpad====
====TI-launchpad====
=====TI-launchpad=====
Technische info
Technische info
<br />Processor:
<br />Processor:
Regel 67: Regel 53:
<br />GPIO (General Purpose Input/Output)
<br />GPIO (General Purpose Input/Output)


[[Bestand:M430G2553.jpg|thumb|De pinwaardes volgens Energia voor de M430G2553]]
<br />21 nov 2012 14:09 (CET)


====C++====
=====C++=====
''Moet nog komen''


===Programma van eisen===
====Programma van eisen====
''Moet nog komen''
''Moet nog komen''
====Muziek: Instrumenten====
We zijn met elkaar gaan brainstormen over mogelijke instrumenten die we voor ons project kunnen gebruiken, hoe we deze zullen gaan gebruiken en hoeveel servo's ieder instrument krijgt.
<br />Uiteindelijk zijn we op de volgende instumenten gekomen:
<br />- Chimes - 2 servo's
<br />- Trom - 2 servo's
<br />- Keybord - 2 servo's
<br />23 nov 2012 15:17 (CET)
====Muziek: Lied====
We hebben verschillende liederen met een mogelijke complexiteit opgezocht.
<br />Uiteindelijk hebben we met het team voor het lied [http://www.youtube.com/watch?v=QzntZLHcYy0&feature=fvwrel Star Wars "Imperial March" Vader Theme]gekozen.
<br />Dit lied hebben we gekozen van wegen de goed haalbare complexiteit van het lied en zijn langzame ritme.
<br />28 nov 2012 13:50 (CET)
====Programma====
'''Drumrobot'''
<syntaxhighlight>
#include <Servo.h>
//aanmaken variabelen
int Pressedbutton = 0; Servo motorL;
Servo motorR;
//aanwijzen van pinnen aan variabelen
void setup() {               
  motorL.attach(13);
  motorR.attach(10);
  pinMode(14, OUTPUT); //led
  pinMode(5, INPUT_PULLUP); //knop
  digitalWrite(14, LOW);
  //tempo = (60/80)*1000;
 
  pinMode(6, OUTPUT); // IR
  pinMode(2, OUTPUT); // R LED
 
  pinMode(7,INPUT_PULLUP);
 
   
}
//subs voor aansturing motoren
void L() {
laden1L();
delay(125);
gat1L();
delay(125);
}
void R()
{
laden1R();
delay(125);
// IR();
gat1R();
delay(125);
}
//subs voor nog specifiekere bewegingen
void gat1L () {
  motorL.write(90);
}
void gat1R () {
motorR.write(75);
}
void laden1R () {
  motorR.write(112);
}
void laden1L () {
  motorL.write(112);
}
//sub voor het ontvangen van het ritme, niet gebruikt wegens conflict tussen servo.h en ir.h
void IR() {
    //digitalWrite(2,LOW); // zet rode LED UIT
    //tone(6,36000,1);
}
//het lied
void lied() {
  R(); // maat 1
  delay(600);
  L();
  delay(650);
  R();
  delay(500);
  L();
  delay(250);
  R();
  delay(30);
  L();
  //delay(600);
 
  //R(); // maat 2
  delay(600);
  R();
  delay(250);
  L();
  delay(20);
  R();
  //delay(150);
  //R();
  delay(1200);
}
//de loop met daarin detectie voor de knop en infrarood
void loop() {
  if (digitalRead(5) == LOW || digitalRead(7) == LOW) //controle knop OF IR
  {
    if (Pressedbutton == 1)
    {
      Pressedbutton = 0;
      digitalWrite(14, LOW);
     
    } else {
      digitalWrite(14, HIGH);
      lied();     
      Pressedbutton = 1;
    }
  }
  if (Pressedbutton == 1)
  {
    lied();
  }
}
</syntaxhighlight>
----
'''Xylofoonrobot''' veel van de code komt overeen met de code van de drumrobot. Voor xylofoonrobot specifieke onderdelen is commentaar toegevoegd.
<syntaxhighlight>
#include <Servo.h>
int Pressedbutton = 0;
Servo motorL;                   
Servo motorR;
void setup() {               
  motorR.attach(10);
  motorL.attach(13);
  pinMode(14, OUTPUT);
  pinMode(5, INPUT_PULLUP);
  digitalWrite(14, LOW);
 
  pinMode(6, OUTPUT); // IR
  pinMode(2, OUTPUT); // R LED
 
  pinMode(7,INPUT_PULLUP);
  n6(); //reset(positie) van de robot
   
}
//Alle noten, komt overeen met de nummers op de 'xylofoonplankjes'.
void n1() {
motorR.write(130);
motorL.write(20);
delay(100);
motorL.write(10);
delay(100);
motorL.write(20); 
}
void n2() {
motorR.write(120);
motorL.write(20);
delay(100);
motorL.write(10);
delay(100);
motorL.write(20); 
}
void n3() {
motorR.write(110);
motorL.write(20);
delay(100);
motorL.write(10);
delay(100);
motorL.write(20); 
}
void n4() {
motorR.write(100);
motorL.write(20);
delay(100);
motorL.write(0);
delay(100);
motorL.write(20); 
}
void n5() {
motorR.write(90);
motorL.write(20);
delay(100);
motorL.write(0);
delay(100);
motorL.write(20); 
}
void n6() {
motorR.write(70);
motorL.write(20);
delay(100);
motorL.write(10);
delay(100);
motorL.write(20);
}
void n7() {
motorR.write(60);
motorL.write(20);
delay(100);
motorL.write(10);
delay(100);
motorL.write(20); 
}
void n8() {
motorR.write(45);
motorL.write(20);
delay(200);
motorL.write(5);
delay(100);
motorL.write(20); 
}
void n9() {
motorR.write(25);
motorL.write(20);
delay(100);
motorL.write(10);
delay(100);
motorL.write(20); 
}
void n10() {
motorR.write(10);
motorL.write(20);
delay(100);
motorL.write(10);
delay(100);
motorL.write(20); 
}
void n11() {
motorR.write(10);
motorL.write(20);
delay(100);
motorL.write(10);
delay(100);
motorL.write(20); 
}
void n12() {
motorR.write(5);
motorL.write(20);
delay(100);
motorL.write(10);
delay(100);
motorL.write(20); 
}
void n13() {
motorR.write(0);
motorL.write(20);
delay(100);
motorL.write(10);
delay(100);
motorL.write(20); 
}
void IR() {
    //digitalWrite(2,LOW); // zet rode LED UIT
    //tone(6,36000,1);
}
void lied() {
  n6();
  delay(600);
  n6();
  delay(600);
  n6();
  delay(600);
  n5();
  delay(400);
  n7();
  delay(100);
  n6();
  delay(400);
  n5();
  delay(100);
  n7();
  delay(100);
  n6();
  delay(600);
  n9();
  delay(600);
  n9();
  delay(600);
  n9();
  delay(400);
  n10();
  delay(100);
  n8();
  delay(100);
  n6();
  delay(600);
  n5();
  delay(400);
  n7();
  delay(100);
  n6();
  delay(600);
}
void loop() {
  if (digitalRead(5) == LOW || digitalRead(7) == LOW)
  {
    if (Pressedbutton == 1)
    {
      Pressedbutton = 0;
      digitalWrite(14, LOW);
     
    } else {
      digitalWrite(14, HIGH);
      lied();     
      Pressedbutton = 1;
    }
  }
  if (Pressedbutton == 1)
  {
    lied();
  }
}
</syntaxhighlight>
----
'''Basic programmaatje voor de 'afstandsbediening''''
<syntaxhighlight>
void setup()
{
  // LED op pin 14
  pinMode(14,OUTPUT);
  // IR led op pin 6
  pinMode(6,OUTPUT);
  // IR sensor
  pinMode(7,INPUT_PULLUP);
  // Knopje
  pinMode(5,INPUT_PULLUP);
}
void loop()
{
  if (digitalRead(5) == LOW) {
    tone(6,36000,1); 
    delay(100);
  }
}
</syntaxhighlight>

Huidige versie van 18 feb 2013 om 10:52

Hoofdpagina | Fanbot | Eckart College | Fontys Robots | Kekbot mechatronics kit | Hardware | Software&Programma's | Tips


Eckartcollege, 05/11/2012 - 25/01/2013

Robotbouwers




Het Team

Teamleden

- Sibren Vuurberg
- Marijn Rombouts
- Martijn Schendstok

Hoe komen wij aan deze opdracht

Voor het Technasium, ook bekend als het vak O&O (Onderzoeken en Ontwerpen), moeten wij onze eigen opdracht zoeken. Wij hebben binnen het team gekeken wat iedereen interessant vond en waren op robotica in het algemeen uitgekomen. Met deze zoekrichting hebben wij de robotica afdeling TU/e gemaild, dr.ir. J.H. Sandee heeft ons als reactie hier op naar mevrouw Marieke Peelen van Kekbot door verwezen, met haar opdracht 'De Trompbot.'

Projectplan

Het projectplan is in zijn geheel te downloaden via deze link.

De Weblog

In deze weblog zullen wij de vooruitgang van ons project bijhouden.

Vooronderzoek

Oriëntatie

Bij de oriëntatie hebben wij gekeken naar:
- De piano spelende robot
- Intel's Industrial Control in Concert
- Eight floppy drives
- The flawless flautist
- LEMUR’s Guitar Bot
- Karmatik Machine Orchestra
- Toyota muziek robots
- Team dare


19 nov 2012 12:46 (CET)

Analyse: Constructie

Moet nog komen

Analyse: C++ en TI-launchpad

TI-launchpad

Technische info
Processor:
- MSP430G2553IN20 – 16kB Flash, 512B RAM, interruptible GPIOs (capacitive sense-capable), 16-bit timers, 8ch 10-bit ADC, Comparator, Serial Communication (USCI – I2C, SPI & UART)
- MSP430G2452IN20 - 8kB Flash, 256B RAM, interruptible GPIOs (capacitive sense-capable), 16-bit timers, 8ch 10-bit ADC,
Comparator, Serial Communication (USI – I2C & SPI)
Connectors: 2x 10-pin PCB connectors (male), USB-mini
Servo: Torque: 1kg @ 4.8v, 1.2kg @ 6v
Weight: 8g
Speed: 0.14 / 60deg @4.8v, 0.12 / 60deg @ 6v
Voltage:4.8v~6v
Motor type: Coreless
Plug: JR Style


Voor het gebruik van dit bord gebruiken we de us de MSP430G2553IN20 microcontroller. Deze chip is sneller dan zijn kleine broertje die ook in het doosje aanwezig is. Deze controller bevat meer werkgeheugen (256 Bytes meer) en heeft ook een dubbele hoeveelheid opslagruimte. Beide controllers draaien op 16MHz.


GPIO (General Purpose Input/Output)


21 nov 2012 14:09 (CET)

C++

Moet nog komen

Programma van eisen

Moet nog komen

Muziek: Instrumenten

We zijn met elkaar gaan brainstormen over mogelijke instrumenten die we voor ons project kunnen gebruiken, hoe we deze zullen gaan gebruiken en hoeveel servo's ieder instrument krijgt.


Uiteindelijk zijn we op de volgende instumenten gekomen:
- Chimes - 2 servo's
- Trom - 2 servo's
- Keybord - 2 servo's


23 nov 2012 15:17 (CET)

Muziek: Lied

We hebben verschillende liederen met een mogelijke complexiteit opgezocht.
Uiteindelijk hebben we met het team voor het lied Star Wars "Imperial March" Vader Themegekozen.
Dit lied hebben we gekozen van wegen de goed haalbare complexiteit van het lied en zijn langzame ritme.


28 nov 2012 13:50 (CET)

Programma

Drumrobot

#include <Servo.h>

//aanmaken variabelen

int Pressedbutton = 0; Servo motorL; 
Servo motorR;

//aanwijzen van pinnen aan variabelen
void setup() {                
  motorL.attach(13);
  motorR.attach(10);
  pinMode(14, OUTPUT); //led
  pinMode(5, INPUT_PULLUP); //knop
  digitalWrite(14, LOW);
  //tempo = (60/80)*1000;
  
  pinMode(6, OUTPUT); // IR
  pinMode(2, OUTPUT); // R LED
  
  pinMode(7,INPUT_PULLUP);
  
    
}
//subs voor aansturing motoren 
void L() { 
 laden1L();
 delay(125);
 gat1L();
 delay(125);
}

void R()
{
 laden1R();
 delay(125);
// IR();
 gat1R();
 delay(125);
}

//subs voor nog specifiekere bewegingen
void gat1L () {
  motorL.write(90);
}

void gat1R () {
 motorR.write(75); 
}

void laden1R () {
  motorR.write(112);
}


void laden1L () {
  motorL.write(112);
}

//sub voor het ontvangen van het ritme, niet gebruikt wegens conflict tussen servo.h en ir.h
void IR() {
    //digitalWrite(2,LOW); // zet rode LED UIT
    //tone(6,36000,1);
}

//het lied
void lied() {
  R(); // maat 1
  delay(600);
  L();
  delay(650);
  R();
  delay(500);
  L();
  delay(250);
  R();
  delay(30);
  L();
  //delay(600);
  
  //R(); // maat 2
  delay(600);
  R();
  delay(250);
  L();
  delay(20);
  R();
  //delay(150);
  //R();
  delay(1200);
}

//de loop met daarin detectie voor de knop en infrarood
void loop() {
  if (digitalRead(5) == LOW || digitalRead(7) == LOW) //controle knop OF IR 
  {
    if (Pressedbutton == 1)
    {
       Pressedbutton = 0; 
       digitalWrite(14, LOW);
       
    } else {
       digitalWrite(14, HIGH);
       lied();      
       Pressedbutton = 1; 
    }
  }
  if (Pressedbutton == 1)
  {
    lied();
  }
}

Xylofoonrobot veel van de code komt overeen met de code van de drumrobot. Voor xylofoonrobot specifieke onderdelen is commentaar toegevoegd.

#include <Servo.h>

int Pressedbutton = 0;
Servo motorL;                     
Servo motorR;

void setup() {                
  motorR.attach(10);
  motorL.attach(13);
  pinMode(14, OUTPUT); 
  pinMode(5, INPUT_PULLUP);
  digitalWrite(14, LOW);
  
  pinMode(6, OUTPUT); // IR
  pinMode(2, OUTPUT); // R LED
  
  pinMode(7,INPUT_PULLUP);
  n6(); //reset(positie) van de robot
    
}

//Alle noten, komt overeen met de nummers op de 'xylofoonplankjes'.
void n1() {
 motorR.write(130);
 motorL.write(20);
 delay(100);
 motorL.write(10);
 delay(100);
 motorL.write(20);  
}

void n2() {
 motorR.write(120);
 motorL.write(20);
 delay(100);
 motorL.write(10);
 delay(100);
 motorL.write(20);  
}

void n3() {
 motorR.write(110);
 motorL.write(20);
 delay(100);
 motorL.write(10);
 delay(100);
 motorL.write(20);  
}

void n4() {
 motorR.write(100);
 motorL.write(20);
 delay(100);
 motorL.write(0);
 delay(100);
 motorL.write(20);  
}

void n5() {
 motorR.write(90);
 motorL.write(20);
 delay(100);
 motorL.write(0);
 delay(100);
 motorL.write(20);  
}

void n6() {
 motorR.write(70);
 motorL.write(20);
 delay(100);
 motorL.write(10);
 delay(100);
 motorL.write(20);
}

void n7() {
 motorR.write(60);
 motorL.write(20);
 delay(100);
 motorL.write(10);
 delay(100);
 motorL.write(20);  
}

void n8() {
 motorR.write(45);
 motorL.write(20);
 delay(200);
 motorL.write(5);
 delay(100);
 motorL.write(20);  
}

void n9() {
 motorR.write(25);
 motorL.write(20);
 delay(100);
 motorL.write(10);
 delay(100);
 motorL.write(20);  
}

void n10() {
 motorR.write(10);
 motorL.write(20);
 delay(100);
 motorL.write(10);
 delay(100);
 motorL.write(20);  
}

void n11() {
 motorR.write(10);
 motorL.write(20);
 delay(100);
 motorL.write(10);
 delay(100);
 motorL.write(20);  
}

void n12() {
 motorR.write(5);
 motorL.write(20);
 delay(100);
 motorL.write(10);
 delay(100);
 motorL.write(20);  
}

void n13() {
 motorR.write(0);
 motorL.write(20);
 delay(100);
 motorL.write(10);
 delay(100);
 motorL.write(20);  
}

void IR() {
    //digitalWrite(2,LOW); // zet rode LED UIT
    //tone(6,36000,1);
}

void lied() {
  n6();
  delay(600);
  n6();
  delay(600);
  n6();
  delay(600);
  n5();
  delay(400);
  n7();
  delay(100);
  n6();
  delay(400);
  n5();
  delay(100);
  n7();
  delay(100);
  n6();
  delay(600);
  n9();
  delay(600);
  n9(); 
  delay(600);
  n9();
  delay(400);
  n10();
  delay(100);
  n8();
  delay(100);
  n6();
  delay(600);
  n5();
  delay(400);
  n7();
  delay(100);
  n6();
  delay(600); 
}

void loop() {
  if (digitalRead(5) == LOW || digitalRead(7) == LOW)
  {
    if (Pressedbutton == 1)
    {
       Pressedbutton = 0; 
       digitalWrite(14, LOW);
       
    } else {
       digitalWrite(14, HIGH);
       lied();      
       Pressedbutton = 1; 
    }
  }
  if (Pressedbutton == 1)
  {
    lied();
  }
}



Basic programmaatje voor de 'afstandsbediening'

void setup()
{
  // LED op pin 14
  pinMode(14,OUTPUT);
  // IR led op pin 6
  pinMode(6,OUTPUT);
  // IR sensor
  pinMode(7,INPUT_PULLUP);
  // Knopje
  pinMode(5,INPUT_PULLUP);
}

void loop()
{
  if (digitalRead(5) == LOW) {
    tone(6,36000,1);  
    delay(100);
  }
}