aide Arduino uno barographe
bonjour à tous,
j'ai découvert arduino il y peu et à force de regarder ce qu'il était possible de faire je me suis lancé.
je me suis donc équiper d'une carte arduino uno, d'un capteur de pression bmp180, d'un capteur de température et hygrométrie dht22, et d'un ecran tft 2.8' adafruit.
en tâtonnant j'ai réussi à faire ce que je voulais.
j'ai réalisé un barographe mais je bute encore sur un problème et j'aurais aimé avoir votre avis.
voici ce que j'ai programmé en setup et loop
jai ensuite l'initialisation des capteurs
mon problème est le suivant. je n'arrive pas à gérer la fin de l'affichage sur l'écran lorsque mon compteur atteint 319.
j'ai essayé de le forcer à 0 mais cette boucle bloque l'affichage des points.
je voudrais savoir quelle méthode utiliser pour que la courbe avance jusqu'au bout puis on efface le plus ancien point et le nouveau reste à 319.
je ne sais pas si je me suis bien exprimé.
mais si quelqu'un pourrait me donner un conseil pour savoir la méthode à utiliser.
voici une photo du montage
">
bonne soirée à tous
j'ai découvert arduino il y peu et à force de regarder ce qu'il était possible de faire je me suis lancé.
je me suis donc équiper d'une carte arduino uno, d'un capteur de pression bmp180, d'un capteur de température et hygrométrie dht22, et d'un ecran tft 2.8' adafruit.
en tâtonnant j'ai réussi à faire ce que je voulais.
j'ai réalisé un barographe mais je bute encore sur un problème et j'aurais aimé avoir votre avis.
voici ce que j'ai programmé en setup et loop
jai ensuite l'initialisation des capteurs
code: [select]
void setup() {
serial.begin(9600);
serial.println("ili9341 test!");
dht.begin();
while(!serial){;} // waith until leonardo serial port ready
delay(5000);
wire.begin(); // activate i2c
init_sensor(); // initialize baro sensor variables
delay(100);
tft.begin();
// read diagnostics (optional can debug problems)
uint8_t x = tft.readcommand8(ili9341_rdmode);
serial.print("display power mode: 0x"); serial.println(x, hex);
x = tft.readcommand8(ili9341_rdmadctl);
serial.print("madctl mode: 0x"); serial.println(x, hex);
x = tft.readcommand8(ili9341_rdpixfmt);
serial.print("pixel format: 0x"); serial.println(x, hex);
x = tft.readcommand8(ili9341_rdimgfmt);
serial.print("image format: 0x"); serial.println(x, hex);
x = tft.readcommand8(ili9341_rdselfdiag);
serial.print("self diagnostic: 0x"); serial.println(x, hex);
serial.println(f("benchmark time (microseconds)"));
pinmode(retroeclairage, output);
analogwrite(retroeclairage, 30);
tft.fillscreen(black);
tft.setrotation(1);
tft.setcursor(0, 0);
tft.settextcolor(white); tft.settextsize(1);
tft.print("1100 hpa");
tft.drawline(50, 5, 320, 5, white);
tft.setcursor(0,80);
tft.settextcolor(white); tft.settextsize(1);
tft.print("1013 hpa");
tft.drawline(0, 92, 320, 92, white);
tft.setcursor(0,175);
tft.settextcolor(white); tft.settextsize(1);
tft.print("920 hpa");
tft.drawline(0, 185, 320, 185, white);
tft.setcursor(135,215);
tft.settextcolor(green); tft.settextsize(2);
tft.print("hpa");
tft.setcursor(290,200);
tft.settextcolor(white); tft.settextsize(2);
tft.print("'c");
tft.setcursor(290,220);
tft.settextcolor(green); tft.settextsize(2);
tft.print("%");
temps = millis(); //on initialise le temps
}
void loop()
{
delay(2500);
int32_t b5;
b5 = temperature(); // read , calculate temperature (t)
serial.print("temperature: ");
serial.print(t, 2);
serial.print(" c, ");
p = pressure(b5); // read , calculate pressure (p)
serial.print("pressure: ");
serial.print(p, 2);
serial.print(" hpa, ");
serial.print("");
float h = dht.readhumidity(); //lecture de l'humidité et affectation à la variable de type « float »
float t = dht.readtemperature(); //lecture de la température et affectation à la variable de type // »float »
//on vérifie juste que le retour soit valide, c'est à dire dans la plage de mesure de la sonde, sinon //on affiche une erreur
if (isnan(t) || isnan(h)) {
serial.println("erreur lecture dht");
} else {
serial.print("humidite: " ); //affichage sur le monotoring
serial.print(h);
serial.print( " %\t ");
serial.print("degres: " );
serial.print(t);
serial.println(" *c ");
tft.setcursor(5,210);
tft.fillrect(5,210,125,50,black);
tft.settextcolor(white); tft.settextsize(3);
tft.print(p, 2);
tft.setcursor(210,200);
tft.fillrect(200,200,80,50,black);
tft.settextcolor(white); tft.settextsize(2);
tft.print(t);
tft.setcursor(210,220);
tft.settextcolor(white); tft.settextsize(2);
tft.print(h);
if((millis() - temps) > 270000)
{
compteur++;
ypixel = ((1100-(p)+5));
xpixel = compteur;
tft.drawline(xpixel ,8 ,xpixel,184 ,black); // efface point précédent
tft.drawpixel(xpixel ,ypixel ,green);
tft.setcursor(0, 0);
tft.settextcolor(white); tft.settextsize(1);
tft.print("1100 hpa");
tft.drawline(50, 5, 320, 5, white);
tft.setcursor(0,80);
tft.settextcolor(white); tft.settextsize(1);
tft.print("1013 hpa");
tft.drawline(0, 92, 320, 92, white);
tft.setcursor(0,175);
tft.settextcolor(white); tft.settextsize(1);
tft.print("920 hpa");
tft.drawline(0, 185, 320, 185, white);
serial.print(compteur);
temps = millis();
}
if(compteur = 319)
{
compteur = 0;
}
delay(2500); // delay between each readout
}}
mon problème est le suivant. je n'arrive pas à gérer la fin de l'affichage sur l'écran lorsque mon compteur atteint 319.
j'ai essayé de le forcer à 0 mais cette boucle bloque l'affichage des points.
je voudrais savoir quelle méthode utiliser pour que la courbe avance jusqu'au bout puis on efface le plus ancien point et le nouveau reste à 319.
je ne sais pas si je me suis bien exprimé.
mais si quelqu'un pourrait me donner un conseil pour savoir la méthode à utiliser.
voici une photo du montage
">
bonne soirée à tous
j'ai réalisé un barographe mais je bute encore sur un problème et j'aurais aimé avoir votre avis.bonsoir
mon problème est le suivant. je n'arrive pas à gérer la fin de l'affichage sur l'écran lorsque mon compteur atteint 319.
j'ai essayé de le forcer à 0 mais cette boucle bloque l'affichage des points.
je voudrais savoir quelle méthode utiliser pour que la courbe avance jusqu'au bout puis on efface le plus ancien point et le nouveau reste à 319.
je ne sais pas si je me suis bien exprimé.
si si , l'exposé est clair
la reactualisation de courbe à t=0 (actuel) sur la profondeur d'acquisition de la courbe , nécessite de mémoriser la courbe précédente à t-1)
ça passe par de l'alimentation/decalage de postes de 2 tables en valeurs , le dimensionnement des 2 tables etant fonction du nombre de points "à afficher"
Arduino Forum > International > Français (Moderators: jfs, Snootlab) > aide Arduino uno barographe
arduino
Comments
Post a Comment