Arduino-aangedreven project.
Deze grote vinyl speler aangedreven door Arduino geluiden afgespeeld afhankelijk van de hogere / lagere delen op de 'vinyl' (houten plank). Het verschil in hoogte wordt gemeten door een potentiometer. Je bent vrij om te tweaken van het project als u wilt.
Belangrijk: Dit project was een kwestie van trial-and-error. Niet alles kan perfect en het is meer een experiment. Voel je vrij om te veranderen het proces/code als u alstublieft. Volg uw intuïtie! :)
Video:
http://www.YouTube.com/watch?v=neUZw9xFHv4&feature=Youtu.be
Benodigde materialen:
-Tape
-Arduino jumper draden (diverse)
-Genoeg houten planken om mee te werken
Gereedschap:
-Illustrator
-De Arduino (+ Processing)
-Tools om te solderen
-De freesmachine
-Lastercutter
Proces:
1. begin met het maken van een ontwerp voor uw vinyl speler. In Illustrator kunt u een cirkel met tracks in het ontwerpen. In ons project, hebben we gekozen voor twee sporen. In deze tracks ontwerpt u hogere/lagere delen. Vergeet niet om te snijden in het midden een cirkel - hier kunt u het plaatsen van een pijp die de steun om uw box met de potentiometers draai rond de mega vinyl speler.
2. Nadat u uw platte 2D ontwerp hebt gemaakt, gebruik een grote freesbank te knippen uit uw mega vinyl speler. Om u een idee van een grootte: gebruikten We 120 x 120 centimeter.
3. Oke, nu een moeilijke deel: ontwerp een manier om uw doos met potentiometer draai rond de mega vinyl speler en ondersteuning zelf. Bijvoorbeeld: gebruikten We een balk die rond de buis wordt gezet. Aan het einde van de lichtbundel gelijmd we een wiel.
4. meet de lengte tussen je twee tracks. Dit bedrag geeft u een idee hoe plaats uw potentiometers, en hoe groot uw box zal worden. Ontwerp nu een doos met uw twee potentiometers steken uit de doos. In het vak heb je de Arduino en uw jumper draden, samen met een motor schild en uw USB-kabel. We gebruiken het motor schild om het vak samen met straal natuurlijk verplaatsen.
5. Breng het allemaal samen! Wanneer u uw potentiometer in het vak hebt gelijmd, verbinden het met een stuk hout en sommige gewicht toe te voegen, zodat het altijd daalt wanneer er een verschil in hoogte (Zie de foto's). U kunt de lasercutter gebruiken om uw vak stuk hout...
6. Wanneer je denkt dat je hebt alles. Tijd om het programma!
Code:
Opmerking: De code is geknepen voortdurend. Zo zijn er een heleboel dingen in de commentaren. Voel je vrij om rond te spelen met het! ^_^
ARDUINO:
---------------
Const int
PWM_A = 3,
DIR_A = 12,
BRAKE_A = 9,
SNS_A = A0;
Boole-vlag = false;
Booleaanse Markering1 = false;
VOID Setup {}
De A-uitvoer configureren
pinMode (BRAKE_A, uitvoer); Rem pin op kanaal A
pinMode (DIR_A, uitvoer); Richting pin op kanaal A
Open seriële communicatie
Serial.begin(9600);
}
void loop {}
Instellen van de uitgangen te lopen van de motor naar voren
digitalWrite (BRAKE_A, laag); instelling van de rem laag uitschakelen motorrem
digitalWrite (DIR_A, laag); voorwaarts zal richting instellen op hoog de motor draaien
analogWrite (PWM_A, 255); Set de snelheid van de motor, de 255 is de maximumwaarde
Lees de input op analoge pin 0:
int sensorValue = analogRead(A4);
int sensorValue2 = analogRead(A5);
Serial.println(sensorValue);
Als (sensorValue > 700 & & vlag == false) {}
Serial.Print("1");
vlag = true;
}
Als (sensorValue < 700) {}
vlag = false;
}
Als (sensorValue2 > 160 & & Markering1 == false) {}
Serial.Print("2");
Markering1 = true;
}
Als (sensorValue2 < 160) {}
Markering1 = false;
}
int sensorValue2 = analogRead(A4);
de waarde die u leest uitprinten:
/ * Serial.print(sensorValue);
Serial.Print ("+"); */
Serial.Print(sensorValue);
Serial.Print(',');
Serial.Print(sensorValue2);
Serial.println();
}
VERWERKING:
---------------------
importeren van processing.serial.*;
importeren van ddf.minim.*;
importeren van themidibus.*; Importeren van de bibliotheek
MidiBus myBus; De MidiBus
AudioPlayer [] muziek = nieuwe AudioPlayer [20];
int [] nummers = nieuwe int [20];
Minim minim;
int i = 0;
int een = 0;
int b = 0;
Booleaanse play = false;
int teller = 0;
int teller2 = 0;
Seriële myPort;
int test;
Boole firstContact = false;
VOID Setup {}
println(Serial.List());
myPort = nieuwe Serial (dit, Serial.list() [4], 9600);
MidiBus.list();
cijfers [0] = 67;
nummers [1] = 71;
getallen [2] = 62;
getallen [3] = 67;
getallen [4] = 62;
getallen [5] = 71;
getallen [6] = 71;
getallen [7] = 62;
getallen [8] = 83;
getallen [9] = 67;
[10] nummers = 67;
getallen [11] = 83;
getallen [12] = 72;
getallen [13] = 83;
getallen [14] = 67;
getallen [15] = 67;
getallen [16] = 83;
getallen [17] = 81;
getallen [18] = 81;
getallen [19] = 67;
/ * int toonhoogte = int(67);
int toonhoogte = int(71);
int toonhoogte = int(62);
int toonhoogte = int(67);
int toonhoogte = int(62);
int toonhoogte = int(71);
int toonhoogte = int(71);
int toonhoogte = int(62);
int toonhoogte = int(83);
int toonhoogte = int(67); * /
Minim = nieuwe Minim(this);
Music[0]=Minim.loadFile ("1.mp3", 1024);
Music[1]=Minim.loadFile ("2.mp3", 1024);
Music[2]=Minim.loadFile ("3.mp3", 1024);
Music[3]=Minim.loadFile ("4.mp3", 1024);
Music[4]=Minim.loadFile ("5.mp3", 1024);
Music[5]=Minim.loadFile ("6.mp3", 1024);
Music[6]=Minim.loadFile ("7.mp3", 1024);
Music[7]=Minim.loadFile ("8.mp3", 1024);
Music[8]=Minim.loadFile ("9.mp3", 1024);
Music[9]=Minim.loadFile ("10.mp3", 1024);
Music[10]=Minim.loadFile ("11.mp3", 1024);
Music[11]=Minim.loadFile ("12.mp3", 1024);
Music[12]=Minim.loadFile ("13.mp3", 1024);
Music[13]=Minim.loadFile ("14.mp3", 1024);
Music[14]=Minim.loadFile ("15.mp3", 1024);
Music[15]=Minim.loadFile ("16.mp3", 1024);
Music[16]=Minim.loadFile ("17.mp3", 1024);
Music[17]=Minim.loadFile ("18.mp3", 1024);
Music[18]=Minim.loadFile ("19.mp3", 1024);
Music[19]=Minim.loadFile ("20.mp3", 1024);
myBus = nieuwe MidiBus (deze, -1, "Java Sound Synthesizer"); Maak een nieuwe MidiBus met geen invoerapparaat en de standaard Java Sound Synthesizer als het uitvoerapparaat.
}
VOID draw() {}
int kanaal = 0;
int test = getallen [teller];
int toonhoogte = int(test);
int snelheid = 127;
terwijl (myPort.available() > 0) {}
int inByte = myPort.read();
println(inByte);
if(inByte == 50) {}
println("test");
myBus.sendNoteOn (channel, toonhoogte, snelheid); Stuur een Midi noteOn
delay(200);
myBus.sendNoteOff (channel, toonhoogte, snelheid);
teller ++;
}
if(teller == 9) {}
teller = 0;
}
if(inByte == 49) {}
println(teller2);
myBus.sendNoteOn (channel, toonhoogte, snelheid); Stuur een Midi noteOn
delay(200);
myBus.sendNoteOff (channel, toonhoogte, snelheid);
teller2 ++;
}
if(teller2 == 7) {}
teller2 = 0;
}
}
}
VOID serialEvent(Serial myPort) {}
String myString = myPort.readStringUntil('\n');
Als (myString! = null) {}
//
myString = trim(myString);
//
int sensoren [] = int (split (myString, ','));
//
int een = sensoren [0];
int b = sensoren [1];
Print(a);
Print("");
Print(b);
Print("");
Print(Play);
println();
//
//
Als (een 695 > & & spelen == false) {}
Music[i].Play();
// i++;
//
spelen = true;
//
// }
//
//
Als (een < 700) {}
spelen = false;
// }
//
//
// }
//
//}
//
VOID noteOn (int channel, int worp, int snelheid) {}
Ontvangen van een noteOn
println();
println ("opmerking op:");
println("---");
println("Channel:"+Channel);
println("pitch:"+pitch);
println("Velocity:"+Velocity);
}
VOID noteOff (int channel, int worp, int snelheid) {}
Ontvangen van een noteOff
println();
println ("opmerking uit:");
println("---");
println("Channel:"+Channel);
println("pitch:"+pitch);
println("Velocity:"+Velocity);
}
VOID vertraging (int keer) {}
int huidige = millis();
while(Millis() < huidige + tijd) Thread.yield();
}