Domotica con Arduino + iPhone (ipharduino)
skissa ho sintetizzato:
-Server
-Controller Arduino
-Controller Usb
Di seguito incollo il codice bearbetning.
Vi ricordo ch e per poter funzionare occorre scaricare le 3 Libreria fondamentali
OscP5, NetP5, CC. Arduino,
----------------------------------------------------------
import oscP5.*; Load OSC P5 bibliotek
import netP5.*; Ladda net P5 bibliotek
import processing.serial.*; Load seriell bibliotek
import cc.arduino.*;
Seriella arduinoPort; Ange arduinoPort som seriell anslutning
OscP5 oscP5; Ange oscP5 som OSC anslutning
int redLED = 0; redLED låter oss veta om lampan är på eller av
int [] ledde = nya int [2]. Matrisen kan läggas till mer växlingsknappar i TouchOSC
void setup() {
size(100,100); Bearbetning skärmstorlek
noStroke(); Vi vill inte en disposition eller Stroke på vår grafik
oscP5 = ny OscP5(this,8000); Starta oscP5, lyssnar efter inkommande meddelanden på port 8000
arduinoPort = ny följetong (denna, Serial.list() [2], 9600); Ställ in arduino att 9600 baud
}
void oscEvent (OscMessage theOscMessage) {/ / detta kör när en ny OSC meddelande
Sträng addr = theOscMessage.addrPattern(); Skapar en sträng av OSC meddelandet
IF(addr.indexOf("/1/Toggle")! =-1) {/ / filtrerar bort alla växlingsknappar
int jag = int((addr.charAt(9))) - 0x30; Returnerar ASCII-numret så konvertera till ett reellt tal genom att subtrahera 0x30
ledde [i] = int(theOscMessage.get(0).floatValue()); Sätter Alternativknappens värde i ledde [i]
Knappen värden kan läsas med hjälp av led [0], ledde [1], ledde [2], etc.
}
}
void draw() {
Background(50); Sätter bakgrunden till en mörk grå, kan vara 0-255
om (ledde [1] == 0) {/ / om ledde knappen 1 om off...
arduinoPort.write("a"); Skickar den karaktär "r" till Arduino
redLED = 0; Anger redLED färg till 0, kan vara 0-255
}
om (ledde [1] == 1) {/ / om led-knappen 1 är på...
arduinoPort.write("A"); Skicka karaktären "R" till Arduino
redLED = 255; Anger redLED färg till 255, kan vara 0-255
}
Fill(redLED,0,0); Fylla rektangeln med redLED belopp
ellips (50, 50, 50, 50); Skapade en ellips på 50 pixlar från vänster...
50 pixlar från toppen och en bredd på 50 och höjd 50 pixlar
}
----------------------------------------------------------
Guardando il codice noterete che i bas all'output captato i rete dal touchosc
0 o 1, bearbetning scriverà nella seriale di arduino 2 valori:
en, A.
Quindi i arduino bisogna installare uno script che tju questi 2 valori
e li trasformi i funzioni, ad es. LedOn/LedOff... ECC...
di seguito vi incollo il codice da installare dentro arduino:
----------------------------------------------------------
#define LED_PIN1 4
#define LED_PIN2 5
#define LED_PIN3 6
#define LED_PIN4 7
#define LED_PIN5 8
#define LED_PIN6 9
#define LED_PIN7 10
#define LED_PIN8 11
int firstSensor = 0; första analog sensor
int secondSensor = 0; andra analog sensor
int thirdSensor = 0; digital sensor
int inByte = 0; inkommande seriell byte
booleska status_unlock;
booleska status_bluetooth;
långa intervall = 1000; intervall som blinka (millisekunder)
lång previousMillis = 0; kommer att lagra förra gången LED var uppdatering
int minite, SEK;
void setup()
{
Starta serieport på 9600 bps:
Serial.BEGIN(9600);
pinMode (2, ingång); digitala sensorn är på digital stift 2
establishContact(); Skicka en byte att upprätta kontakt tills mottagaren svarar
pinMode (LED_PIN1, OUTPUT);
pinMode (LED_PIN2, OUTPUT);
pinMode (LED_PIN3, OUTPUT);
pinMode (LED_PIN4, OUTPUT);
pinMode (LED_PIN5, OUTPUT);
pinMode (LED_PIN6, OUTPUT);
pinMode (LED_PIN7, OUTPUT);
pinMode (LED_PIN8, OUTPUT);
digitalWrite (LED_PIN1, låg); Stäng av LED
digitalWrite (LED_PIN2, låg); Stäng av LED
digitalWrite (LED_PIN3, låg); Stäng av LED
digitalWrite (LED_PIN4, låg); Stäng av LED
digitalWrite (LED_PIN5, låg); Stäng av LED
digitalWrite (LED_PIN6, låg); Stäng av LED
digitalWrite (LED_PIN7, låg); Stäng av LED
digitalWrite (LED_PIN8, låg); Stäng av LED
status_bluetooth = sant;
status_unlock = false;
SEC = 0;
}
void loop()
{
om (Serial.available() > 0) {
inByte = Serial.read(); få inkommande byte:
om (inByte == "A") {
digitalWrite (LED_PIN1, hög); slå på LED
Serial.Print ("A", BYTE); Skicka en char
Delay(800);
digitalWrite (LED_PIN1, låg); Stäng av LED
status_unlock = false;
inByte = 0;
}
om (inByte == "a") {
digitalWrite (LED_PIN2, hög); slå på LED
Serial.Print ("a", BYTE); Skicka en char
Delay(800);
digitalWrite (LED_PIN2, låg); Stäng av LED
status_unlock = sant;
SEC = 0;
inByte = 0;
}
om (inByte == 'B') {
digitalWrite (LED_PIN3, hög); slå på LED
Serial.Print ("B", BYTE); Skicka en char
inByte = 0;
}
om (inByte == 'b') {
digitalWrite (LED_PIN3, låg); Stäng av LED
Serial.Print ("b", BYTE); Skicka en char
inByte = 0;
}
om (inByte == "C") {
digitalWrite (LED_PIN4, hög); slå på LED
Serial.Print ("C", BYTE); Skicka en char
inByte = 0;
}
om (inByte == "c") {
digitalWrite (LED_PIN4, låg); Stäng av LED
Serial.Print ('c', BYTE). Skicka en char
inByte = 0;
}
om (inByte == hade ") {
digitalWrite (LED_PIN5, hög); slå på LED
Serial.Print (hade ", BYTE); Skicka en char
inByte = 0;
}
om (inByte == hade ") {
digitalWrite (LED_PIN5, låg); Stäng av LED
Serial.Print (hade ", BYTE); Skicka en char
inByte = 0;
}
om (inByte == "E") {
digitalWrite (LED_PIN6, hög); slå på LED
Serial.Print ("E", BYTE); Skicka en char
inByte = 0;
}
om (inByte == "e") {
digitalWrite (LED_PIN6, låg); Stäng av LED
Serial.Print ("e", BYTE). Skicka en char
inByte = 0;
}
om (inByte == "F") {
digitalWrite (LED_PIN7, hög); slå på LED
Serial.Print ("F", BYTE); Skicka en char
inByte = 0;
}
om (inByte == "f") {
digitalWrite (LED_PIN7, låg); Stäng av LED
Serial.Print 'f', BYTE. Skicka en char
inByte = 0;
}
om (inByte == "G") {
digitalWrite (LED_PIN8, hög); slå på LED
Serial.Print ("G", BYTE); Skicka en char
inByte = 0;
}
om (inByte == "g") {
digitalWrite (LED_PIN8, låg); Stäng av LED
Serial.Print ("g", BYTE); Skicka en char
inByte = 0;
}
om (inByte == s ') {
Serial.Print ('S ', BYTE); Skicka en char
status_bluetooth = sant;
SEC = 0;
}
} / / om (seriell
/*
osignerade långa currentMillis = millis();
om (currentMillis - previousMillis > intervall) {
previousMillis = currentMillis; spara den senaste gången du blinkade lysdioden
SEC ++;
IF(status_unlock==true) {
IF(SEC== 11) {
digitalWrite (LED_PIN1, hög); slå på LED
Delay(800);
digitalWrite (LED_PIN1, låg); Stäng av LED
status_unlock = false;
SEC = 0;
}
}
annat SEK = 0;
}
*/
} //Loop
void establishContact() {
medan (Serial.available() < = 0) {
Serial.Print ('. ', BYTE); Skicka ett kapital A
Delay(500);
}
}
----------------------------------------------------------