Space Frame struktur kraft sensorer (5 / 6 steg)
Steg 5: Konfigurera program
Koppla Arduino i datorn (en anslutning även jag kan hantera!) och ladda upp koden nedan märkt "ARDUINO". Öppna bearbetning och kör koden nedan märkt "Behandling".ARDUINO KOD:
=====================
www.plusea.at
läser en analog insignal från fem insatsvaror från din arduino ombord
och skickar det via seriell
/ variabler för insignal stift och
int analogInput0 = 0;
int analogInput1 = 1;
int analogInput2 = 2;
int analogInput3 = 3;
int analogInput4 = 4;
int analogInput5 = 5;
variabel för att lagra värdet
int value0 = 0;
int värde1 = 0;
int value2 = 0;
int value3 = 0;
int value4 = 0;
int value5 = 0;
void setup() {
förklaring av pin lägen
pinMode (analogInput0, ingång);
pinMode (analogInput1, ingång);
pinMode (analogInput2, ingång);
pinMode (analogInput3, ingång);
pinMode (analogInput4, ingång);
pinMode (analogInput5, ingång);
börja skicka över seriell port
Serial.BEGIN(9600);
} / / end setup
void loop() {
läsa av värdet på analog ingång
value0 = analogRead(analogInput0);
värde1 = analogRead(analogInput1);
value2 = analogRead(analogInput2);
value3 = analogRead(analogInput3);
value4 = analogRead(analogInput4);
value5 = analogRead(analogInput5);
skriva ut värdet över den seriella porten
Serial.Print (1, BYTE); prefix
Serial.Print(value0);
Serial.Print (10, BYTE); slutet signal
Serial.Print (2 BYTE);
Serial.Print(value1);
Serial.Print (10, BYTE);
Serial.Print (3, BYTE);
Serial.Print(value2);
Serial.Print (10, BYTE);
Serial.Print (4 BYTE);
Serial.Print(value3);
Serial.Print (10, BYTE);
Serial.Print (5, BYTE);
Serial.Print(value4);
Serial.Print (10, BYTE);
Serial.Print (6, BYTE);
Serial.Print(value5);
Serial.Print (10, BYTE);
vänta lite för att inte överbelasta hamnen
Delay(100);
} / / end loop
BEARBETNING KOD:
=====================
/*
* Baserat på koden av Hannah Perner-Wilson, www.plusea.at
* Ändrat av Sam Kronick www.newuntitledpage.com
*/
import processing.serial.*;
definition av fönsterstorlek
Du kan ändra storleken på fönstret som du vill
thresholdGraph skalas för att passa
den optimala storleken för thresholdGraph är 1000 x 400
int xWidth = 800;
int yHeight = 600;
Aktuella värden
int [] värden = {0,0,0,0,0,0}.
Tid-genomsnitt värden
int [] avgCounter = {0,0,0,0,0,0}.
int [] avgs = {0,0,0,0,0,0}.
statiska sista int intervall = 5;
Noll tvinga värden, ändrat på mellanslagstangenten press
int [] nollor = {0,0,0,0,0,0}.
variabler för seriell anslutning. portname och baudvärde är användarspecifika
Seriella port1;
Ange den seriella porten här (se listan skrivs ut när du kör programmet en gång)
Sträng V3 = Serial.list() [0];
String portname1 = V3;
int baudvärde = 9600;
int prefix = 1;
booleska myCatch = sant;
int serialIN = 0;
int serialINPUT = 0;
Strängbuffert = "";
int värde = 0;
void setup() {
Ange storlek och framerate
storlek (xWidth, yHeight);
frameRate(25);
Background(255);
strokeWeight(5);
stroke(0);
Smooth();
colorMode(HSB);
upprätta seriell anslutning
PORT1 = ny följetong (denna, portname1, baudvärde);
println(Serial.list()); skriva ut Följetong Lista
} //end setup
void keyPressed() {
om (nyckel == "") {
för (int jag = 0; jag nollor [i] = avgs [i];
}
}
}
Rita lyssnar till serieport, rita
void draw() {
Background(255);
lyssna till seriell port och utlösa seriell händelse
While(PORT1.available() > 0) {
serialIN = port1.read();
serialEvent(serialIN);
}
för (int jag = 0; jag < 4; i ++) {
om (frameCount % INTERVALLET > 0) {
avgCounter [i] += värden [i];
}
annat {
AVGs [i] = avgCounter [i] / intervall.
avgCounter [i] = 0;
}
om (avgs [i] - nollor [i] < 0)
fyllning (0, 20 *-(avgs [i] - zeros[i]), 250);
annat
fyllning (100, 20 * (avgs [i] - zeros[i]), 250);
rect (bredd/2, höjd/4 * i, 10*(avgs[i]-zeros[i]), höjd/4);
}
}
void serialEvent (int serialINPUT) {
IF(myCatch == true) {
om (serialINPUT! = 10) {
lägga till händelsen i buffert
buffert += char(serialINPUT);
println(serialINPUT);
}
annat {
om seriell anges radbrytning värdet att buffra värde och rensa buffert
värde = int(buffer);
Values[(prefix-1)] = värde;
myCatch = false;
buffert = "";
}
}
myCatch är beginging av varje sended numret används för att definiera hamnen
myCatch blir sant om följetong är mindre än 10 eftersom huvudet är 1-9
om (! myCatch & & serialINPUT < 10) {
myCatch = sant;
prefix = int(serialINPUT);
}
}