Kontrollera hastigheten på en DC fläkt med en iPhone via wifi med Openframeworks (4 / 4 steg)
Steg 4: Få OSC meddelanden på Mac
Innan du börjar arbeta på mottagande funktionalitet, se till att du laddar upp Standard Firmata exemplet till din Arduino ombord. När din Arduino är primade och redo att gå, kopiera mappen kallas oscReceiverExample i mappen of_v0.8.1_osx_release/examples/addons till mappen myApps inom of_v0.8.1_osx_release/apps. Öppna filen Xcode projekt kallas "oscReceiverExample.xcodeproj" inom den kopierade mappen. När öppnar, bläddra projektet navigatorn till vänster och klicka på filen heter "ofApp.cpp". En gång där, öppna en annan exempel projektfil inom of_v0.8.1_osx_release/examples/communication/firmataExample kallas firmataExample.xcodeproj. Vi kommer att ta del av koden från filen, och placera den i filen ofApp.cpp i oscReceiverExample.
Den första biten av koden kommer vi är dessa tre linjer:
ARD.connect ("/dev/tty.usbmodem1421", 57600);
ofAddListener (ard. EInitialized, här, & ofApp::setupArduino);
bSetupArduino = false;
Ersätt "/ dev/tty.usbmodem1421" Arduino-porten, och följa den med antingen 57600, som framför, eller 9600 beroende på konfigurationen av Arduino.
Efter detta, kopiera funktionerna setupArduino, updateArduino, digitalPinChanged och analogPinChanged till filen ofApp.cpp inom oscReceiverExample-projektet ovan uppdateringsfunktionen.
Skapa 2 heltal. En för fläktens hastighet, och en för finger-ingång som tas emot från iPhone.
I mappen setupArduino ersätta ard.sendDigitalPinMode funktioner med "ard.sendDigitalPinMode (9, ARD_PWM);"
Placera raden "updateArduino();" inom uppdateringsfunktionen. Också i uppdateringen, hitta funktionen villkorlig det påstår "if(m.getAddress() ==" / mus/placera) ", och placera" input = m.getArgAsInt32(0); "i den. Detta låter oss spara finger Y-position till den ingående variabeln.
Avslutningsvis skriv dessa tre rader i draw slingan till våra skräddarsydda lättnader funktionen för att ange intervall och mappa om indataområdet skickas från din iPhone fingerposition:
fanSpeed = (int) lätta (fanSpeed, ofMap (ingång, 60, 500, 255, 0), 0,08);
om (fanSpeed > = 255) fanSpeed = 255;
om (fanSpeed < = 0) fanSpeed = 0;
Och det är allt! På bilderna ovan ger en mer ingående titt på koden.