Étape 5: Code de traitement
Import processing.serial.* ;PFont p ;
Serial myPort ; Le port série
int xPos = 100 ; position horizontale du graphique
annuler le programme d’installation () {}
Size(700,500) ;
p=createFont("Arial",16,true) ;
Background(0) ; ensemble fond noir
pour (int u = 99; u < largeur; u = u + 60) //loop crée la grille verticale
{
Stroke(100) ;
Line(u,0,u,Height-99) ;
}
pour (int t = hauteur-99; t > 0; t = t-25) //loop crée la grille horizontale
{
Stroke(100) ;
Line(99,t,Width,t) ;
}
textFont(p,12) ; définir la taille de police à 12
textAlign(LEFT) ;
Fill(255,0,0) ; rouge
texte (« Vent vitesse MPH », 100, hauteur-25) ; imprimer la vitesse du vent
Fill(0,255,0) ; vert
texte (« pression barométrique mb », 210, hauteur-25) ;
Fill(0,0,255) ; bleu
texte (« Degrés Celsius », 355, hauteur-25) ;
Fill(255) ; blanc
texte ("Wind direction N = 0 deg", 460, hauteur-25) ;
Fill(100) ; gris
textAlign(RIGHT) ;
Text("0",110,Height-87) ;
pour (int m = 160; m < largeur; m = m + 60) //loop place 0-9 minutes
{
int =(m-100) Min/60 ;
Fill(100) ;
textAlign(CENTER) ;
Text(min,m,Height-87) ;
}
Fill(100) ;
textAlign(CENTER) ;
Text("minutes",width/2,Height-70) ;
pour (int p = 400; p > 0; p = p-50) numéros de //loop places sur la grille verticale toutes les autres lignes
{
float pat=map(p,400,0,0,200) ;
int pati=int(pat) ; flotteur de changements pat en int
Fill(255,0,0) ;
textAlign(RIGHT) ;
Text(PATI,98,p+5) ; mesures de vitesse de vent
float patie=map(p,400,0,850,1100) ;
int paties=int(patie) ;
Fill(0,255,0) ;
texte (paties, 75, p + 5), des mesures de //pressure
float patiesTemp=map(p,400,0,-30,55) ;
int patiesTemp1 = int (patiesTemp) ;
Fill(0,0,255) ;
Text(patiesTemp1,45,p+5) ; mesures temporaires
float patiesDirec=map(p,400,0,0,359) ;
int patiesDirect=int(patiesDirec) ;
Fill(255) ;
Text(patiesDirect,25,p+5) ; mesures de direction de vent
}
La liste de tous les ports série disponibles
println(Serial.List()) ;
Je sais que le premier port dans la liste de série sur mon mac
est-ce toujours mon Arduino, alors j’ai ouvert Serial.list() [0].
Ouvert quelque port est celui que vous utilisez.
myPort = nouvelle série (ce, Serial.list() [0], 9600) ;
ne génèrent pas un serialEvent() sauf si vous obtenez un caractère de saut de ligne :
myPort.bufferUntil('\n') ;
définir le contexte initial :
}
{} void draw()
void serialEvent (Serial myPort) {}
obtenir la chaîne ASCII :
String inString = myPort.readStringUntil('\n') ;
String xWindSpeed = inString.substring(0,4) ;
String xPressure = inString.substring(4,8) ;
String xtemp = inString.substring(8,12) ;
String 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 ++ ;
Si (xPos > = largeur) {//if le graphe est complet enregistrer l’image comme jpeg et commencer sur
saveFrame("Weather-###.jpg") ;
PosX = 100 ;
p=createFont("Arial",16,true) ;
Background(0) ; ensemble fond noir
pour (int u = 99; u < largeur; u = u + 60) //loop crée la grille verticale
{
Stroke(100) ;
Line(u,0,u,Height-99) ;
}
pour (int t = hauteur-99; t > 0; t = t-25) //loop crée la grille horizontale
{
Stroke(100) ;
Line(99,t,Width,t) ;
}
textFont(p,12) ; définir la taille de police à 12
textAlign(LEFT) ;
Fill(255,0,0) ; rouge
texte (« Vent vitesse MPH », 100, hauteur-25) ; imprimer la vitesse du vent
Fill(0,255,0) ; vert
texte (« pression barométrique mb », 210, hauteur-25) ;
Fill(0,0,255) ; bleu
texte (« Degrés Celsius », 355, hauteur-25) ;
Fill(255) ; blanc
texte ("Wind direction N = 0 deg", 460, hauteur-25) ;
Fill(100) ; gris
textAlign(RIGHT) ;
Text("0",110,Height-87) ;
pour (int m = 160; m < largeur; m = m + 60) //loop place 0-9 minutes
{
int =(m-100) Min/60 ;
Fill(100) ;
textAlign(CENTER) ;
Text(min,m,Height-87) ;
}
Fill(100) ;
textAlign(CENTER) ;
Text("minutes",width/2,Height-70) ;
pour (int p = 400; p > 0; p = p-50) numéros de //loop places sur la grille verticale toutes les autres lignes
{
float pat=map(p,400,0,0,200) ;
int pati=int(pat) ; flotteur de changements pat en int
Fill(255,0,0) ;
textAlign(RIGHT) ;
Text(PATI,98,p+5) ; mesures de vitesse de vent
float patie=map(p,400,0,850,1100) ;
int paties=int(patie) ;
Fill(0,255,0) ;
texte (paties, 75, p + 5), des mesures de //pressure
float patiesTemp=map(p,400,0,-30,55) ;
int patiesTemp1 = int (patiesTemp) ;
Fill(0,0,255) ;
Text(patiesTemp1,45,p+5) ; mesures temporaires
float patiesDirec=map(p,400,0,0,359) ;
int patiesDirect=int(patiesDirec) ;
Fill(255) ;
Text(patiesDirect,25,p+5) ; mesures de direction de vent
}
Si (xPos < largeur) {}
incrémenter la position horizontale :
xPos ++ ;
}
}
}