Stap 2: De kant van het Web van de dingen
Eekhoorn voor imp (aangepast van een online bron dat ik niet meer vinden kan...):
================================================
server.show("");
afstandsbediening voor rover
ledState < - 0;
functie blink()
{
Status wijzigen
ledState = ledState? 0:1;
server.log ("ledState val:" + ledState);
Weerspiegelen staat op de stift
hardware.pin9.write(ledState);
}
input klasse voor LED besturingskanaal
klasse inputHTTP breidt InputPort
{
naam = "power control"
type = "nummer"
functie set(httpVal)
{
server.log ("ontvangen van val:" + httpVal);
if(httpVal == 1) {}
hardware.pin9.write(1);
Imp.Sleep(0.1);
hardware.pin9.write(0);
}
anders if(httpVal == 2) {}
hardware.pin8.write(1);
Imp.Sleep(0.1);
hardware.pin8.write(0);
}
anders if(httpVal == 3) {}
hardware.PIN2.write(1);
Imp.Sleep(0.1);
hardware.PIN2.write(0);
}
anders if(httpVal == 4) {}
hardware.PIN1.write(1);
Imp.Sleep(0.1);
hardware.PIN1.write(0);
}
else {}
;
}
}
}
functie watchdog() {}
Imp.wakeup(60,watchdog);
server.log(httpVal);
}
Start watchdog schrijven om de 60 seconden
watchdog();
Configureren pinnen als uitgang open afvoer met interne pull up
hardware.pin9.configure(DIGITAL_OUT_OD_PULLUP);
hardware.pin8.configure(DIGITAL_OUT_OD_PULLUP);
hardware.PIN2.configure(DIGITAL_OUT_OD_PULLUP);
hardware.PIN1.configure(DIGITAL_OUT_OD_PULLUP);
Geregistreerd bij de server
Imp.configure ("Reomote Control voor Rover", [inputHTTP()], []);
================================================
Arduino code (Bedankt Chris Martin!) …
================================================
/*
AnalogReadSerial
Een analoge input op pin 0, leest, wordt het resultaat naar de seriële monitor afgedrukt.
Sluit het centrum pin van een potentiometer aan pin A0, buiten pinnen aan + 5V en de grond.
Deze voorbeeldcode is in het publieke domein.
*/
int pinf = 2;
int pinl = 12;
int pinr = 10;
int pinb = 9;
#define LmotorA 3 / / motor H brug links, ingang A
#define LmotorB 11 / / motor H brug verliet ingang B
#define RmotorA 5 / / motor H brug rechts, het invoeren van A
#define RmotorB 6 / / motor H brug, input B rechts
#define v 255
#include < Servo.h >
Servo myservo;
int geleid = 12;
int pos = 0;
de setup-routine wordt uitgevoerd zodra wanneer u drukt op reset:
VOID Setup {}
myservo.attach(9);
pinMode led (, uitvoer);
pinMode(pinf,INPUT); Initialiseer seriële communicatie met 9600 bits per seconde:
pinMode(pinl,INPUT);
pinMode(pinr,INPUT);
pinMode(pinb,INPUT);
Serial.begin(9600);
digitalWrite(pinf,LOW);
digitalWrite(pinl,LOW);
digitalWrite(pinr,LOW);
digitalWrite(pinb,LOW);
288000
Dit is anders op de seriële monitor niet zeker of het is omhoog of omlaag
Serial.begin(14400);
}
int lls = 0;
int rls = 0;
int al = 0;
de routine van de lus wordt uitgevoerd over en weer forever:
void loop {}
Lees de input op analoge pin 0:
int sensorValue1 = digitalRead(pinf);
int sensorValue2 = digitalRead(pinl);
int sensorValue3 = digitalRead(pinr);
int sensorValue4 = digitalRead(pinb);
de waarde die u leest uitprinten:
Serial.Print(sensorValue1);
Serial.Print(":");
Serial.Print(sensorValue2);
Serial.Print(":");
Serial.Print(sensorValue3);
Serial.Print(":");
Serial.println(sensorValue4);
delay(25); vertraging in tussen leest voor stabiliteit
Als (sensorValue1 == 1) {}
analogWrite(RmotorA,0);
analogWrite(RmotorB,120);
analogWrite(LmotorA,0);
analogWrite(LmotorB,120);
vertraging (500);
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
myservo.write(10);
vertraging (500);
}
else {}
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
}
Als (sensorValue2 == 1) {}
digitalWrite (led, hoog);
analogWrite(RmotorA,0);
analogWrite(RmotorB,250);
analogWrite(LmotorA,250);
analogWrite(LmotorB,0);
vertraging (100);
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
myservo.write(10);
vertraging (500);
}
anders
{
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
}
Als (sensorValue4 == 1) {}
digitalWrite (led, hoog);
analogWrite(RmotorA,250);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,250);
vertraging (100);
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
myservo.write(10);
vertraging (500);
}
anders
{
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
}
Als (sensorValue3 == 1) {}
digitalWrite (led, hoog);
analogWrite(RmotorA,120);
analogWrite(RmotorB,0);
analogWrite(LmotorA,120);
analogWrite(LmotorB,0);
vertraging (500);
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
myservo.write(10);
vertraging (500);
}
anders
{
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
}
}
================================================
Nu voor de gebruikersinterface. Unzip de map vastgemaakt; alle code nodig moet daar. Alles wat u hoeft te doen is plakken in uw unieke elektrische Imp API in het index.html bestand in de juiste ruimte. Ik heb dit label binnen het bestand.