Eckart College
Hoofdpagina | Fanbot | Eckart College | Fontys Robots | Kekbot mechatronics kit | Hardware | Software&Programma's | Tips
Eckartcollege, 05/11/2012 - 25/01/2013
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);
}
}