Created
June 22, 2019 07:48
-
-
Save remisarrailh/f4efffdfd0bb884c9c73d72dc77a66d3 to your computer and use it in GitHub Desktop.
artnet_ollieollie2.pde
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Pixel to ArtNet | |
* | |
*/ | |
import java.awt.*; | |
import processing.serial.*; | |
import ch.bildspur.artnet.*; //Library Artnet | |
import com.dhchoi.CountdownTimer; //Library CountDownTimer | |
import com.dhchoi.CountdownTimerService; | |
//Hex color of life pixel when full | |
String lifeColor = "FF4EDB1C"; | |
String deadColor = "FF180C21"; | |
//Trick bar 1 pixel screenshot | |
PImage bar_skate; | |
boolean done_blue = true; | |
boolean done_red = true; | |
boolean done_green = true; | |
boolean direction = false; | |
int anim = 0; | |
boolean start_anim = false; | |
boolean naze_combo = false; | |
boolean moyen_combo = false; | |
boolean ok_combo = false; | |
boolean parfait_combo = false; | |
boolean genial_combo = false; | |
ArtNetClient artnet; | |
byte[] dmxCurrentData = new byte[512]; | |
byte[] dmxNewData = new byte[512]; | |
byte red = 0; | |
byte green = 0; | |
byte blue = 0; | |
int nbleds = 13; | |
CountdownTimer ledsTimer; | |
void setup() { | |
println("OpenLight -----------"); | |
size(200, 300); | |
surface.setResizable(true); | |
surface.setTitle("PixelArtnet"); | |
fill(204, 102, 0); | |
rect(0, 0, 200, 300); | |
populateArray(); | |
artnet = new ArtNetClient(null); | |
artnet.start(); | |
red = 127; | |
ledsTimer = CountdownTimerService.getNewCountdownTimer(this).configure(1, 2000).start(); | |
} | |
void draw() { | |
analysePixels(); | |
} | |
//This is where the pixels are analyse, as much pixel as you want | |
void analysePixels() { | |
try { | |
//Screenshot | |
bar_skate = new PImage(new Robot().createScreenCapture(new Rectangle(1164, 1034, 1, 1))); | |
color color_bar_skate = bar_skate.get(0, 0); | |
String hex_color_bar_skate = hex(color_bar_skate); | |
if(!hex_color_bar_skate.equals("FF130000")){ | |
println(hex_color_bar_skate); | |
} | |
fill(color_bar_skate); | |
rect(0, 0, 200, 300); | |
if (!start_anim && hex_color_bar_skate.equals("FFFF0000")) { | |
println("Show Red (Naze)"); | |
red = 127; | |
blue = 0; | |
green = 0; | |
ledsTimer = CountdownTimerService.getNewCountdownTimer(this).configure(1, 1000).start(); | |
start_anim = true; | |
} | |
if (!start_anim && hex_color_bar_skate.equals("FF00000")) { | |
println("Show Yellow (Moyen)"); | |
red = 127; | |
green = 127; | |
blue = 0; | |
ledsTimer = CountdownTimerService.getNewCountdownTimer(this).configure(1, 1000).start(); | |
start_anim = true; | |
} | |
if (!start_anim && hex_color_bar_skate.equals("FFD92097")) { | |
println("Show Purple (OK)"); | |
red = 127; | |
green = 0; | |
blue = 127; | |
ledsTimer = CountdownTimerService.getNewCountdownTimer(this).configure(1, 1000).start(); | |
start_anim = true; | |
} | |
if (!start_anim && hex_color_bar_skate.equals("FF00DF52")) { | |
println("Show Green (Parfait)"); | |
green = 127; | |
red = 0; | |
blue = 0; | |
ledsTimer = CountdownTimerService.getNewCountdownTimer(this).configure(1, 1000).start(); | |
start_anim = true; | |
} | |
if (!start_anim && hex_color_bar_skate.equals("FF26CFDE")) { | |
println("Show Cyan (Génial)"); | |
red = 0; | |
green = 127; | |
blue = 127; | |
ledsTimer = CountdownTimerService.getNewCountdownTimer(this).configure(1, 1000).start(); | |
start_anim = true; | |
} | |
} | |
catch (AWTException e) { | |
println("Processing Pixels ERROR -----------"); | |
println(e); | |
} | |
} | |
void processStrips() { | |
changeColor(); | |
for (int led = 0; led < nbleds; led = led+1) { | |
//Green | |
int led_pos = (3*led); | |
if (dmxNewData[led_pos] > dmxCurrentData[led_pos]) { | |
dmxCurrentData[led_pos] = byte(dmxCurrentData[led_pos] + 1); | |
done_green = false; | |
} | |
if (dmxNewData[led_pos] < dmxCurrentData[led_pos]) { | |
dmxCurrentData[led_pos] = byte(dmxCurrentData[led_pos] - 1); | |
done_green = false; | |
} | |
if (dmxNewData[led_pos] == dmxCurrentData[led_pos]) { | |
done_green = true; | |
} | |
//Red | |
led_pos = (3*led) + 1; | |
if (dmxNewData[led_pos] > dmxCurrentData[led_pos]) { | |
dmxCurrentData[led_pos] = byte(dmxCurrentData[led_pos] + 1); | |
done_red = false; | |
} | |
if (dmxNewData[led_pos] < dmxCurrentData[led_pos]) { | |
dmxCurrentData[led_pos] = byte(dmxCurrentData[led_pos] - 1); | |
done_red = false; | |
} | |
if (dmxNewData[led_pos] == dmxCurrentData[led_pos]) { | |
done_red = true; | |
} | |
//Blue | |
led_pos = (3*led) + 2; | |
if (dmxNewData[led_pos] > dmxCurrentData[led_pos]) { | |
dmxCurrentData[led_pos] = byte(dmxCurrentData[led_pos] + 1); | |
done_blue = false; | |
} | |
if (dmxNewData[led_pos] < dmxCurrentData[led_pos]) { | |
dmxCurrentData[led_pos] = byte(dmxCurrentData[led_pos] - 1); | |
done_blue = false; | |
} | |
if (dmxNewData[led_pos] == dmxCurrentData[led_pos]) { | |
done_blue = true; | |
} | |
} | |
artnet.unicastDmx("2.0.0.1", 0, 0, dmxCurrentData); | |
} | |
void changeColor() { | |
if (anim < 2) { | |
if (!direction && done_green && done_red && done_blue) { | |
println("Start UP"); | |
anim = anim + 1; | |
println(anim); | |
for (int led = 0; led < nbleds; led = led+1) { | |
//Blue | |
int led_pos = (3*led); | |
dmxNewData[led_pos] = green; | |
dmxNewData[led_pos + 1] = red; | |
dmxNewData[led_pos + 2] = blue; | |
} | |
direction = true; | |
} else if (direction && done_green && done_red && done_blue) { | |
println("Start DOWN"); | |
anim = anim +1; | |
println(anim); | |
for (int led = 0; led < nbleds; led = led+1) { | |
//Blue | |
int led_pos = (3*led); | |
dmxNewData[led_pos] = 0; | |
dmxNewData[led_pos + 1] = 0; | |
dmxNewData[led_pos + 2] = 0; | |
} | |
direction = false; | |
} | |
} | |
} | |
void populateArray() { | |
for (int led = 0; led < nbleds*3; led = led+1) { | |
//Blue | |
dmxCurrentData[led] = byte(0); | |
dmxNewData[led] = byte(0); | |
} | |
} | |
void onTickEvent(CountdownTimer t, long timeLeftUntilFinish) { | |
processStrips(); | |
} | |
void onFinishEvent(CountdownTimer t) { | |
println("Event finish restart"); | |
anim = 0; | |
start_anim = false; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment