Styra Arduino från din iOS-enhet och din Apple Watch (5 / 10 steg)
Steg 5: Lärande Arduino koden (valfritt)
Koden för att stödja Arduino Manager baseras huvudsakligen på fyra ytterligare funktioner:
- doWork - ersätter funktionerna loop. Här går din kod
- processIncomingMessages - skickar information till anslutna iOS enheten
- processOutgoingMessages - får information från den anslutna iOS enheten
- doSync - skickar statusinformation till iOS-enheter när den ansluter
Låt oss se varje funktion.
Funktionen doWork skickar bara information om aktuell status (på/av) i den röda lysdioden.
void doWork() {
iosController.writeMessage("Red",digitalRead(REDLEDPIN));
}
ProcessIncomingMessages kallas för varje meddelande som tas emot och har två parametrar:
- variabel - namnet på den widget som skickar data
- värde - data som är associerade till widget. Till exempel i fallet om växla Widget värdet är 0 om växeln är avstängd och 1 om är det på.
Så, funktionen slår på och av röd LED enligt med placera av växeln på iOS-enheten och placera av reglaget. Observera att reglaget skickar ett värde i intervallet 0-1023 och analogWrite accepterar värden i intervallet 0-255. Funktionen karta omvandlar ett värde i en rad till motsvarande värde i andra intervallet (se Arduino dokumentation).
void processIncomingMessages (char * variabel, char * värde) {< br >
om (strcmp(variable,"Red")==0) {
digitalWrite(REDLEDPIN,atoi(value));
}
om (strcmp(variable,"Yellow")==0) {
analogWrite(YELLOWLEDPIN,map(atoi(value),0,1023,0,255));
}
}
ProcessOutgoingMessages är tom eftersom i detta fall vi inte har information som skickas från Arduino styrelsen.
Funktionen doSync anropas en gång när iOS enheten blir ansluten till Arduino och skickar information för att initiera några Widgets som Switch Widget och reglaget Widget.
Om lampan har ändrat status från tidigare anslutning, har iOS att veta om widgeten Switch har som ska initieras på eller av. Samma för placera av widgeten reglaget.
void doSync(char *variable) {< br >
om (strcmp(variable,"Red")==0) {
iosController.writeMessage(variable,map(digitalRead(REDLEDPIN),0,255,0,1023));
}
om (strcmp(variable,"Yellow")==0) {
iosController.writeMessage(variable,analogRead(YELLOWLEDPIN));
}
}
Du kan enkelt lägga till en switch och några enkla kod att slå på och av den röda lysdioden direkt från styrelsen att se hur denna funktion fungerar.
Mer information om hur man skriver koden och om funktionerna tillgängliga bibliotek finns i dokumentationen (Arduino Manager dokumentation).