Väderstation Arduino och bearbetning (5 / 6 steg)
Steg 5: Bearbetning kod
import processing.serial.*;PFont p;
Seriella myPort; Den seriella porten
int xPos = 100; horisontellt läge av grafen
Ogiltiga inställningar () {
size(700,500);
p=createFont("Arial",16,true);
Background(0); Ställ in bakgrunden svart
för (int u = 99; u < bredd; u = u + 60) //loop skapar vertikala rutnät
{
stroke(100);
line(u,0,u,height-99);
}
för (int t = höjd-99; t > 0, t = t-25) //loop skapar horisontella grid
{
stroke(100);
line(99,t,width,t);
}
textFont(p,12); ange teckenstorlek till 12
textAlign(LEFT);
Fill(255,0,0); röd
text ("Vind hastighet km/h", 100, höjd-25); skriva ut vindhastighet
Fill(0,255,0); grön
text ("barometertrycket mb", 210, höjd-25);
Fill(0,0,255); blå
text ("Grader", 355, höjd-25);
Fill(255); vit
text ("Vindens riktning N = 0 grader", 460, höjd-25);
Fill(100); grå
textAlign(RIGHT);
text("0",110,height-87);
för (int m = 160; m < bredd, m = m + 60) //loop förlägger 0-9 minuter
{
int Min =(m-100)/60.
Fill(100);
textAlign(CENTER);
text(min,m,height-87);
}
Fill(100);
textAlign(CENTER);
text("Minutes",width/2,height-70);
för (int p = 400, p > 0, p = p-50) //loop förlägger numrerar på vertikala rutnät varannan linje
{
float pat=map(p,400,0,0,200);
int pati=int(pat); förändringar float klappa till ett int
Fill(255,0,0);
textAlign(RIGHT);
text(pati,98,p+5); Vindmätningar hastighet
float patie=map(p,400,0,850,1100);
int paties=int(patie);
Fill(0,255,0);
text (paties, 75, p + 5); //pressure mätningar
float patiesTemp=map(p,400,0,-30,55);
int patiesTemp1 = int (patiesTemp);
Fill(0,0,255);
text(patiesTemp1,45,p+5); Temp mätningar
float patiesDirec=map(p,400,0,0,359);
int patiesDirect=int(patiesDirec);
Fill(255);
text(patiesDirect,25,p+5); Vindmätningar riktning
}
Lista över alla tillgängliga seriella portar
println(Serial.list());
Jag vet att den första porten i listan följetong på min mac
är alltid min Arduino, så jag öppnar Serial.list() [0].
Öppna oavsett port är den du använder.
myPort = ny följetong (denna, Serial.list() [0], 9600);
inte generera ett serialEvent() om du inte får ett radmatningstecken:
myPort.bufferUntil('\n');
Ange inledande bakgrund:
}
void draw() {}
void serialEvent (Serial myPort) {
få den ASCII-strängen:
InString sträng = myPort.readStringUntil('\n');
String xWindSpeed = inString.substring(0,4);
String xPressure = inString.substring(4,8);
String xtemp = inString.substring(8,12);
Sträng xWindDirect=inString.substring(12,16);
int yWindSpeed=int(xWindSpeed);
int yPressure=int(xPressure);
int ytemp=int(xtemp);
int yWindDirect=int(xWindDirect);
float WindSpeed=map(yWindSpeed,0,1023,height-104,-3);
float Pressure=map(yPressure,0,1023,height-104,-3);
float temp=map(ytemp,0,1023,height-104,-3);
float WindDirect=map(yWindDirect,0,1023,height-104,-3);
stroke(255,0,0,150);
line(xPos,WindSpeed+4,xPos,WindSpeed);
stroke(0,255,0,150);
line(xPos,Pressure+4,xPos,Pressure);
stroke(0,0,255,150);
line(xPos,temp+4,xPos,temp);
stroke(255,255,255,150);
line(xPos,WindDirect+4,xPos,WindDirect);
xPos ++;
om (xPos > = bredd) {//if grafen är full spara bilden som jpeg och börja över
saveFrame("Weather-###.jpg");
xPos = 100;
p=createFont("Arial",16,true);
Background(0); Ställ in bakgrunden svart
för (int u = 99; u < bredd; u = u + 60) //loop skapar vertikala rutnät
{
stroke(100);
line(u,0,u,height-99);
}
för (int t = höjd-99; t > 0, t = t-25) //loop skapar horisontella grid
{
stroke(100);
line(99,t,width,t);
}
textFont(p,12); ange teckenstorlek till 12
textAlign(LEFT);
Fill(255,0,0); röd
text ("Vind hastighet km/h", 100, höjd-25); skriva ut vindhastighet
Fill(0,255,0); grön
text ("barometertrycket mb", 210, höjd-25);
Fill(0,0,255); blå
text ("Grader", 355, höjd-25);
Fill(255); vit
text ("Vindens riktning N = 0 grader", 460, höjd-25);
Fill(100); grå
textAlign(RIGHT);
text("0",110,height-87);
för (int m = 160; m < bredd, m = m + 60) //loop förlägger 0-9 minuter
{
int Min =(m-100)/60.
Fill(100);
textAlign(CENTER);
text(min,m,height-87);
}
Fill(100);
textAlign(CENTER);
text("Minutes",width/2,height-70);
för (int p = 400, p > 0, p = p-50) //loop förlägger numrerar på vertikala rutnät varannan linje
{
float pat=map(p,400,0,0,200);
int pati=int(pat); förändringar float klappa till ett int
Fill(255,0,0);
textAlign(RIGHT);
text(pati,98,p+5); Vindmätningar hastighet
float patie=map(p,400,0,850,1100);
int paties=int(patie);
Fill(0,255,0);
text (paties, 75, p + 5); //pressure mätningar
float patiesTemp=map(p,400,0,-30,55);
int patiesTemp1 = int (patiesTemp);
Fill(0,0,255);
text(patiesTemp1,45,p+5); Temp mätningar
float patiesDirec=map(p,400,0,0,359);
int patiesDirect=int(patiesDirec);
Fill(255);
text(patiesDirect,25,p+5); Vindmätningar riktning
}
om (xPos < bredd) {
öka den vågräta positionen:
xPos ++;
}
}
}