Emotion skjorta med en Linkit en (2 / 6 steg)
Steg 2: kod
Den här koden är avsedd att lysa upp vissa färger RGB LED. Det ställs in så att du kan aktivera den färg som motsvarar med färgerna på känslor i Inside Out.
< p > //#include < b64.h >< br > #include < httpclient.h >
#include < ltask.h >
#include < lwifi.h >
#include < lwificlient.h >
#include < ldatetime.h >
#define WIFI_AP ""
#define WIFI_PASSWORD ""
#define WIFI_AUTH LWIFI_WPA / / välja mellan LWIFI_OPEN, LWIFI_WPA eller LWIFI_WEP.
#define per 50
#define per1 3
#define DEVICEID "" / / ingång din enhets-ID
#define DEVICEKEY "" / / ingång din deviceKey
#define SITE_URL "api.mediatek.com" < /ldatetime.h >< /lwificlient.h >< /lwifi.h >< /ltask.h >< /httpclient.h >< /b64.h >< /p >< p > LWiFiClient c;
unsigned int rtc;
unsigned int lrtc;
unsigned int rtc1;
unsigned int lrtc1;
char port [4] = {0}.
char connection_info [21] = {0}.
char ip [21] = {0}.
int portnum;
int val = 0;
String tcpdata = String(DEVICEID) + "," + String(DEVICEKEY) + ", 0";
Sträng upload_led;
String tcpcmd_ledJoy_on = "LED_ControlJoy, 1";
String tcpcmd_ledJoy_off = "LED_ControlJoy, 0"; < /p >< p > String tcpcmd_ledAnger_on = "LED_ControlAnger, 1";
String tcpcmd_ledAnger_off = "LED_ControlAnger, 0"; < /p >< p > String tcpcmd_ledDisgust_on = "LED_ControlDisgust, 1";
String tcpcmd_ledDisgust_off = "LED_ControlDisgust, 0"; < /p >< p > String tcpcmd_ledFear_on = "LED_ControlFear, 1";
String tcpcmd_ledFear_off = "LED_ControlFear, 0"; < /p >< p > String tcpcmd_ledSad_on = "LED_ControlSad, 1";
String tcpcmd_ledSad_off = "LED_ControlSad, 0"; < /p >< p > LWiFiClient c2;
HttpClient http(c2); < /p >< p > void setup()
{
LTask.begin();
LWiFi.begin();
Serial.BEGIN(115200);
/ * tag (! Serial) delay(1000); / * kommentera bort raden när följetong inte är närvarande, dvs. Kör denna demo utan ansluter till PC * / < /p >< p > Serial.println ("ansluter till AP");
medan (0 == LWiFi.connect (WIFI_AP, LWiFiLoginInfo (WIFI_AUTH, WIFI_PASSWORD)))
{
Delay(1000);
}
Serial.println ("calling anslutning"); < /p >< p > medan (! c2.connect (SITE_URL, 80))
{
Serial.println ("åter ansluter till webbplatsen");
Delay(1000);
}
Delay(100); < /p >< p > pinMode (13, OUTPUT);
pinMode (12, OUTPUT);
pinMode (11, OUTPUT);
pinMode (10, OUTPUT);
pinMode (9, OUTPUT);
pinMode (8, OUTPUT);
pinMode (7, OUTPUT);
pinMode (6, OUTPUT);
pinMode (5, OUTPUT);
pinMode (4, OUTPUT);
pinMode (3, OUTPUT);
pinMode (2, utgång);
getconnectInfo();
connectTCP();
} < /p >< p > void getconnectInfo() {
anropar RESTful API att få TCP socketanslutning
C2.Print ("GET /mcs/v2/devices /");
C2.Print(DEVICEID);
C2.println ("/connections.csv HTTP/1.1");
C2.Print ("Host:");
C2.println(SITE_URL);
C2.Print ("deviceKey:");
C2.println(DEVICEKEY);
C2.println ("anslutning: Stäng");
C2.println();
Delay(500); < /p >< p > int errorcount = 0;
medan (! c2.available())
{
Serial.println ("väntar på HTTP-svar:");
Serial.println(errorcount);
errorcount + = 1;
om (errorcount > 10) {
C2.stop();
hemkomst.
}
Delay(100);
}
int err = http.skipResponseHeaders(); < /p >< p > int bodyLen = http.contentLength();
Serial.Print ("innehåll längd är:");
Serial.println(bodyLen);
Serial.println();
char c;
int ipcount = 0;
int count = 0;
int separater = 0;
medan (c2)
{
int v = c2.read();
om (v! = -1)
{
c = v;
Serial.Print(c);
connection_info [ipcount] = c;
IF(c==',')
separater = ipcount;
ipcount ++;
}
annat
{
Serial.println (inte mer innehåll, koppla bort");
C2.stop(); < /p >< p >}
}
Serial.Print ("Anslutningsinfo:");
Serial.println(connection_info);
int i;
för (jag = 0; jag < separater; i ++) = "" {= "" ip [i] = "connection_info [i];"} = "" int = "" j = "0;" separater ++; = "" för (jag = "separater; i < 21" & & = "" j < 5; i ++) = "" port [j] = "connection_info [i];" j ++; = "" serial.println ("=" "tcp =" "socket =" "anslutning =" "instruktioner:"); = "" serial.print ("ip: =" ""); = "" serial.println(ip); = "" serial.print ("port: =" "serial.println(port); =" "portnum =" atoi"(port), =" "serial.println(portnum); < =" "p =" ">< / separater; i ++) >< /p >< p >} //getconnectInfo < /p >< p > void uploadstatus() {
anropar RESTful API att ladda upp datapoint till MCS rapportera smal avsats ställningen
Serial.println ("calling anslutning");
LWiFiClient c2; < /p >< p > medan (! c2.connect (SITE_URL, 80))
{
Serial.println ("åter ansluter till webbplatsen");
Delay(1000);
}
Delay(100);
IF(digitalRead(13)==1)
upload_led = "LED_Display,, 1";
annat
upload_led = "LED_Display,, 0";
int thislength = upload_led.length();
HttpClient http(c2);
C2.Print ("POST /mcs/v2/devices /");
C2.Print(DEVICEID);
C2.println ("/datapoints.csv HTTP/1.1");
C2.Print ("Host:");
C2.println(SITE_URL);
C2.Print ("deviceKey:");
C2.println(DEVICEKEY);
C2.Print ("Content-Length:");
C2.println(thislength);
C2.println ("Content-Type: text/csv");
C2.println ("anslutning: Stäng");
C2.println();
C2.println(upload_led);
Delay(500); < /p >< p > int errorcount = 0;
medan (! c2.available())
{
Serial.Print ("väntar på HTTP-svar:");
Serial.println(errorcount);
errorcount + = 1;
om (errorcount > 10) {
C2.stop();
hemkomst.
}
Delay(100);
}
int err = http.skipResponseHeaders(); < /p >< p > int bodyLen = http.contentLength();
Serial.Print ("innehåll längd är:");
Serial.println(bodyLen);
Serial.println();
medan (c2)
{
int v = c2.read();
om (v! = -1)
{
Serial.Print(Char(v));
}
annat
{
Serial.println (inte mer innehåll, koppla bort");
C2.stop(); < /p >< p >}
}
} < /p >< p > void connectTCP() {
fastställa TCP-anslutning med TCP Server med utnämnt IP och Port
c.stop();
Serial.println ("ansluta till TCP");
Serial.println(IP);
Serial.println(portnum);
medan (0 == c.connect (ip, portnum))
{
Serial.println ("åter ansluta till TCP");
Delay(1000);
}
Serial.println ("Skicka TCP förbinda");
c.println(tcpdata);
c.println();
Serial.println ("väntar på TCP-svar:");
} //connectTCP < /p >< p > void heartBeat() {
Serial.println ("Skicka TCP heartBeat");
c.println(tcpdata);
c.println();
} //heartBeat < /p >< p > void loop()
Röd led
{
Kontrollera om TCP socket kommando från MCS-servern
String tcpcmd = "";
samtidigt (c.available())
{
int v = c.read();
om (v! = -1)
{
Serial.Print((Char)v);
tcpcmd += (char) v.
om (tcpcmd.substring(40).equals(tcpcmd_ledAnger_on)) {
digitalWrite (4, hög).
digitalWrite (3, hög).
digitalWrite (2, hög).
Serial.Print ("Switch LED på");
tcpcmd = "";
}
annat if(tcpcmd.substring(40).equals(tcpcmd_ledAnger_off)) {
digitalWrite (4, låg).
digitalWrite (3, låg).
digitalWrite (2, låg).
Serial.Print ("avstängning LED");
tcpcmd = "";
}
annat if(tcpcmd.substring(40).equals(tcpcmd_ledJoy_on)) {
digitalWrite (4, hög).
digitalWrite (3, hög).
digitalWrite (2, hög).
digitalWrite 10, hög.
digitalWrite (9, hög).
digitalWrite 8, hög.
digitalWrite (7, hög).
digitalWrite (6, hög).
digitalWrite 5, hög,
Serial.Print ("Switch LED på");
tcpcmd = "";
}
annat if(tcpcmd.substring(40).equals(tcpcmd_ledJoy_off)) {
digitalWrite (4, låg).
digitalWrite (3, låg).
digitalWrite (2, låg).
digitalWrite (10, låg).
digitalWrite (9, låg).
digitalWrite 8, låg.
digitalWrite (7, låg).
digitalWrite (6, låg).
digitalWrite (5, låg).
Serial.Print ("avstängning LED");
tcpcmd = "";
}
annat if(tcpcmd.substring(40).equals(tcpcmd_ledDisgust_on)) {
digitalWrite 10, hög.
digitalWrite (9, hög).
digitalWrite 8, hög.
Serial.Print ("Switch LED på");
tcpcmd = "";
}
annat if(tcpcmd.substring(40).equals(tcpcmd_ledDisgust_off)) {
digitalWrite (10, låg).
digitalWrite (9, låg).
digitalWrite 8, låg.
Serial.Print ("avstängning LED");
tcpcmd = "";
}
annat if(tcpcmd.substring(40).equals(tcpcmd_ledFear_on)) {
digitalWrite (4, hög).
digitalWrite (3, hög).
digitalWrite (2, hög).
digitalWrite (7, hög).
digitalWrite (6, hög).
digitalWrite 5, hög,
Serial.Print ("Switch LED på");
tcpcmd = "";
}
annat if(tcpcmd.substring(40).equals(tcpcmd_ledFear_off)) {
digitalWrite (4, låg).
digitalWrite (3, låg).
digitalWrite (2, låg).
digitalWrite (7, låg).
digitalWrite (6, låg).
digitalWrite (5, låg).
Serial.Print ("avstängning LED");
tcpcmd = "";
} < /p >< p >
annat if(tcpcmd.substring(40).equals(tcpcmd_ledSad_on)) {
digitalWrite (7, hög).
digitalWrite (6, hög).
digitalWrite 5, hög,
Serial.Print ("Switch LED på");
tcpcmd = "";
}
annat if(tcpcmd.substring(40).equals(tcpcmd_ledSad_off)) {
digitalWrite (7, låg).
digitalWrite (6, låg).
digitalWrite (5, låg).
Serial.Print ("avstängning LED");
tcpcmd = "";
}
}
} < /P >< p > LDateTime.getRtc (& rtc);
om ((rtc-lrtc) > = per) {
heartBeat();
lrtc = rtc;
}
Kontrollera om rapporten datapoint status intervall
LDateTime.getRtc(&rtc1);
om ((rtc1-lrtc1) > = per1) {
uploadstatus();
lrtc1 = rtc1;
}
} < /p >