ItsNoah

ProcessingController

Dec 15th, 2021
2,775
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.54 KB | None | 0 0
  1. import processing.serial.*;
  2. import controlP5.*;
  3.  
  4. Serial myPort;
  5. ControlP5 cp5;
  6.  
  7. ArrayList<Integer> leds = new ArrayList<Integer>();
  8. int off = 0;
  9. int ledSize = 20;
  10.  
  11. long last;
  12. int interval = 100;
  13. float y = 0;
  14.  
  15. int noiseDetail = 2;
  16. float amplitude = 10;
  17.  
  18. int inByte = -1;
  19. int phase = 0;
  20.  
  21. void setup() {
  22.   size(2300, 1080, P2D);
  23.   colorMode(HSB, 100);
  24.  
  25.   off = (width - (ledSize*100))/2;
  26.  
  27.   for (int i = 0; i < 100; i++) {
  28.     leds.add(color(100, 100, 100));
  29.   }
  30.  
  31.  
  32.   cp5 = new ControlP5(this);
  33.  
  34.   cp5.addSlider("noiseDetail")
  35.     .setPosition(20, 20)
  36.     .setSize(200, 30)
  37.     .setRange(1, 8)
  38.     .setNumberOfTickMarks(8);
  39.  
  40.   cp5.addSlider("amplitude")
  41.     .setPosition(20, 60)
  42.     .setSize(200, 30)
  43.     .setRange(2, 20);
  44.  
  45.   cp5.addSlider("interval")
  46.     .setPosition(20, 100)
  47.     .setSize(200, 30)
  48.     .setRange(10, 200);
  49.  
  50.  
  51.   String portName = Serial.list()[1];
  52.   myPort = new Serial(this, portName, 250000);
  53. }
  54.  
  55. void serialEvent(Serial myPort) {
  56.   inByte = myPort.read();
  57.   println("Read: "+inByte);
  58. }
  59.  
  60.  
  61. void draw() {
  62.   if (phase == 0) {
  63.     myPort.write((int)'a');
  64.     phase = 1;
  65.     println("Sent A, waiting for B...");
  66.   }
  67.   if (phase == 1) {
  68.     if (inByte == 'b') {
  69.       phase = 2;
  70.       println("Got B, Sending C...");
  71.       return;
  72.     }
  73.   }
  74.   if (phase == 2) {
  75.     myPort.write((int)'c');
  76.     phase = 3;
  77.     println("Sent C, waiting for D...");
  78.   }
  79.   if (phase == 3) {
  80.     if (inByte == 'd') {
  81.       phase = 4;
  82.       println("Got D, Ready to Start!");
  83.       return;
  84.     }
  85.   }
  86.  
  87.   if (phase == 4) {
  88.     noiseDetail(noiseDetail, 0.5);
  89.     float o = 0;
  90.     for (int i = 0; i < 100; ++i) {
  91.       int c = color(noise((int) o, y) * amplitude, 100, 100);
  92.       leds.set(i, c);
  93.       o += 0.5;
  94.     }
  95.  
  96.     if (millis() - last > interval) {
  97.       y += 0.1;
  98.       transmitLeds();
  99.       last = millis();
  100.     }
  101.  
  102.     drawLeds();
  103.   }
  104. }
  105.  
  106. void transmitLeds() {
  107.   //String data = "";
  108.   //for (int l = 0; l < leds.size(); l++) {
  109.   //  data += hex(leds.get(l), 6);
  110.   //  myPort.write(hex(leds.get(l), 6));
  111.   //}
  112.   //data += 'X';
  113.   myPort.write((char)random(48, 57));
  114.   myPort.write((char)random(48, 57));
  115.   myPort.write('x');
  116.  
  117.   //transmit(data);
  118. }
  119.  
  120. void transmit(String data) {
  121.   for (int i = 0; i < data.length(); i++) myPort.write(data.charAt(i));
  122.   print("Transmitted... ");
  123. }
  124.  
  125. void drawLeds() {
  126.   background(0);
  127.   for (int l = 0; l < leds.size(); l++) {
  128.     // int c = leds.get(l);
  129.     noStroke();
  130.     fill(leds.get(l));
  131.     rect(off + (ledSize*l), 540, ledSize, ledSize);
  132.   }
  133. }
  134.  
Advertisement
Add Comment
Please, Sign In to add comment