Light Cube/Projektcode: Unterschied zwischen den Versionen
Aus C3MAWiki
Weitere Optionen
Berkay (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
Berkay (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
| Zeile 4: | Zeile 4: | ||
== ESP-Platine/Bauteil ESP NodeMCU Devboard == | |||
wifi.setmode(wifi.STATION) | wifi.setmode(wifi.STATION) | ||
wifi.sta.config("SSID", "PW") | wifi.sta.config("SSID", "PW") | ||
ws2812.init(); | |||
local ledCount = 34; | |||
local leds = string.char(10,00,0):rep(ledCount) | |||
local hadIP = false; | |||
local tick = false; | |||
function readjson(data) | |||
ok, json = pcall(cjson.decode, data) | |||
if ok then | |||
leds = "" | |||
for ledid = 1, ledCount, 1 do | |||
local ledData = json[ledid]; | |||
leds = leds .. string.char(ledData.g,ledData.r,ledData.b) | |||
end | end | ||
else | |||
print("failed to decode!") | |||
end | end | ||
end | |||
local pseudoRemote = {} | |||
for ledid = 1, ledCount, 1 do | |||
pseudoRemote[ledid]={} | |||
pseudoRemote[ledid].r=100 | |||
pseudoRemote[ledid].g=0 | |||
pseudoRemote[ledid].b=ledid | |||
end | |||
local remoteData = cjson.encode(pseudoRemote); | |||
print(remoteData) | |||
local srv=net.createServer(net.TCP) | |||
srv:listen(80,function(conn) | |||
conn:on("receive",function(conn,payload) | |||
print("Got something...") | |||
print(payload); | |||
readjson(payload) | |||
conn:send("HTTP/1.1 200 OK\n") | |||
conn:send("Content-Type: text/html\n\n") | |||
end) | end) | ||
end) | |||
if( | |||
local led1 = 0; | |||
if( | local led2 = 0; | ||
local led3 = 0; | |||
else | function countBlinks(eingabe) | ||
while(eingabe > 0) do | |||
if(eingabe >= 100) then | |||
led1 = led1 +1 | |||
eingabe = eingabe -100 | |||
else | |||
if(eingabe >= 10) then | |||
led2 = led2 +1 | |||
eingabe = eingabe -10 | |||
else | |||
led3 = led3 +1 | |||
eingabe = eingabe -1 | |||
end | end | ||
end | end | ||
end | end | ||
end | |||
function update() | |||
ws2812.write(leds) | |||
--- | end | ||
local anSekunde = false; | |||
function blinkIP() | |||
anSekunde = not anSekunde | |||
if(anSekunde) then | |||
if led1 > 0 then | |||
ws2812.write(string.char(0,20,0)) | |||
led1 = led1 -1 | |||
return | |||
end | |||
if (led2 > 0) then | |||
ws2812.write(string.char(0,0,0) .. string.char(0,20,0)) | |||
led2 = led2 -1 | |||
return | |||
end | |||
if (led3 > 0) then | |||
ws2812.write(string.char(0,0,0):rep(2) .. string.char(0,20,0)) | |||
led3 = led3 -1 | |||
return | |||
end | |||
tmr.alarm(0, 100, tmr.ALARM_AUTO, update) | |||
else | |||
ws2812.write(string.char(00,0,0):rep(ledCount)) | |||
end | |||
end | |||
function wlaninit () | |||
if(not wifi.sta.getip())then | |||
tick = not tick; | |||
if(tick)then | |||
ws2812.write(string.char(0,0,20):rep(ledCount)) | |||
else | |||
ws2812.write(string.char(0,0,0):rep(ledCount)) | |||
end | |||
return; | |||
else | |||
if not hadIP then | |||
hadIP = true | |||
local IP = wifi.sta.getip() | |||
local o1,o2,o3,o4 = IP:match("(%d%d?%d?)%.(%d%d?%d?)%.(%d%d?%d?)%.(%d%d?%d?)" ) | |||
local eingabe = tonumber(o4) | |||
countBlinks(eingabe); | |||
tmr.alarm(0, 1000, tmr.ALARM_AUTO, blinkIP) | |||
end | |||
end | |||
end | |||
tmr.alarm(0, 100, tmr.ALARM_AUTO, wlaninit) | |||
Version vom 1. Dezember 2016, 20:29 Uhr
Dies ist ein Projekt, an dem momentan aktiv gearbeitet wird. Wenn du Fragen hast oder mitarbeiten möchtest, wende dich an Berkay.
Hier wird der bisherige Projektcode von dem Projekt Light Cube reingestellt. Die Projektseite: Light_Cube
ESP-Platine/Bauteil ESP NodeMCU Devboard
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID", "PW")
ws2812.init();
local ledCount = 34; local leds = string.char(10,00,0):rep(ledCount) local hadIP = false; local tick = false; function readjson(data)
ok, json = pcall(cjson.decode, data)
if ok then
leds = ""
for ledid = 1, ledCount, 1 do
local ledData = json[ledid];
leds = leds .. string.char(ledData.g,ledData.r,ledData.b)
end
else
print("failed to decode!")
end
end local pseudoRemote = {} for ledid = 1, ledCount, 1 do
pseudoRemote[ledid]={}
pseudoRemote[ledid].r=100
pseudoRemote[ledid].g=0
pseudoRemote[ledid].b=ledid
end local remoteData = cjson.encode(pseudoRemote); print(remoteData) local srv=net.createServer(net.TCP) srv:listen(80,function(conn)
conn:on("receive",function(conn,payload)
print("Got something...")
print(payload);
readjson(payload)
conn:send("HTTP/1.1 200 OK\n")
conn:send("Content-Type: text/html\n\n")
end)
end)
local led1 = 0; local led2 = 0; local led3 = 0; function countBlinks(eingabe)
while(eingabe > 0) do
if(eingabe >= 100) then
led1 = led1 +1
eingabe = eingabe -100
else
if(eingabe >= 10) then
led2 = led2 +1
eingabe = eingabe -10
else
led3 = led3 +1
eingabe = eingabe -1
end
end
end
end
function update()
ws2812.write(leds)
end local anSekunde = false; function blinkIP()
anSekunde = not anSekunde
if(anSekunde) then
if led1 > 0 then
ws2812.write(string.char(0,20,0))
led1 = led1 -1
return
end
if (led2 > 0) then
ws2812.write(string.char(0,0,0) .. string.char(0,20,0))
led2 = led2 -1
return
end
if (led3 > 0) then
ws2812.write(string.char(0,0,0):rep(2) .. string.char(0,20,0))
led3 = led3 -1
return
end
tmr.alarm(0, 100, tmr.ALARM_AUTO, update)
else
ws2812.write(string.char(00,0,0):rep(ledCount))
end
end function wlaninit ()
if(not wifi.sta.getip())then
tick = not tick;
if(tick)then
ws2812.write(string.char(0,0,20):rep(ledCount))
else
ws2812.write(string.char(0,0,0):rep(ledCount))
end
return;
else
if not hadIP then
hadIP = true
local IP = wifi.sta.getip()
local o1,o2,o3,o4 = IP:match("(%d%d?%d?)%.(%d%d?%d?)%.(%d%d?%d?)%.(%d%d?%d?)" )
local eingabe = tonumber(o4)
countBlinks(eingabe);
tmr.alarm(0, 1000, tmr.ALARM_AUTO, blinkIP)
end
end
end tmr.alarm(0, 100, tmr.ALARM_AUTO, wlaninit)