Stap 5: Code
-Arduino code komt overeen met stap 2.-Jmyron en proCONTROLL te downloaden en installeren.
-De volgende is de code van de verwerking.
Aanpassen servoneutral waarde en COM nr.
Berekening van de formule in serialEvent() ongeldig en nietig keyPressed() xa aanpassen. (Stel 33 en 99. 33 is max sturen naar rechts en 99 dat naar links.)
XA (33-99) = /(camWidth_*k_) * x + 99; 0--> 99, camWidth_/2 * k -> 66, camWidth_ * k--> 33
(camWidth_/2 * k = 352/2 * 2 = 352, camWidth_ * k = 352 * 2 = 704, deze 0, 353, 704 zijn x-coördinaat in het weergavevenster.)
Verwerking van code
/*
* Auto No.02
* Servo, snelheidsregelaar, Driving Force GT & Webcam
* Verwerking---CARNO02
* Arduino Duemilanove---SVSC_A
*/
importeren van processing.serial.*;
importeren van procontroll.*;
importeren van net.java.games.input.*;
invoer JMyron.*;
Seriële port01;
ControllIO controle;
De inrichting van het ControllDevice;
ControllSlider slider0;
ControllSlider slider2;
ControllSlider slider3;
ControllButton button1;
ControllButton button13;
ControllButton button14;
JMyron de cam;
Microsoft LifeCam Toon RLA-00007
zweven camWidth_ = 352;
zweven camHeight_ = 288;
int camWidth = int(camWidth_);
int camHeight = int(camHeight_);
zweven k_ = 2;
int k = int(k_);
zweven k1 = camWidth_/127 * k;
zweven k2 = camHeight_/127 * k;
float x;
float y;
float xa;
zweven ya;
int vooruit = 0;
int servoneutral = 66; Servoneutral waarde verschilt per elke servo.
int speedcontrollerneutral = 63;
int steval = servoneutral;
int velval = speedcontrollerneutral;
int reversea = 'F';
Boole reverseb = false;
VOID Setup {}
size(camWidth*k,camHeight*k);
Stroke(128);
port01 = nieuwe Serial(this,"COM43",115200); COM nr. verschilt per elke PC.
port01.Clear();
controle = ControllIO.getInstance(this);
apparaat = controll.getDevice ("Logitech Driving Force GT USB"); Verwijzen voor Zinspreuk Zetbaas. Logitech mogelijk Logicool.
device.printSliders();
device.printButtons();
device.setTolerance(0.05f);
slider0 = device.getSlider(0); Stuurwiel
slider2 = device.getSlider(2); Breken van de pedaal
slider3 = device.getSlider(3); Gaspedaal
Button1 = device.getButton(1); Kruis van knop
button13 = device.getButton(13); Gear Shift hendel Pull
button14 = device.getButton(14); Gear Shift hendel Push
Fill(0);
rectMode(CENTER);
Cam = nieuwe JMyron();
cam.Start(camWidth,camHeight);
cam.findGlobs(0);
}
VOID draw() {}
cam.update();
int [] camPixels = cam.image();
loadPixels();
voor (int i2 = 0; i2 < hoogte; i2 ++) {}
voor (int i1 = 0; i1 < breedte; i1 ++) {}
pixels [i2 * breedte + i1] = camPixels [vloer ((hoogte-1-i2) /k) * camWidth + floor((width-1-i1)/k)];
}
}
updatePixels();
x = (constrain((1+slider0.getValue())*width/2,0,width));
if(Button1.pressed()) {vooruit = 0; y = hoogte/2; reversea = 'F'; reverseb = true;}
if(button13.pressed()) {vooruit = 1, y = hoogte/2; reversea = 'F'; reverseb = true;}
if(button14.pressed()) {vooruit = -1; y = hoogte/2; reversea = "R"; reverseb = false;}
if(forward ==1) {}
if(slider2.GetValue() < 0) {y = beperken (y + slider2.getValue()*8*k,height/2,height);}
if(slider3.GetValue() < 0) {y = beperken (y - slider3.getValue()*4*k,height/2,height);}
if(slider2.GetValue() > 0 & & slider3.getValue() > 0 & & y < hoogte * 2/3) {}
y = (beperken (y + slider2.getValue()*0.6*k,height/2,height*2/3));
} else if(slider2.getValue() > 0 & & slider3.getValue() > 0 & & y > hoogte * 2/3) {}
y = (beperken (y - slider3.getValue()*0.3*k,height*2/3,height));
}
}
Als (voorwaarts == -1) {}
if(slider2.GetValue() < 0) {y = beperken (y - slider2.getValue()*8*k,0,height/2);}
if(slider3.GetValue() < 0) {y = beperken (y + slider3.getValue()*4*k,0,height/2);}
Als (y < = hoogte * 5/12 & & reverseb == false) {y = hoogte/2; reverseb = true;}
if(slider2.GetValue() > 0 & & slider3.getValue() > 0 & & y > hoogte * 1/3) {}
y = (beperken (y - slider2.getValue()*0.6*k,height*1/3,height/2));
} else if(slider2.getValue() > 0 & & slider3.getValue() > 0 & & y < hoogte * 1/3) {}
y = (beperken (y + slider3.getValue()*0.3*k,0,height*1/3));
}
}
line (x, 0 x, hoogte);
lijn (0, hoogte-y-, breedte-, hoogte-y);
}
VOID serialEvent(Serial p) {}
XA (33-99) = /(camWidth_*k_) * x + 99; 0--> 99, 352/2 * k -> 66, 352 * k--> 33
steval = int(xa);
velval = int(y/k2);
if(p.available() > 0) {}
port01.write(steval+128);
port01.write(velval);
port01.write(reversea);
Print(steval);Print(",");Print(velval);Print(",");println(char(reversea));
}
}
ongeldig keyPressed() {}
if(Key=='s') {}
voorwaarts = 0;
x = breedte/2;
y = hoogte/2;
XA (33-99) = /(camWidth_*k_) * x + 99;
steval = int(xa);
velval = int(y/k2);
port01.write(steval+128);
port01.write(velval);
port01.write(reversea);
}
}