Dragspel Master - en python/arduino musik synt (3 / 3 steg)
Steg 3: Konfigurera Python-skript
I detta steg ska vi ställa in python skript vars jobb det är att:
- Gränssnitt med Arduino
- Tolka raw accelerationsvärdena
- Syntetisera noter bygger på data
Förord
Här jag ska förklara i steg för steg hur Python skript skrevs, men om du bara vill ha den final koden att se om ditt system fungerar du kan få det här: https://github.com/aehernandez/Accordion-Master/bl...
Denna del av den instructable bör göras på din stationära dator på alla Linux-distribution. Du bör ha python 2.7 igång. Alla andra beroenden som jag kommer att täcka längre ner. Om du är så benägen det också också möjligt att köra detta program på en Raspberry Pi (i själva verket Arduino koden kunde alla att portas till den Pi, vilket skulle vara ett bra framtida miniprojekt: D). Jag kommer inte att täcka som i denna tutorial, men om du utforska det avenyn tveka inte att kontakta mig för hjälp.
Skapa en fil i valfri katalog (med något namn). Till exempel jag använde i min hemkatalog: accordian_comm.py
Samverkan med Arduino
Två beroenden är skyldiga att gränssnittet med Python på arduino: sys och seriell.
importera sys
importera följetong
# Sök efter öppna seriella portar, den första som hittade antas tillhöra Arduino styrelsen
för i i range(256):
försök:
ser = följetong. Serial("/dev/ttyUSB{}".format(i), 9600)
skriva ut "Funna först öppna seriell port: USB{}".format(i)
Limit = i.
Break
Förutom följetong. SerialException och OSError:
om jag == 255:
skriva ut "fatal fel: ingen öppen port found\nMake till din Arduino ombord är ansluten"
sys.Exit()
passera
I ovanstående kod söka vi det nuvarande systemet för alla öppna portar på överföringshastighet 9600. En dödlig antagandet är att den första öppen verkligen är Arduino styrelsen. Detta är inte rätt sätt att göra saker, för de flesta uppställningar blir korrekt. "/ dev/ttyUSB *" är där USB-enheter mappas till Linux OS.
Vad som är viktigt här är variabeln "ser" som är en seriell portobjekt till våra Arduino. PySerial dokumentation ser vi att detta ger oss tillgång till funktioner som läsa, skriva och isAvailable. Dessa är de metoder som vi kommer att använda till gräns flat med arduino att utföra seriell kommunikation.
Tolkning av Arduino Data
En diskussion om tolkning av data i Python framöver. Se github koden för nu!
Tack för läsning!