Bearbetning verktyg för Arduino (5 / 8 steg)
Steg 5: Tredje program... rullningslister!!!
Min tredje och sista bearbetningsprogram tar input från två rullningslisterna och sedan skicka ställning till Arduino. Förmodligen kan det användas i stället för en potentiometer input skäl. Du trycker på en skicka indata från den övre menyraden och sedan s för input från botten. Om du har frågor vänligen direkt dem nedan kommentarer :)
import processing.serial.*;
Seriell port;
int ss1;
int ss2;
HScrollbar hs1, hs2;
void setup() {
size(640,320);
noStroke();
println(Serial.list());
Port = ny följetong (denna, Serial.list() [0], 9600);
HS1 = nya HScrollbar(0,height/2+100,width,25,25);
HS2 = nya HScrollbar(0,height/2-100,width,25,25); }
void draw() {
Background(50,60,90);
flyta s1 = hs1.getPos();
flyta s2 = hs2.getPos();
SS1 = int(s1 * 1.4);
SS2 = int(s2 * 1.4);
HS1.Update();
HS2.Update();
HS1.display();
HS2.display();
IF(keyPressed) {
om (nyckel == "a" || nyckel == "A") {
port.write(SS1);}
om (nyckel =='s "|| nyckel == s ') {port.write(ss2) ;}} }
klass HScrollbar {
int swidth, sheight;
float xpos, ypos;
float haft, newspos;
float sposMin, sposMax;
int lös;
booleska över;
Boolean låst;
flyta mellan.
Klass HScrollbar (flyta xp, flyta yp, int sw, int sh, int l) {
swidth = sw;
sheight = sh;
int widthtoheight = sw - sh;
ratio = (float) sw / (float) widthtoheight;
Xpos = xp;
ypos = yp-sheight/2;
gå = xpos + swidth/2-sheight/2.
newspos = gå;
sposMin = xpos;
sposMax = xpos + swidth - sheight;
Loose = l; }
void update() {
om (overEvent()) {
över = sant; }
annat {
över = false; }
om (mousePressed & & över) {
låst = sant; }
om (! mousePressed) {
låst = false; }
om (låst) {
newspos = begränsa (mouseX-sheight/2, sposMin, sposMax); }
om (abs (newspos - gå) > 1) {gå = gå + (newspos-gå) / lös;}}
float begränsa (flyta val, flyta minv, flyta maxv) {
returnera min (max (val, minv), maxv); }
booleska overEvent() {
om (mouseX > xpos & & mouseX < xpos + swidth & & mouseY > ypos & & mouseY < ypos + sheight) {
return true; }
annat {return false;}}
void display() {
noStroke();
Fill(204);
rect (xpos ypos, swidth, sheight);
om (över || låst) {
fyllning (0, 0, 0); }
annat {
fyllning (102, 102, 102); }
rect (haft ypos, sheight, sheight); }
float getPos() {
returnera haft * förhållandet; } }