Intellekten IoT Edison web kontrollerad LED (2 / 3 steg)
Steg 2: Den Arduino delen
Skapa följande två filer i du Arduino IDE:
text_reader.c innehåller den funktionen readfile (), som läser filen /tmp/arduino.txt och returnerar dess innehåll. Om ingen fil har skapats ännu, returneras null.
/*
text_reader.c
Del av "Intel IoT Edison web kontrollerade LED demo"
Copyright 2014 Pavlos Iliopoulos, techprolet.com
Detta program är fri programvara: du kan vidaredistribuera det och/eller ändra
det enligt villkoren i GNU General Public License som offentliggjorts av
Free Software Foundation, antingen version 3 av licensen, eller
(på ditt alternativ) någon senare version.
Detta program är distribuerat i hopp om att det kommer att vara användbar,
men utan garantier; utan att ens underförstådd garanti om
SÄLJBARHET eller lämplighet för ett visst ändamål. Se den
GNU General Public License för mer detaljer.
Du bör ha fått en kopia av GNU General Public License
tillsammans med detta program. Om inte, se.
*/
#include < stdio.h >
#include < stdlib.h >
#include < string.h >
#include < malloc.h >
char * readFile () {
Fil * f = fopen ("/tmp/arduino.txt", "rb");
om (f! = NULL) {
fseek f, 0, SEEK_END.
långa pos = ftell(f);
fseek f, 0, SEEK_SET.
char * byte = (char*)malloc(pos);
fread (byte, pos, 1, f);
fclose(f);
returnera byte.
} annat {
returnera NULL;
}
}
web_button.ino är den huvudsakliga arduino skissen. Strängen som tillhandahålls av readfile (), delar upp det med raden ändra avgränsaren ("\n"), analyserar data och växlar LED på eller av, därför läser.
/*
web_button.ino
Del av "Intel IoT Edison web kontrollerade LED demo"
Copyright 2014 Pavlos Iliopoulos, techprolet.com
Detta program är fri programvara: du kan vidaredistribuera det och/eller ändra
det enligt villkoren i GNU General Public License som offentliggjorts av
Free Software Foundation, antingen version 3 av licensen, eller
(på ditt alternativ) någon senare version.
Detta program är distribuerat i hopp om att det kommer att vara användbar,
men utan garantier; utan att ens underförstådd garanti om
SÄLJBARHET eller lämplighet för ett visst ändamål. Se den
GNU General Public License för mer detaljer.
Du bör ha fått en kopia av GNU General Public License
tillsammans med detta program. Om inte, se.
*/
#include < Wire.h >
#include "rgb_lcd.h"
#include "text_reader.c"
CONST char * avgränsare = "\n";
char * str;
char * pch;
rgb_lcd lcd;
int ledPin = 13.
bool ledStatus = false;
bool lastLedStatus = false;
bool stringIsOk = false;
Sträng remoteIp;
void setup() {
Initiera följetong och vänta på port att öppna:
Serial.BEGIN(9600);
pinMode (ledPin, produktionen);
digitalWrite(ledPin,LOW);
Ange den LCD antal kolumner och rader:
LCD.BEGIN (16, 2);
lcd.setRGB(0,0,0);
Skriv ut ett meddelande till LCD-skärmen.
LCD.Print ("Remote IP:");
fördröjning (1000);
}
void loop() {
sätta din installation kod här, om du vill köra en gång:
Str = readfile ();
pch = strtok (str, avgränsare);
om (pch! = NULL) {
ledStatus = (String(pch) == "true");
pch = strtok (NULL, avgränsare);
remoteIp = sträng (pch);
pch = strtok (NULL, avgränsare);
stringIsOk = sträng (pch) == "OK";
Läs resten av strängen, kan du utelämna detta
medan ((pch! = NULL))
{
pch = strtok (NULL, avgränsare);
}
}
om (stringIsOk & & (ledStatus! = lastLedStatus)) {
pinMode (ledPin, produktionen);
digitalWrite(ledPin,ledStatus);
Serial.println (ledStatus);
först tömma skärmen från den gamla adressen
lcd.setCursor (0, 1);
LCD.Print("");
lcd.setRGB(0,0,ledStatus?255:00);
lcd.setCursor (0, 1);
LCD.Print(remoteIp);
Serial.println(remoteIp);
Serial.println("---");
lastLedStatus = ledStatus;
}
Delay(100);
}