Dragspel Master - en python/arduino musik synt (2 / 3 steg)

Steg 2: Konfigurera Arduino

Gränssnitt med accelerometern

Anslut accelerometern till arduino styrelsen. Om du använder ADXL335 ansluta stift märkt ST på analoga pin 0, Z till analoga stift 1, Y till analoga stift 2, X till analoga stift 3, GND till analog pinne 4 och VCC till analoga stift 5. Om du går vilse i någon plats, bara hänvisa till den

datablad. Datablad tenderar alltid att den täta sidan, men de är värda en nära scan.

Pin-ST är irrelevant för vårt projekt, X-Y-Z stiften utgång rådata, GND PIN-koden är marken (logiska låg eller 0 volt), VCC är nätaggregatet för accelerometern (logiska hög). Följande kod ställer detta in i arduino.

Definiera variabler används för att bearbeta raw accelerometer värden
int x, y, z, mag;
int xPrev, yPrev, zPrev;

Konstant för lågpassfilter
CONST double k = 0.8f;

Definiera stift för ADXL335
CONST int xPin = 1;
CONST int yPin = 2;
CONST int zPin = 3;
CONST int vcc = A5;
CONST int gnd = A4;

void setup() {
Standard överföringshastigheten
Serial.BEGIN(9600);
pinMode (vcc, produktionen);
digitalWrite (vcc, hög);
pinMode (gnd, produktionen);
digitalWrite (gnd, låg);

Initiera variabler
x = 0;
y = 0;
z = 0;
xPrev = 0;
yPrev = 0;
zPrev = 0;
}

Vi använder sedan funktionen analogRead(pin) , där "pin" är någon av 3 stift dvs xPin, yPin eller zPin definieras ovan för att läsa ett värde mellan 0-1024 som lär oss värdet av acceleration som läses.

Så låt oss börja läsa dessa värden!

Filtrering

Detta är egentligen ganska knepigt eftersom behandlingen acceleration från en (relativt) billig del av maskinvaran som ADXL335 är problematiskt. Typ av signal som du kommer att få från accelerometern kommer att vara fullspäckad med signal brus. Detta innebär att nya accelerometer värden är inte att lita, och så vi använder ett filter. I detta fall använder vi en Low Pass Filter

. Vi vill endast tillåta lågfrekventa signaler kan passera genom, värden som inte skiljer sig alltför mycket från tidigare behandlingarna. Obs: även med komplicerade filtrering, felmarginalen från en billig accelerationsmätare kommer att vara hög, så att integrera över tiden för att få hastighet och position från accelerometern kommer att förvärra felet - värdena vi får kommer inte vara exakt alls. Det finns också överväganden för drift bias kan göras, men för det är utanför omfånget för denna tutorial. Att göra känsla av bullriga data är ett fält till en egen! Så låt oss hålla det enkelt för nu.

Vi lägger detta till våra program loop():

void loop() {
Applicera en Low Pass Filter på den råa signalen
x = k * xPrev + (1-k)*(analogRead(xPin) - xAvg);
y = k * yPrev + (1-k)*(analogRead(yPin) - yAvg);
z = k * zPrev + (1-k)*(analogRead(zPin) - zAvg);

Beräkna omfattningen av kraften för detta särskilda genomförande
mag = (int) sqrt (x * x + y * y + z * z);

Uppdatera värden för nästa iteration
xPrev = x;
yPrev = y;
zPrev = z;
}

Vi definierade "k" ovanför setup(). Detta är en filtrering konstant. Känn dig fri att justera denna konstant men bo inom intervallet 0,5 < k < 1. Högre värden innebär vi lita nya värden ännu mindre, och så att de har mindre effekt på vår nästa iteration, detta är vad vi vill. Du kan också märka xAvg, yAvg och zAvg. Detta är från en kalibrera funktion, så låt oss diskutera detta nu.

Utan någon form av kalibrering kommer accelerometern vanligtvis spotta ut värden från mitt urval av 0-1024. Detta är inte till stor hjälp för oss eftersom vi vill den relativa ändringen i acceleration från vissa referenspunkt, den accelerometer startpositionen. Varje gång arduino startar upp, vi kör funktionen calibrate(). Det är absolut nödvändigt att arduino styrelsen vara ensam under tiden, alla trängdes av accelerometern kommer upprörd riktigheten av kalibrering.

Lägg till detta till slutet av arduino koden:

Funktion för att åter noll acceleremeter, fynd genomsnitt

void calibrate() {
int i;
xAvg = 0;
yAvg = 0;
zAvg = 0;

för (jag = 0; jag < calCount; i ++) {
Läste i den orena rådata sset
xAvg += analogRead(xPin);
yAvg += analogRead(yPin);
zAvg += analogRead(zPin);
}

Få genomsnittligt
xAvg = xAvg / calCount;
yAvg = yAvg / calCount;
zAvg = zAvg / calCount;

Delay(100);
}

I slutet av dagen är kalibreringen egentligen bara en enkel genomsnitt vi hamnar subtraheras från våra raw värderingar. Ingen fanciness här.

Strömmande rå Data tolkas

Slutföra koden: https://github.com/aehernandez/Accordion-Master/bl...

Se Steg
Relaterade Ämnen

Python/Arduino seriella styrenheten: Hemlagad masugn

Det som började som ett enkelt projekt att göra en liten bränning behållare för keramik experiment spiral utom kontroll i en skrot-konstruerade, kontrollerad CPU, syre-insprutning miniatyr masugn.Det färdiga projektet kombinerar ett GUI-gränssnitt, I...

Låt oss göra Arduino musik

