Stap 4: Ontvangen van OSC berichten op de Mac
Voordat u begint te werken op de ontvangende functionaliteit, zorg ervoor dat je upload het voorbeeld van de standaard Firmata naar uw Arduino Board. Zodra je Arduino is gevuld en klaar om te gaan, kopieert u de map met de naam oscReceiverExample in de map of_v0.8.1_osx_release/examples/addons naar de map myApps binnen of_v0.8.1_osx_release/apps. Open het Xcode projectbestand genaamd "oscReceiverExample.xcodeproj" in de gekopieerde map. Eenmaal open, bladeren van de Navigator van het Project aan de linkerkant en klik op het bestand met de naam "ofApp.cpp". Eenmaal daar, open een ander voorbeeld-projectbestand binnen of_v0.8.1_osx_release/examples/communication/firmataExample genaamd firmataExample.xcodeproj. We nemen een deel van de code uit dit bestand, en plaatsen het binnen het ofApp.cpp-bestand binnen de oscReceiverExample.
De eerste bit van code zullen we zijn deze drie lijnen:
ARD.Connect ("/dev/tty.usbmodem1421", 57600);
ofAddListener (ard. EInitialized, deze, & ofApp::setupArduino);
bSetupArduino = false;
Vervang "/ dev/tty.usbmodem1421" met de poort van de Arduino, en volg deze met beide 57600, als hierboven, of 9600 afhankelijk van uw configuratie van de Arduino.
Na dit, door de setupArduino, updateArduino, digitalPinChanged en analogPinChanged functies naar het bestand ofApp.cpp binnen het project van de oscReceiverExample boven de updatefunctie te kopiëren.
Maak 2 gehele getallen. Één voor de snelheid van de ventilator, en één voor de vinger input die wordt ontvangen van de iPhone.
In de setupArduino map, vervangen door ard.sendDigitalPinMode functies "ard.sendDigitalPinMode (9, ARD_PWM);"
Plaats de regel "updateArduino();" binnen de updatefunctie. Ook binnen de update, de functie find voorwaardelijke dat staten "if(m.getAddress() ==" / muis/positie) ", en" input = m.getArgAsInt32(0); "binnen het. Dit laat ons redden van de vinger Y-positie in de invoervariabele.
Tot slot schrijf deze drie lijnen in de lus trekt onze op maat gemaakte versoepeling functie gebruiken om het bereik en het invoerbereik verzonden vanaf uw iPhone vinger positie opnieuw in kaart:
fanSpeed = (int) versnelling (standaardkoeler, ofMap (input, 60, 500, 255, 0), 0,08);
Als (standaardkoeler > = 255) toeren = 255;
Als (standaardkoeler < = 0) fanSpeed = 0;
En dat is alles! De afbeeldingen hierboven geven een meer diepgaande blik op de code.