Accordeon Master - een python/arduino muziek synthesizer (2 / 3 stap)

Stap 2: Instellen van de Arduino

Interface met de versnellingsmeter

De versnellingsmeter verbinden met de arduino board. Als u van de ADXL335 gebruikmaakt verbinden de pin label ST op analoge pin 0, Z naar analoge pin 1, Y aan analoge pin 2 X analoge pin 3, GND aan analoge pin 4 en VCC naar analoge pin 5. Als je in elke plaats verdwalen, enkel verwijzen naar de

gegevensbladen. Gegevensbladen altijd de neiging naar de dichte kant, maar ze zijn de moeite waard een nauwe scan.

De pin-ST is niet relevant voor ons project, de X-Y-Z-pinnen uitvoer van de ruwe gegevens, de GND pin is de grond (logische laag of 0 volt), de VCC is de voeding voor de versnellingsmeter (logische hoog). De volgende code stelt dit in de arduino.

 // Define variables to be used to process raw accelerometer values int x, y, z, mag; int xPrev, yPrev, zPrev; // Constant for Low Pass filter const double k = 0.8f; // Define pins for ADXL335 const int xPin = 1; const int yPin = 2; const int zPin = 3; const int vcc = A5; const int gnd = A4; void setup() { //Default baud rate Serial.begin(9600); pinMode(vcc, OUTPUT); digitalWrite(vcc, HIGH); pinMode(gnd, OUTPUT); digitalWrite(gnd, LOW); // Initialize variables x = 0; y = 0; z = 0; xPrev = 0; yPrev = 0; zPrev = 0; } 

We gebruiken dan de analogRead(pin) -functie, waar 'pin' is een van de 3 pins d.w.z. xPin, yPin of zPin hierboven omschreven om te lezen een waarde tussen 0-1024 die vertelt ons de waarde van de versnelling wordt gelezen.

Dus laten we beginnen met het lezen van deze waarden!

Filteren

Dit is intrinsiek vrij lastig sinds het lezen van acceleratie uit een (relatief) goedkoop stuk van hardware zoals de ADXL335 problematisch is. Het soort signaal die you gonna krijgen van de versnellingsmeter is gonna worden doorzeefd met signaal ruis. Dit betekent dat nieuwe versnellingsmeter waarden zijn niet te vertrouwen, en zo we een filter gebruiken. In dit geval gebruiken we een Low Pass Filter

. Wij willen alleen laten laagfrequente signalen passeren, waarden die niet al te veel van voorgaande lezingen verschilt. Opmerking: zelfs met ingewikkelde filtering, de foutenmarge van een goedkope versnellingsmeter is gonna be hoog, dus na verloop van tijd te verkrijgen van snelheid en/of positie van de versnellingsmeter te integreren is gonna samengestelde deze fout - de waarden die we krijgen niet helemaal nauwkeurig zijn. Er zijn ook overwegingen voor drift vooringenomenheid kan worden gemaakt, maar dat is buiten het bereik van deze tutorial. Het maken van gevoel van luidruchtige gegevens is een veld tot eigen! Dus laten we houden het simpel voor nu.