HejSimpleCircuit här med ett enkelt musikaliska projekt. Detta Instructable är en förlängning av flera tidigare Instructables och tutorials, så ett tips på hatten till "Arduino-musik" och "Demotime – Arduino Music" av Misperry, "H...

Beverly-kross: lite krossning. 1 bit Arduino musik.

Jag hade letat efter ett verktyg för att konvertera ljud ner till 1-bitars djup men gav upp och skrev min egen. Stödjer export för Arduino skiss.Jag erbjuder här en ljud-krossning program som även gör exporterar till arduino skiss extremt lätt så att...

Arduino - musik

i den här videon kommer vi att titta på hur man får arduino att spela musik. Denna video kommer också att ett förspel till hur man gör samma sak med hjälp av en enkel pic mikrokontroller.Arduino exempelkod:http://Arduino.cc/en/tutorial/Tone...

Python + Arduino, CarControl v.03

har du någonsin köpt något bara för att ta isär? Jag köpte denna fjärrkontroll bil hoppas att köra den från min dator. Jag använde Python, en Arduino ombord och ca 300 rader kod. Tog mig ett par timmar att få ihop och ett annat par att tolerera denna...

Arduino musik starter

Arduino är en av de snyggaste microcontrollers. För nåt såenkelt, det kan göra en otrolig mängd projekt. Ett sådant projekt som intresserade mig var Digital melodi projektet. Om du har en den Arduinos där Atmel chip kan tas bort, kan du göra ditt ege...

Arduino Master Modbus RTU Scada industriella anslutning

Detta bevis trots att simulera andra genomförda tester i tidigare inlägg genomförs Arduino och protokoll Modbus RTU seriell master-läge, är det första steget för att ansluta arduino en miljö Scada industri kommer vi se mer innan du implementerar Modb...

Intel Edison Sensor Dashboard med fribord/Python/kolv (minimal programmering krävs)

Först ville jag säga tack för möjligheten att arbeta med en Edison och ges en vid Intel/Instructables för att ange deras IoT tävling. Jag tror att detta är ett bra sätt att göra samhällsbyggande och uppmuntra utvecklare att få engagerade och ombord....

Intellekten Edison Sun Station (UV och Temp) med Python #IntelMakerMx

Vi ska använda våra Intel Edison med en Arduino shield och en grove sköld för att ansluta så många sensorer som du vill.GitHub: https://github.com/Kurtz1993/iot-roadshowSteg 1: Kommunicera med våra Edison genom en seriell COM Första, låt oss kommunic...

Min PLC Panasonic FPX C14 R och Arduino

Jag presenterar den FP-X serien av Panasonic (Nais - Aromat) efterföljaren till FP1 serien med en optimerad rörelse kontrollsystem minskat och ökat minnesstorlek och hastighet bearbetning värde har en varidade av kassetten för kommunikation i Etherne...

Android G1 följetong till Arduino Robot

lära sig hur din Android mobiltelefon kan styra en robot med en Arduino ombord. Telefonen tar kommandon via telnet från en annan telefon eller en PC, så kan du fjärrstyra roboten. Detta projekt kommer annars inte ändra G1 så du kan fortsätta använda...

Fisk Feeder Arduino Raspberry Pi länk

"Vad en tråkig svart låda"Ja det är, men:– Det matar mina fiskar när inte jag är där.-Den lever vid en fördefinierad tidpunkt.– Det känner av den mat som ges till fisken– Du kan logga in distans till raspberry pi att se status.– Det kan skicka e...

Arduino-baserad ledar-tar tid för skolor

om din skola, eller barn skola eller annan plats utnyttjar en central master klocka som är bruten, du kan ha en användning för den här enheten. Nya master klockor finns naturligtvis, men skolan budgetar är under extrema påfrestningar och det verklige...

TweeToy av Raspberry pi med Python

Jag skapade en leksak som talar somebody's tweets med Raspberry Pi.Denna leksak fångster objekt av avstånd sensor och sedan göra ljud (Tweet).Arkitekturen är mycket enkel. För att få Tweets, bara med hjälp av twitter api för python. Och spela upp lju...

Arduino Tone Music

Detta är en Arduino projekt som använder inhemska tonen generera förmåga Arduino för att göra musik. Du kan använda den skiss som började komponera musik i ditt eget! Göra det spela "Happy Birthday" för en vän. Här ser du hur man gör musik med d...

PS3 Controlled Arduino Based Hovercraft (Bluetooth) by Micrazysoft

IntroduktionKommersiella svävare är dyrt, så vi byggde en hemmagjord svävare. Vår svävare kan gå rak och stänga via PS3-handkontrollen. Detta Instructable lär dig att bygga en DIY svävare med en PS3-handkontrollen. Kräver de grundläggande färdigheter...

Arduino Laser gitarr

Här är det! Den och enda Instructable du någonsin behöver. Arduino Laser gitarr.Vad du behöver:-10 k motstånd-Laser Module (Sparkfun.com)-Ljussensorer (Amazon.com)-Wire (Mine bärgades från gamla USB-kablar)På/av-knappen (Amazon.com)-Arduino Uno (Amaz...

Elektroniska LEGO Super Mario Bros. svamp

Inlämnad för godkännande av Instructables samhället, ge jag dig ett annat elektroniska LEGO projekt med en retro videospel tema!Använda exakt samma principer för design och konstruktion som min Elektroniska Super Mario Starmen, har jag byggt en annan...

Electronic LEGO Super Mario Starman

Detta är ett roligt och unikt projekt att jag inledningsvis började byggnaden strax efter utgivningen av min Elektroniska LEGO Star Wars DL-44 Blaster Pistol --vilket innebär naturligtvis särskilt projektet byggdes med hjälp av min förvärvade kunskap...