Guest User

Untitled

a guest
Oct 18th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.54 KB | None | 0 0
  1. // Be sure to choose File > Import Library > p5.serialport.js from the P5 IDE main menu to load serial library
  2.  
  3. // Terminal command to install p5.serialserver: npm install p5.serialserver
  4. // Terminal command to start server: node ~/node_modules/p5.serialserver/startserver.js
  5.  
  6. let serial; // variable to hold an instance of the serialport library
  7. let options = {
  8. baudrate: 9600
  9. }; // set baudrate to 9600; must match Arduino baudrate
  10. //let portName = '/dev/cu.HC-05-DevB';
  11. //let portName = '/dev/cu.Bluetooth-Incoming-Port';
  12. let portName = '/dev/cu.usbmodem14621'; // fill in serial port name
  13. let data; // for incoming serial data
  14. let val;
  15. let r, g, b, c, d;
  16. //let threshold = 10;
  17. let cBtn, bBtn, wBtn, resetBtn, eraseBtn, clearBtn;
  18. let btnPosX, btnPosY;
  19. let radiusHigh;
  20.  
  21. function init() {
  22. createCanvas(windowWidth, windowHeight); // make the canvas
  23. serial = new p5.SerialPort(); // make a new instance of the serialport library
  24. serial.on('data', serialEvent); // callback for when new data arrives
  25. serial.open(portName, options); // open a serial port @ 9600
  26.  
  27. background(220);
  28.  
  29. btnPosX = width / 10;
  30. btnPosY = height / 10;
  31.  
  32. cBtn = createButton("Pick Color!"); // color picker button
  33. cBtn.position(width - btnPosX, btnPosY);
  34. cBtn.mousePressed(colorPicker);
  35.  
  36. resetBtn = createButton("Reset"); // color reset button
  37. resetBtn.position(width - btnPosX, btnPosY + 25);
  38. resetBtn.mousePressed(resetColor);
  39.  
  40. eraseBtn = createButton("Eraser"); // eraser button
  41. eraseBtn.position(width - btnPosX, btnPosY + 50);
  42. eraseBtn.mousePressed(eraser);
  43.  
  44. clearBtn = createButton("Clear"); // clear canvas button
  45. clearBtn.position(width - btnPosX, btnPosY + 75);
  46. clearBtn.mousePressed(clearCanvas);
  47.  
  48. fill(0); // initiate color to black
  49. }
  50.  
  51. function spray() {
  52. stroke(0);
  53. rect(width - btnPosX + 5, btnPosY - 70, 60, 60);
  54.  
  55. radiusHigh = d * 0.5;
  56.  
  57. if (d > 0) {
  58. for (let i = 0; i <= 1000; i++) {
  59. let angle = random(TWO_PI);
  60. let radius = random(0, radiusHigh);
  61. let offsetX = radius * cos(angle);
  62. let offsetY = radius * sin(angle);
  63. let sizeX = random(1.2);
  64. let sizeY = random(1.2);
  65. //fill(r, g, b);
  66. noStroke();
  67. rect(mouseX + offsetX, mouseY + offsetY, sizeX, sizeY);
  68. }
  69. // if pointer stays at one point, increase diameter of spray nozzle
  70. if (d > 0 && mouseX == mouseX) {
  71. for (let i = 0; i <= 1200; i++) {
  72. let angle = random(TWO_PI);
  73. radiusHigh = radiusHigh + 0.032;
  74. let radius = random(0, radiusHigh);
  75. let offsetX = radius * cos(angle);
  76. let offsetY = radius * sin(angle);
  77. let sizeX = random(1.2);
  78. let sizeY = random(1.2);
  79. // let fDist = dist(mouseX, offsetX, mouseY, offsetY);
  80. // let flow = random(-fDist, fDist);
  81. //console.log(fDist);
  82. noStroke();
  83. rect(mouseX + offsetX, mouseY + offsetY, sizeX, sizeY);
  84. // ellipse(mouseX + flow, mouseY + 100, 5, 5);
  85. }
  86. }
  87. }
  88. }
  89.  
  90. function serialEvent() {
  91. data = serial.readStringUntil("/");
  92. //console.log(data);
  93. // let arr = data.split(",").map((item) => item.trim());
  94. val = data.split(",");
  95. r = Number(val[0]);
  96. g = Number(val[1]);
  97. b = Number(val[2]);
  98. c = Number(val[3]);
  99. d = Number(val[4]);
  100.  
  101. d = map(d, 50, 1000, 0, 100);
  102.  
  103. r *= 255;
  104. r /= c;
  105. g *= 255;
  106. g /= c;
  107. b *= 255;
  108. b /= c;
  109.  
  110. r = parseInt(r);
  111. g = parseInt(g);
  112. b = parseInt(b);
  113. }
  114.  
  115. function colorPicker() {
  116. fill(r, g, b);
  117. }
  118.  
  119. function resetColor() {
  120. fill(0);
  121. }
  122.  
  123. function eraser() {
  124. fill(220);
  125. }
  126.  
  127. function clearCanvas() {
  128. background(220);
  129. }
Add Comment
Please, Sign In to add comment