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, 21: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); } }
}