We voegen dit in de loop van ons programma:

 void loop() { // Apply a Low Pass Filter on the raw signal x = k*xPrev + (1-k)*(analogRead(xPin) - xAvg); y = k*yPrev + (1-k)*(analogRead(yPin) - yAvg); z = k*zPrev + (1-k)*(analogRead(zPin) - zAvg); // Calculate the magnitude of the force for this particular implementation mag = (int) sqrt(x*x + y*y + z*z); // Update values for next iteration xPrev = x; yPrev = y; zPrev = z; } 

We gedefinieerd 'k' boven Setup. Dit is een filter-constante. Voel je vrij om deze constante tweak, maar blijf binnen het bereik 0,5 < k < 1. Hogere waarden betekent wij nieuwe waarden nog minder, en dus ze minder invloed op onze volgende iteratie hebben, dit is wat we willen. Mogelijk merkt u ook xAvg, yAvg en zAvg. Dit is van een functie kalibreren, dus laten we bespreken dat nu.

Zonder enige vorm van kalibratie zal de versnellingsmeter meestal waarden uit het middelste bereik van 0-1024 spugen. Dit is niet erg nuttig voor ons, omdat we de relatieve verandering in de versnelling van een referentiepunt, de startpositie van de versnellingsmeter willen. Everytime die de arduino opstart, lopen we de functie calibrate(). Het is absoluut noodzakelijk dat de arduino board worden gedurende de tijd rust gelaten, gedrang van de versnellingsmeter zal verstoren de nauwkeurigheid van de kalibratie.

Voeg dit toe aan het einde van de arduino-code:

 // Function to re-zero the acceleremeter, finds an average void calibrate() { int i; xAvg = 0; yAvg = 0; zAvg = 0; for(i = 0; i < calCount; i++) { // Read in the raw unclean data sset xAvg += analogRead(xPin); yAvg += analogRead(yPin); zAvg += analogRead(zPin); } // Get the average xAvg = xAvg / calCount; yAvg = yAvg / calCount; zAvg = zAvg / calCount; delay(100); } 

Aan het eind van de dag is de kalibratie eigenlijk gewoon een eenvoudig gemiddelde die we uiteindelijk af te trekken van onze raw waarden. Geen fanciness hier.

Streaming van ruwe Data moeten worden ontleed

Voltooien van code: https://github.com/aehernandez/Accordion-Master/bl...

Gerelateerde Artikelen

Zet je Arduino in een 4 stem wavetable-synthesizer met alleen een paar onderdelen...

Zet je Arduino in een 4 stem wavetable-synthesizer met alleen een paar onderdelen...

Meerdere synthesizer projecten hebben gedaan voor de Arduino, maar weinigen konden gebruik maken van de volledige kracht van de processor van de Arduino. DZL van GeekPhysical schreef een 4 voice wavetable-synthesizer die behoort tot de meer geavancee
Python/Arduino seriële regelaar: Zelfgemaakte hoogoven

Python/Arduino seriële regelaar: Zelfgemaakte hoogoven

Wat begon als een eenvoudig project om een kleine afvuren container voor keramiek experimenten spiraled uit de hand in een schroot-gebouwd, gecontroleerde CPU, zuurstof-geïnjecteerd miniatuur hoogoven.Het voltooide project combineert een GUI interfac
MRETV - Video, Stereo geluid en nog veel meer van een standaard Arduino!

MRETV - Video, Stereo geluid en nog veel meer van een standaard Arduino!

MRETV - Video, Stereo geluid en nog veel meer van een standaard Arduino!Nu bijgewerkt voor Arduino 1.6.6 November 2015!Gebruik slechts twee weerstanden en twee diodes voor het genereren van de volledig-schermvideo. Tekst 47 x 29 van 8 x 8 karakters,
Arduino frequentie synthesizer met behulp van 160MHz Si5351

Arduino frequentie synthesizer met behulp van 160MHz Si5351

Dit Instructable beschrijft de bouw en werking van een zelfstandige frequentie synthesizer geschikt voor gebruik als een signaalgenerator, of voor gebruik als de lokale oscillator in een amateur band zender of ontvanger.Mijn prototype was gebouwd op
Beverly-Crusher: beetje pletten. 1-bit Arduino muziek.

Beverly-Crusher: beetje pletten. 1-bit Arduino muziek.

Ik was op zoek naar een instrument om te zetten audio tot 1-bit diepte maar kreeg en schreef mijn eigen. Ondersteunt exporteren voor Arduino schets.Hier ben ik het aanbieden van een verpletterende audioprogramma waardoor ook exporteren naar de arduin
MIDI-gecontroleerde analoge muziek Synthesizer

MIDI-gecontroleerde analoge muziek Synthesizer

Voor mijn elektrotechniek senior design project besloten heb ik voor het ontwerpen van een analoge muziek synthesizer met MIDI-controle. Ik moet toegeven, dit was wat ik wilde doen sinds de middelbare school en mijn uiteindelijke doel als een musicus
Hoe te programmeren een AVR (arduino) met een ander arduino

Hoe te programmeren een AVR (arduino) met een ander arduino

deze instructables is handig als:* je hebt je arduino met atmega168 en je kocht een atmega328 op je lokale elektronicawinkel. Het hoeft niet een arduino bootloader* u wilt maken van een project dat geen gebruik maakt van arduino - gewoon een regelmat
ThermoClock: Een OpenSource Arduino UNO OLED klok die ook temperatuur meet

ThermoClock: Een OpenSource Arduino UNO OLED klok die ook temperatuur meet

Hallo, iedereen!Vandaag ga ik u tonen hoe te maken een OpenSource Arduino UNO OLED klok dat ook maatregelen temperatuur. Dit project is een OpenSource en het is open voor iedereen. Het vereist geen speciale ingenieur vaardigheden, en brengt u minder
Brengen van buiten naar binnen, het creëren van een vivarium voor een Python tapijt

Brengen van buiten naar binnen, het creëren van een vivarium voor een Python tapijt

Ik wilde dit Instructable maken voor iedereen die eigenaar is van een python tapijt of iedereen die overweegt het bezit van dergelijke een geweldig dier. Ik wilde mijn kennis van de veehouderij en mijn passie voor reptielen delen met mensen. Ik heb Z
Hoe maak je een Python Guessing Game

Hoe maak je een Python Guessing Game

Welkom in de wereld van python. Hier gaan we een basic gissen spel maken. Geniet van!Stap 1: Download Python 2.7, niet 3.xJe moet eerst downloaden van python 2.7 van python's officiële site. https://www.python.org/downloads/release/python-27...Het ni
Repareren van een gebakken Arduino Mega

Repareren van een gebakken Arduino Mega

Soms kan jij iets stoms, andere keren is het volstrekt onverklaarbaar, maar als gevolg van welke evenementen, het groene lampje op uw Arduino gestopt komt op. In mijn geval bleek te zijn een verbrand uit spanningsregelaar.Dit ondoorgrondelijke is een
Een spelletje spelen met een kale Arduino

Een spelletje spelen met een kale Arduino

"Push-It"Interactieve spel met behulp van een kale Arduino board, geen externe onderdelen of bedrading nodig.Push-It heeft twee doelen.Te schets snel tonen/Controleer je Arduino board werkt en dat u setup goed voor het downloaden van een nieuwe
Een eenvoudige Arduino Bluetooth auto

Een eenvoudige Arduino Bluetooth auto

Hoi, dit is mijn eerste instructable.Dit is een eenvoudige arduino bluetooth auto voor beginners.Ik ben met behulp van twee continue rotatie servos in plaats van motoren.Dus, laten we beginnen. :)Stap 1: Wat moet je1) Arduino (im ' using een Mega-256
Hoe krijg ik een betere Arduino voor minder!

Hoe krijg ik een betere Arduino voor minder!

Als u een betere Arduino wilt, maar niet genoeg geld hebben, gaat u naar ebay en zoek naar "arduino"Wow! een Arduino uno met 33% korting!