Étape 2: Code
Ce code est conçu pour éclairer certaines couleurs de la LED RGB. Il est configuré de telle sorte que vous pouvez activer la couleur qui correspond aux couleurs des émotions chez l’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 / / le choix entre LWIFI_OPEN, LWIFI_WPA ou LWIFI_WEP. #define par 50 #define PAR1 3 #define DEVICEID "" / / entrée votre deviceId #define DEVICEKEY "" / / entrée votre deviceKey #define pConfig_site_url "api.mediatek.com" < /ldatetime.h >< /lwificlient.h >< /lwifi.h >< /ltask.h >< /httpclient.h >< /b64.h >< / p >< p > c LWiFiClient ; unsigned int CCF ; unsigned int CRTL ; unsigned int rtc1 ; unsigned int lrtc1 ; char de port [4] = {0} ; char connection_info [21] = {0} ; char d’ip [21] = {0} ; portnum int ; int val = 0 ; String tcpdata = String(DEVICEID) + «, » + String(DEVICEKEY) + «, 0 » ; String 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) ; / * while (! Delay(1000) série) ; / * Commentaire sur cette ligne lors de la série n’est pas présent, c’est à dire. exécuter cette démo sans se connecter au PC * / < /p >< p > Serial.println ("connexion à AP ») ; tandis que (0 == LWiFi.connect (WIFI_AP, LWiFiLoginInfo (WIFI_AUTH, WIFI_PASSWORD))) {delay(1000);} Serial.println ("appel de connexion"); < /p >< p > tandis que (! c2.connect (pConfig_site_url, 80)) {Serial.println ("re-connexion au site Web"); delay(1000);} delay(100) ; < /p >< p > pinMode (13, sortie) ; pinMode (sortie 12,) ; pinMode (sortie 11) ; pinMode (sortie 10,) ; pinMode (sortie 9) ; pinMode (sortie 8) ; pinMode (7, sortie) ; pinMode (6, sortie) ; pinMode (5, sortie) ; pinMode (sortie 4) ; pinMode (3, sortie) ; pinMode (sortie 2) ; getconnectInfo() ; connectTCP() ; } < /p >< p > void getconnectInfo() {//calling RESTful API pour obtenir c2.print de connexion socket TCP (« GET /mcs/v2/devices / "); c2.print(DEVICEID) ; c2.println ("/connections.csv HTTP/1.1"); c2.print (" hôte: ") ; C2.println(SITE_URL) ; C2.Print ("deviceKey:") ; C2.println(DEVICEKEY) ; C2.println ("Connection : close") ; C2.println() ; Delay(500) ; < /p >< p > int errorcount = 0 ; tandis que (! c2.available()) {Serial.println ("en attente de réponse HTTP:") ; Serial.println(ErrorCount) ; ErrorCount += 1 ; Si (errorcount > 10) {c2.stop() ; return;} delay(100) ; } int err = http.skipResponseHeaders() ; < /p >< p > int bodyLen = http.contentLength() ; Serial.Print ("contenu longueur est:") ; Serial.println(bodyLen) ; Serial.println() ; char c ; int ipcount = 0 ; int count = 0 ; séparateur d’int = 0 ; tout en (c2) {int v = c2.read() ; if (v! = -1) {c = v ; Serial.Print(c) ; connection_info [ipcount] = c ; séparateur de if(c==',') = ipcount ; ipcount ++ ; } else {Serial.println ("pas plus de contenu, déconnecter"); c2.stop() ; < /p >< p >}} Serial.print ("les infos de connexion:") ; Serial.println(connection_info) ; int i ; pour (j’ai = 0; j’ai < séparateur; i ++) = "" {= "" ip [i] = "connection_info [i];"} = "" int = "" j = "0"; séparateur ++; = "" pour (j’ai = "séparateur; i < 21" & & = "" j < 5; i ++) = "" port [j] = "connection_info [i];" j ++; = "" serial.println ("la =" "tcp =" "socket =" "connexion =" "instructions:"); = "" serial.print ("ip: =" ""); = "" serial.println(ip); = "" serial.print ("port: =" "serial.println(port); =" "portnum =" atoi"(port); =" "serial.println(portnum) ; < =" "p =" ">< / séparateur; i ++) >< / p >< p >} //getconnectInfo < /p >< p > void uploadstatus() {//calling API RESTful Télécharger datapoint dans les pays membres au statut de rapport LED Serial.println ("connexion appelante") ; LWiFiClient c2 ; < /p >< p > tandis que (! c2.connect (pConfig_site_url, 80)) {Serial.println ("re-connexion au site Web"); delay(1000);} delay(100) ; if(digitalRead(13)==1) upload_led = « LED_Display,, 1 » ; else 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 ("hôte:") ; 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 ("Connection : close") ; C2.println() ; C2.println(upload_led) ; Delay(500) ; < /p >< p > int errorcount = 0 ; tandis que)! c2.available()) {Serial.print ("en attente de réponse HTTP:") ; Serial.println(ErrorCount) ; ErrorCount += 1 ; Si (errorcount > 10) {c2.stop() ; return;} delay(100) ; } int err = http.skipResponseHeaders() ; < /p >< p > int bodyLen = http.contentLength() ; Serial.Print ("contenu longueur est:") ; Serial.println(bodyLen) ; Serial.println() ; tout en (c2) {int v = c2.read() ; if (v! = -1) {Serial.print(char(v));} else {Serial.println ("pas plus de contenu, déconnecter"); c2.stop() ; < /p >< p >}}} < /p >< p > void connectTCP() {//establish connexion TCP avec le serveur TCP avec désigné IP et le Port des c.stop() ; Serial.println (« Connecting to TCP ») ; Serial.println(IP) ; Serial.println(portnum) ; tandis que (0 == c.connect (ip, portnum)) {Serial.println ("re-connexion TCP"); delay(1000);} Serial.println ("envoyer TCP connect") ; c.println(tcpdata) ; c.println() ; Serial.println ("en attente de réponse TCP:");} connectTCP < /p >< p > void heartBeat() {Serial.println ("envoi TCP heartBeat"); c.println(tcpdata) ; c.println();} //heartBeat < /p >< p > void loop() //Red conduit {//Check pour commande de socket TCP de MCS Server String tcpcmd = ""; tout en (c.available()) {int v = c.read() ; if (v! = -1) {Serial.print((char)v) ; tcpcmd += (char) v; si (tcpcmd.substring(40).equals(tcpcmd_ledAnger_on)) {digitalWrite (4, HIGH); digitalWrite (3 ÉLEVÉ) ; digitalWrite (2, haut) ; Serial.Print ("Switch LED sur") ; tcpcmd = "" ; } else if(tcpcmd.substring(40).equals(tcpcmd_ledAnger_off)) {digitalWrite (4, faible); digitalWrite (3, faible); digitalWrite (2, basse) ; Serial.Print ("éteindre LED") ; tcpcmd = "" ; } else if(tcpcmd.substring(40).equals(tcpcmd_ledJoy_on)) {digitalWrite (4, élevée) digitalWrite (3, élevée) digitalWrite (2, haut); digitalWrite (10, HIGH); digitalWrite (9, HIGH); digitalWrite (8, HIGH); digitalWrite (7, HIGH); digitalWrite (6, HIGH); digitalWrite (5, HIGH) ; Serial.Print ("Switch LED sur") ; tcpcmd = "" ; } else if(tcpcmd.substring(40).equals(tcpcmd_ledJoy_off)) {digitalWrite (4, faible) digitalWrite (3, faible); digitalWrite (2, basse); digitalWrite (10, basse); digitalWrite (9, faible); digitalWrite (8, basse); digitalWrite (7, basse); digitalWrite (6, faible); digitalWrite (5, faible) ; Serial.Print ("éteindre LED") ; tcpcmd = "" ; } else if(tcpcmd.substring(40).equals(tcpcmd_ledDisgust_on)) {digitalWrite (10, HIGH); digitalWrite (9, HIGH); digitalWrite (8, hauts) ; Serial.Print ("Switch LED sur") ; tcpcmd = "" ; } else if(tcpcmd.substring(40).equals(tcpcmd_ledDisgust_off)) {digitalWrite (10, LOW); digitalWrite (9, faible); digitalWrite (8, faible) ; Serial.Print ("éteindre LED") ; tcpcmd = "" ; } else if(tcpcmd.substring(40).equals(tcpcmd_ledFear_on)) {digitalWrite (4, HIGH) digitalWrite (3, élevée) digitalWrite (2, HIGH); digitalWrite (7, HIGH); digitalWrite (6, HIGH); digitalWrite (5, HIGH) ; Serial.Print ("Switch LED sur") ; tcpcmd = "" ; } else if(tcpcmd.substring(40).equals(tcpcmd_ledFear_off)) {digitalWrite (4, faible) digitalWrite (3, faible); digitalWrite (2, basse); digitalWrite (7, faible); digitalWrite (6, LOW); digitalWrite (5, faible) ; Serial.Print ("éteindre LED") ; tcpcmd = "" ; } < /p >< p > if(tcpcmd.substring(40).equals(tcpcmd_ledSad_on)) else {digitalWrite (7, HIGH); digitalWrite (6, HIGH); digitalWrite (5, HIGH) ; Serial.Print ("Switch LED sur") ; tcpcmd = "" ; } else if(tcpcmd.substring(40).equals(tcpcmd_ledSad_off)) {digitalWrite (7, LOW); digitalWrite (6, LOW); digitalWrite (5, faible) ; Serial.Print ("éteindre LED") ; tcpcmd = "" ; }}} < /P >< p > LDateTime.getRtc (& rtc) ; Si ((rtc-lrtc) > = par) {heartBeat() ; CRTL = CCF;} //Check for rapport datapoint statut intervalle LDateTime.getRtc (& rtc1) ; Si ((rtc1-lrtc1) > = PAR1) {uploadstatus() ; lrtc1 = rtc1;}} < /p >