Light Cube/Projektcode: Unterschied zwischen den Versionen
Weitere Optionen
Berkay (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
Berkay (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
| Zeile 112: | Zeile 112: | ||
end | end | ||
tmr.alarm(0, 100, tmr.ALARM_AUTO, wlaninit) | tmr.alarm(0, 100, tmr.ALARM_AUTO, wlaninit) | ||
== Eclipse - Computer == | |||
package berkay.light.cube; | |||
import java.io.IOException; | |||
import java.io.PrintStream; | |||
import java.net.Socket; | |||
import java.net.UnknownHostException; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
import java.util.Scanner; | |||
import com.fasterxml.jackson.core.JsonProcessingException; | |||
import com.fasterxml.jackson.databind.ObjectMapper; | |||
public class LightCube { | |||
public static int LED_COUNT = 34; | |||
private static ObjectMapper mapper; | |||
private List<Led> leds = new ArrayList<>(); | |||
private String host; | |||
private int port; | |||
private Socket outsocket; | |||
public LightCube(String ip, int port) throws UnknownHostException, IOException { | |||
this.host = ip; | |||
this.port = port; | |||
for (int i = 0; i < LED_COUNT; i++) { | |||
leds.add(new Led()); | |||
} | |||
outsocket = new Socket(this.host, this.port); | |||
} | |||
private void send() throws Exception { | |||
String json = mapper.writeValueAsString(leds); | |||
System.out.println(json); | |||
PrintStream jsonOut = new PrintStream(outsocket.getOutputStream()); | |||
jsonOut.print(json); | |||
jsonOut.flush(); | |||
} | |||
public static void main(String[] args) throws InterruptedException, UnknownHostException, IOException { | |||
mapper = new ObjectMapper(); | |||
Scanner scanner = new Scanner(System.in); | |||
LightCube l1 = new LightCube("192.168.2.109", 80); | |||
LightCube l2 = new LightCube("192.168.2.110", 80); | |||
System.out.println("Verbindung erfolgreich"); | |||
while (true) { | |||
try { | |||
if (scanner.hasNextLine()) { | |||
String line = scanner.nextLine(); | |||
String[] parts = line.split(" "); | |||
if (parts.length < 4 || parts.length > 5) { | |||
throw new IllegalStateException("requires 3 or 4 numbers"); | |||
} | |||
int remote = Integer.parseInt(parts[0]); | |||
int r = Integer.parseInt(parts[1]); | |||
int g = Integer.parseInt(parts[2]); | |||
int b = Integer.parseInt(parts[3]); | |||
LightCube ll = null; | |||
if(remote == 0){ | |||
ll = l1; | |||
} | |||
if(remote == 1){ | |||
ll = l2; | |||
} | |||
int index = -1; | |||
if(parts.length == 5){ | |||
index = Integer.parseInt(parts[4]); | |||
} | |||
if(index == -1){ | |||
//set all | |||
for(Led led:ll.leds){ | |||
led.setColor(r, g, b); | |||
} | |||
}else{ | |||
if(index < 0 ){ | |||
index = 0; | |||
} | |||
if(index > LED_COUNT-1){ | |||
index = LED_COUNT-1; | |||
} | |||
Led led = ll.leds.get(index); | |||
led.setColor(r, g, b); | |||
} | |||
} | |||
l2.send(); | |||
l1.send(); | |||
} catch (Exception e) { | |||
e.printStackTrace(); | |||
} | |||
Thread.sleep(500); | |||
} | |||
} | |||
} | |||
Version vom 1. Dezember 2016, 20:33 Uhr
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)
Eclipse - Computer
package berkay.light.cube;
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class LightCube {
public static int LED_COUNT = 34; private static ObjectMapper mapper; private List<Led> leds = new ArrayList<>(); private String host; private int port; private Socket outsocket;
public LightCube(String ip, int port) throws UnknownHostException, IOException { this.host = ip; this.port = port; for (int i = 0; i < LED_COUNT; i++) { leds.add(new Led()); } outsocket = new Socket(this.host, this.port); }
private void send() throws Exception { String json = mapper.writeValueAsString(leds); System.out.println(json);
PrintStream jsonOut = new PrintStream(outsocket.getOutputStream()); jsonOut.print(json); jsonOut.flush(); }
public static void main(String[] args) throws InterruptedException, UnknownHostException, IOException { mapper = new ObjectMapper();
Scanner scanner = new Scanner(System.in);
LightCube l1 = new LightCube("192.168.2.109", 80); LightCube l2 = new LightCube("192.168.2.110", 80);
System.out.println("Verbindung erfolgreich");
while (true) { try { if (scanner.hasNextLine()) { String line = scanner.nextLine(); String[] parts = line.split(" "); if (parts.length < 4 || parts.length > 5) { throw new IllegalStateException("requires 3 or 4 numbers"); } int remote = Integer.parseInt(parts[0]); int r = Integer.parseInt(parts[1]); int g = Integer.parseInt(parts[2]); int b = Integer.parseInt(parts[3]);
LightCube ll = null; if(remote == 0){ ll = l1; } if(remote == 1){ ll = l2; } int index = -1; if(parts.length == 5){ index = Integer.parseInt(parts[4]); } if(index == -1){ //set all for(Led led:ll.leds){ led.setColor(r, g, b); } }else{ if(index < 0 ){ index = 0; } if(index > LED_COUNT-1){ index = LED_COUNT-1; } Led led = ll.leds.get(index); led.setColor(r, g, b); } } l2.send(); l1.send(); } catch (Exception e) { e.printStackTrace(); }
Thread.sleep(500); } }
}