Light Cube/Projektcode: Unterschied zwischen den Versionen

Aus C3MAWiki
Zur Navigation springenZur Suche springen
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
[[Kategorie:öffentlich]]
[[Kategorie:öffentlich]]
{{aktives Projekt|Kontakt=Berkay|öffentlich=ja}}
{{aktives Projekt|Kontakt=Berkay|öffentlich=ja}}
Hier wird der bisherige Projektcode von dem Projekt Light Cube reingestellt. Die Projektseite: [[Light_Cube]]
Dies ist der vollständige Projektcode. Die Projektseite: [[Light Cubes]]





Version vom 1. Dezember 2016, 22:32 Uhr

Dies ist ein Projekt, an dem momentan aktiv gearbeitet wird. Wenn du Fragen hast oder mitarbeiten möchtest, wende dich an Berkay.

Dies ist der vollständige Projektcode. Die Projektseite: Light Cubes


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)