Mega vinyl spelare
Arduino-drivna projekt.
Denna stora vinyl spelare drivs av Arduino spelar ljud beroende på högre / lägre delarna på vinyl (planka). Skillnaden i höjd mäts av en potentiometer. Du kan justera projektet som du vill.
Viktigt: Detta projekt var en fråga om trial-and-error. Kan inte allt vara perfekt och det är mer av ett experiment. Känn dig fri att ändra processen/koden som du vänligen. Följ din intuition! :)
Video:
http://www.youtube.com/watch?v=neUZw9xFHv4&feature=youtu.be
Material som krävs:
-Tape
-Arduino hoppare ledningar (en hel)
-Nog plankor att arbeta med
Verktyg som behövs:
-Illustratör
-Arduino (+ behandling)
-Verktyg för att löda
-Fräsmaskin
-Lastercutter
Process:
1. börja med att göra en design för din vinyl spelare. I Illustrator kan du designa en cirkel med spår i det. I vårt projekt, har vi valt för två spår. Du kan utforma dessa spår, högre/lägre delar. Glöm inte att klippa en cirkel i mitten - här kan du placera ett rör som ger stöd till göra din låda med potentiometrar vända mega vinyl-spelare.
2. När du har gjort din platt 2D design, Använd en stor fräsmaskin skära ut din mega vinyl spelare. Att ge dig en idé om en storlek: vi använde 120 x 120 centimeter.
3. Okej, nu en svår del: Design ett sätt att göra din låda med potentiometer vända mega vinyl-spelare och stötta sig. Till exempel: vi använde en stråle som sätts runt röret. I slutet av balken limmade vi ett hjul.
4. Mät längden mellan dina två spår. Detta belopp ger dig en uppfattning hur du placerar din potentiometrar, och hur stor blir din box. Nu utforma en låda med dina två potentiometrar som sticker upp ur lådan. I rutan har du Arduino och din hoppare ledningar, tillsammans med en motor sköld och din USB-kabel. Vi använder den motoriska skölden för att göra rutan tillsammans med beam flytta naturligtvis.
5. ta det alla tillsammans! När du har limmats din potentiometer i rutan, ansluta en träbit till den och lägga till lite vikt på det, så att det droppar alltid när det finns en skillnad i höjd (se bilderna). För att göra din box, träbit, kan du använda lasercutter...
6. När du tror att du har allt. Dags att programmet!
Kod:
Obs: Koden har varit välkommern ständigt. Så finns det en massa saker i kommentarerna. Känn dig fri att leka med det! ^_^
ARDUINO:
---------------
CONST int
PWM_A = 3,
DIR_A = 12,
BRAKE_A = 9,
SNS_A = A0;
boolesk flagga = false;
boolesk flagga 1 = false;
void setup() {
Konfigurera A utdata
pinMode (BRAKE_A, OUTPUT); Broms stift på kanal A
pinMode (DIR_A, OUTPUT); Riktning pin på kanal A
Öppna seriell kommunikation
Serial.BEGIN(9600);
}
void loop() {
Ställa utgångarna att köra motorn fram
digitalWrite (BRAKE_A, låg); ställa in bromsen låg inaktivera motor broms
digitalWrite (DIR_A, låg); anger riktningen till hög motorn kommer att snurra fram
analogWrite (PWM_A, 255); Hastigheten på motorn, 255 är maxvärdet
Läs input på analoga stift 0:
int sensorValue = analogRead(A4);
int sensorValue2 = analogRead(A5);
Serial.println(sensorValue);
om (sensorValue > 700 & & flagga == false) {
Serial.Print("1");
flagga = sant;
}
om (sensorValue < 700) {
flagga = false;
}
om (sensorValue2 > 160 & & Företagsflagga 1 == false) {
Serial.Print("2");
Fälten Företagsflagga 1 = sant;
}
om (sensorValue2 < 160) {
Fälten Företagsflagga 1 = false;
}
int sensorValue2 = analogRead(A4);
skriva ut värdet du läsa:
/ * Serial.print(sensorValue);
Serial.Print ("+"); */
Serial.Print(sensorValue);
Serial.Print(',');
Serial.Print(sensorValue2);
Serial.println();
}
BEARBETNING:
---------------------
import processing.serial.*;
import ddf.minim.*;
import themidibus.*; Importera bibliotek
Midibussar myBus; Midibussar
AudioPlayer [] musik = nya AudioPlayer [20].
int [] nummer = nya int [20].
Minim minim;
int jag = 0;
int en = 0;
int b = 0;
booleska play = false;
int teller = 0;
int teller2 = 0;
Seriella myPort;
int-test.
Booleska firstContact = false;
void setup() {
println(Serial.list());
myPort = ny följetong (denna, Serial.list() [4], 9600);
MidiBus.list();
nummer [0] = 67;
nummer [1] = 71.
nummer [2] = 62;
nummer [3] = 67;
nummer [4] = 62;
nummer [5] = 71.
nummer [6] = 71.
nummer [7] = 62;
nummer [8] = 83.
nummer [9] = 67;
nummer [10] = 67;
nummer [11] = 83.
nummer [12] = 72.
nummer [13] = 83.
nummer [14] = 67;
nummer [15] = 67;
nummer [16] = 83.
nummer [17] = 81.
nummer [18] = 81.
nummer [19] = 67;
/ * int pitch = int(67);
int pitch = int(71);
int pitch = int(62);
int pitch = int(67);
int pitch = int(62);
int pitch = int(71);
int pitch = int(71);
int pitch = int(62);
int pitch = int(83);
int pitch = int(67); * /
Minim = nya 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 = ny midibussar (detta, -1, "Java ljud Synthesizer"); Skapa en ny midibussar med ingen inmatningsenheten och standard Java ljud Synthesizer som utdataenheten.
}
void draw() {
int kanal = 0;
int test = tal [teller];
int pitch = int(test);
int hastighet = 127;
samtidigt (myPort.available() > 0) {
int inByte = myPort.read();
println(inByte);
IF(inByte == 50) {
println("test");
myBus.sendNoteOn (kanal, pitch, velocity); Skicka en MIDI-noteOn
Delay(200);
myBus.sendNoteOff (kanal, pitch, velocity);
Teller ++;
}
IF(Teller == 9) {
Teller = 0;
}
IF(inByte == 49) {
println(teller2);
myBus.sendNoteOn (kanal, pitch, velocity); Skicka en MIDI-noteOn
Delay(200);
myBus.sendNoteOff (kanal, pitch, velocity);
teller2 ++;
}
IF(teller2 == 7) {
teller2 = 0;
}
}
}
void serialEvent(Serial myPort) {
String myString = myPort.readStringUntil('\n');
om (myString! = null) {
//
myString = trim(myString);
//
int sensorer [] = int (split (myString, ","));
//
int en = sensorer [0];
int b = givare [1].
Print(a);
Print("");
Print(b);
Print("");
Print(Play);
println();
//
//
om (en > 695 & & spela == false) {
Music[i].Play();
// i++;
//
spela = sant;
//
// }
//
//
om (en < 700) {
spela = false;
// }
//
//
// }
//
//}
//
void noteOn (int kanal, int pitch, int hastighet) {
Ta emot en noteOn
println();
println ("anteckning på:");
println("---");
println("Channel:"+Channel);
println("pitch:"+pitch);
println("Velocity:"+Velocity);
}
void noteOff (int kanal, int pitch, int hastighet) {
Ta emot en noteOff
println();
println ("OBS Off:");
println("---");
println("Channel:"+Channel);
println("pitch:"+pitch);
println("Velocity:"+Velocity);
}
{Ogiltig fördröjning (int tid)
int nuvarande = millis();
While(Millis() < aktuella + tid) Thread.yield();
}