Paso 2: El lado de la Web de las cosas
Ardilla para imp (adaptado de una fuente en línea que ya no la puedo encontrar...):
================================================
Server.Show("");
control remoto para rover
ledState < - 0;
función blink()
{
Estado de cambio
ledState = ledState? 0:1;
Server.log ("ledState val:" + ledState);
Reflejar el estado del pin
hardware.Pin9.Write(ledState);
}
clase de entrada de canal de control de LED
clase inputHTTP extiende InputPort
{
nombre = "control de energía"
tipo = "número"
función set(httpVal)
{
Server.log ("recibido val:" + httpVal);
if(httpVal == 1) {}
hardware.Pin9.Write(1);
Imp.Sleep(0.1);
hardware.Pin9.Write(0);
}
otra cosa if(httpVal == 2) {}
hardware.pin8.Write(1);
Imp.Sleep(0.1);
hardware.pin8.Write(0);
}
otra cosa if(httpVal == 3) {}
hardware.PIN2.Write(1);
Imp.Sleep(0.1);
hardware.PIN2.Write(0);
}
otra cosa if(httpVal == 4) {}
hardware.PIN1.Write(1);
Imp.Sleep(0.1);
hardware.PIN1.Write(0);
}
Else {}
;
}
}
}
función watchdog() {}
Imp.WakeUp(60,Watchdog);
Server.log(httpVal);
}
iniciar la escritura vigilante cada 60 segundos
Watchdog();
Configurar pines como una salida de drenaje abierto con tirón interno hasta
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);
Registrar con el servidor
Imp.Configure ("Control del Reomote para Rover", [inputHTTP()], []);
================================================
Código de Arduino (gracias Chris Martin!) …
================================================
/*
AnalogReadSerial
Lee un pin analógico de entrada en 0, imprime el resultado en el monitor serie.
Conecte la patilla central del potenciómetro al pin A0 y la exterior pins a + 5V y la tierra.
Este ejemplo de código es de dominio público.
*/
int pinf = 2;
pinl INT = 12;
pinr int = 10;
pinb int = 9;
#define LmotorA 3 / / puente de motor H a la izquierda, entrada
#define LmotorB 11 / puente motor H a la izquierda, entrada B
#define RmotorA 5 / / en este puente de motor H, entrada
#define RmotorB 6 / derecha motor puente de H, entrada B
#define v 255
#include < Servo.h >
Servo myservo;
int led = 12;
int pos = 0;
la rutina de instalación se ejecuta una vez al presionar reset:
void setup() {}
myservo.Attach(9);
pinMode (led, salida);
pinMode(pinf,INPUT); inicializar la comunicación serial a 9600 bits por segundo:
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
Esto es diferente en el monitor serial no estoy seguro si es arriba o abajo
Serial.Begin(14400);
}
lls int = 0;
rls int = 0;
al int = 0;
una y otra vez funciona para siempre la rutina bucle:
void loop() {}
leer la entrada en el pin analógico 0:
int sensorValue1 = digitalRead(pinf);
int sensorValue2 = digitalRead(pinl);
int sensorValue3 = digitalRead(pinr);
int sensorValue4 = digitalRead(pinb);
imprimir el valor de leer:
Serial.Print(sensorValue1);
Serial.Print(":");
Serial.Print(sensorValue2);
Serial.Print(":");
Serial.Print(sensorValue3);
Serial.Print(":");
Serial.println(sensorValue4);
Delay(25); retardo entre lecturas para la estabilidad
Si (sensorValue1 == 1) {}
analogWrite(RmotorA,0);
analogWrite(RmotorB,120);
analogWrite(LmotorA,0);
analogWrite(LmotorB,120);
Delay (500);
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
myservo.Write(10);
Delay (500);
}
Else {}
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
}
Si (sensorValue2 == 1) {}
digitalWrite (led, alto);
analogWrite(RmotorA,0);
analogWrite(RmotorB,250);
analogWrite(LmotorA,250);
analogWrite(LmotorB,0);
Delay (100);
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
myservo.Write(10);
Delay (500);
}
otra cosa
{
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
}
Si (sensorValue4 == 1) {}
digitalWrite (led, alto);
analogWrite(RmotorA,250);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,250);
Delay (100);
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
myservo.Write(10);
Delay (500);
}
otra cosa
{
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
}
Si (sensorValue3 == 1) {}
digitalWrite (led, alto);
analogWrite(RmotorA,120);
analogWrite(RmotorB,0);
analogWrite(LmotorA,120);
analogWrite(LmotorB,0);
Delay (500);
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
myservo.Write(10);
Delay (500);
}
otra cosa
{
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
}
}
================================================
Ahora la interfaz de usuario. Descomprimir en la carpeta adjunta; todo el código necesitado debería ser allí. Todo lo que necesitas hacer es pegar en su API de Imp eléctrico único en el archivo index.html en el espacio correspondiente. He marcado esta dentro del archivo.