Arduino, gyroskop och bearbetning (3 / 4 steg)
Steg 3: programvara
Bearbetning koden:
import processing.serial.*;
import cc.arduino.*;
Arduino arduino;
int ledPin = 13.
flyta värde = 0;
int first_try = 1;
Sträng stf = "";
void setup()
{
size(400,400);
println(Arduino.list());
Arduino = nya Arduino (detta, Arduino.list()[1]);
arduino.pinMode (ledPin, Arduino.OUTPUT);
frameRate(60);
Delay(500);
}
flyta sens = 0.512;
float offset = 316;
flyta count = 0;
float valor = 0;
flyta aux1 = 0, aux2 = 0;
int [] contador = {
0,0,0}.
flyta first_time, tid.
flyta teta = 0;
void draw() {
Background(150);
Fill(250,250,250);
Arc(200,200,100,100,0,TWO_PI);
IF(first_try==1) {
fördröjning för arduino initiering
Delay(2000);
first_try = 0;
}
om (mousePressed == true) {
Fill(255,0,0);
AUX1 = 0;
AUX2 = 0;
Contador [0] = 0;
Contador [1] = 0;
Contador [2] = 0;
TETA = 0;
arduino.digitalWrite (ledPin, Arduino.HIGH);
}
annat {
Fill(0,0,0);
arduino.digitalWrite (ledPin, Arduino.LOW);
}
//####################################################################//
// //
Gyro / /
Skala Factor 2.5mV / / s = 0.512 räknas / / s / /
Kompensera 316 räknas = 1562mV = 1.562V / /
ADC 4,88 mV/räkna / / 0.2048 count/mV / /
// //
//####################################################################//
Count = 0;
för (int jag = 0; jag < 20; i ++) {
antal = antal + arduino.analogRead(0);
}
antal = antal /20;
Valor = (räkna - offset) / sens;
tid = millis ()-first_time;
first_time=Millis();
TETA = teta + valor * tid/1000;
om (teta > -1 & & teta < 1) teta = 0; undvika drift fel
PFont teckensnitt;
Font = loadFont("EngraversMT-48.vlw");
STF = str(teta);
textFont(font);
text(STF,150,270,200,200);
println ("teta:"+ teta +"count:"+ count +"tid:"+ tid +"valor:" + tapperhet);
line(200,200,50*cos(radians(TETA+270))+200,50*sin(radians(TETA+270))+200);
}