Standalone Arduino altimètre (2 / 3 étapes)

Étape 2: Le programme

Explications du code (code complet ci-dessous) :

 #include "U8glib.h"#include "BMP280.h" 

Ils sont les 2 bibliothèques, que vous devez mettre à l’intérieur de la Documents\Arduino\libraries\

 #define P0 1021.97 

C’est où vous calibrer l’altimètre, changer cette valeur. Une fois que c’est fait, c’est assez précis !

(par défaut c’est 1013.25, j’ai eu jusqu'à 1021.97 d’avoir la bonne altitude dans ma ville)

 U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); 

Ici, vous définissez le type d’écran Oled (128 x 64 etc....)

 u8g.drawStr( 5, 10, "Temp: "); u8g.drawStr( 5, 30, "Bar : "); u8g.drawStr( 5, 50, "Alt : "); u8g.drawStr( 50, 10, sT); u8g.drawStr( 50, 30, sP); u8g.drawStr( 50, 50, sA); 

Ici les informations que vous souhaitez afficher le premier écran et leur position (Y, X, valeur)

 dtostrf(A_MIN, 4, 2, sA_MIN); dtostrf(A_MAX, 4, 2, sA_MAX); u8g.drawStr( 5, 20, "A Min: "); u8g.drawStr( 60, 20, sA_MIN); u8g.drawStr( 5, 45, "A Max: "); u8g.drawStr( 60, 45, sA_MAX); 

Même chose pour le deuxième écran

 if ( A > A_MAX) { A_MAX = A; } 
 if ( A < A_MIN || A_MIN == 0) { A_MIN = A; } 

Ici, nous mettons à jour l’altitude minimum et maximum stocké

 do { draw(T, P, A); } while ( u8g.nextPage() ); u8g.firstPage(); delay(1000); 

Ici, avec la valeur de délai (1000 en l’occurrence), vous séjournerez 1 seconde sur le premier écran avant de passer à la seconde. Alors que changer si vous voulez personnaliser l’affichage de l’heure:)

 do { draw2(A_MIN, A_MAX); } while ( u8g.nextPage() ); u8g.firstPage(); delay(1000); 

Idem pour le second écran !

Espère que c’est clair, n’hésitez pas à poster une question dans les commentaires si nécessaire !

Voici le code complet :

 #include "U8glib.h"#include "BMP280.h" #include "Wire.h" #define P0 1021.97 //1013.25 BMP280 bmp; // OLED Type U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); char sT[20]; char sP[9]; char sA[9]; char sA_MIN[9]; char sA_MAX[9]; double A_MIN = 0; double A_MAX = 0; void draw(double T, double P, double A) { u8g.setFont(u8g_font_unifont); dtostrf(T, 4, 2, sT); dtostrf(P, 4, 2, sP); dtostrf(A, 4, 2, sA); u8g.drawStr( 5, 10, "Temp: "); u8g.drawStr( 5, 30, "Bar : "); u8g.drawStr( 5, 50, "Alt : "); u8g.drawStr( 50, 10, sT); u8g.drawStr( 50, 30, sP); u8g.drawStr( 50, 50, sA); } void draw2(double A_MIN, double A_MAX) { u8g.setFont(u8g_font_unifont); dtostrf(A_MIN, 4, 2, sA_MIN); dtostrf(A_MAX, 4, 2, sA_MAX); u8g.drawStr( 5, 20, "A Min: "); u8g.drawStr( 60, 20, sA_MIN); u8g.drawStr( 5, 45, "A Max: "); u8g.drawStr( 60, 45, sA_MAX); } void setup() { Serial.begin(9600); if (!bmp.begin()) { Serial.println("BMP init failed!"); while (1); } else Serial.println("BMP init success!"); bmp.setOversampling(4); u8g.setColorIndex(1); u8g.setFont(u8g_font_unifont); } void loop(void) { double T, P; char result = bmp.startMeasurment(); if (result != 0) { delay(result); result = bmp.getTemperatureAndPressure(T, P); if (result != 0) { double A = bmp.altitude(P, P0); if ( A > A_MAX) { A_MAX = A; } if ( A < A_MIN || A_MIN == 0) { A_MIN = A; } // Serial.print("T = \t"); Serial.print(T, 2); Serial.print(" degC\t"); // Serial.print("P = \t"); Serial.print(P, 2); Serial.print(" mBar\t"); // Serial.print("A = \t"); Serial.print(A, 2); Serial.println(" m"); u8g.firstPage(); do { draw(T, P, A); } while ( u8g.nextPage() ); u8g.firstPage(); delay(1000); do { draw2(A_MIN, A_MAX); } while ( u8g.nextPage() ); u8g.firstPage(); delay(1000); } else { Serial.println("Error."); } } else { Serial.println("Error."); } delay(100); } #include « Wire.h »1013.25 BMP280 bmp ; Type OLEDsT Char [20] ; sP de char [9] ; char de sA [9] ; char sA_MIN [9] ; char sA_MAX [9] ; double A_MIN = 0 ; double A_MAX = 0 ; void draw (double T, double P, double A) {u8g.setFont(u8g_font_unifont) ; dtostrf (T, 4, 2, sT); dtostrf (P, 4, 2, sP); dtostrf (A, 4, 2, sA) ;} void draw2 (double A_MIN, double A_MAX) {u8g.setFont(u8g_font_unifont) ;} void setup() {Serial.begin(9600) ; if (! bmp.begin()) {Serial.println ("BMP init a échoué!"); while (1);} else Serial.println (« succès BMP init!"); bmp.setOversampling(4) ; u8g.setColorIndex(1) ; u8g.setFont(u8g_font_unifont);} void loop(void) {double T, P; résultat char = bmp.startMeasurment() ; if (résultat! = 0) {delay(result) ; résultat = bmp.getTemperatureAndPressure (T, P); if (résultat! = 0) {double A = bmp.altitude (P, P0) ;Si (A < A_MIN || A_MIN == 0) {A_MIN = A;} / / Serial.print ("T = \t") ; Serial.Print (T, 2) ; Serial.Print ("degC\t") ; Serial.Print (« P = \t ") ; Serial.Print (P, 2) ; Serial.Print ("mBar\t") ; Serial.Print ("A = \t") ; Serial.Print (A, 2) ; Serial.println ("m") ; u8g.FirstPage() ;

Articles Liés

Standalone Arduino chronomètre - bouclier de clavier LCD SainSmart

Standalone Arduino chronomètre - bouclier de clavier LCD SainSmart

donc, pour mon premier Instructable, je vais aussi partager avec vous mon premier projet: A Standalone Arduino CHRONOMETRE.Je dois avouer que cela n'a pas été entièrement créé par moi. J'ai pris l'idée d'un autre chronomètre où vous lire l'info sur l
Un altimètre Arduino compact, pour les avions RC

Un altimètre Arduino compact, pour les avions RC

Merci de voter pour ce Instructable si vous pensez qu'il le mérite ! Merci !L' Altimètre ultime est un altimètre Arduino contrôlée super compact, capable de mesurer l'altitude avec une précision de 0,3 mètres et enregistrer les valeurs maximale et mi
Arduino Nano - tutoriel de capteur altimètre de précision MPL3115A2

Arduino Nano - tutoriel de capteur altimètre de précision MPL3115A2

La MPL3115A2 utilise un capteur de pression MEMS grâce à une interface I2C pour fournir des données exactes de l'Altitude/pression et température. Les sorties du capteur sont numérisées par une haute résolution 24-bit ADC. Traitement interne supprime
Entoilage MS5067 altimètre avec Linkit-un

Entoilage MS5067 altimètre avec Linkit-un

MS50XX série est la série des altimètres ame-Specs, utilisations de mesure de la pression afin d'estimer l'altitude l'air. Ici je vais utiliser l'unité MS5607Fiche technique : http://www.meas-spec.com/downloads/MS5607-02BA03.pdfÉtape 1: connexionsMS5
GoFly - Parapente/Parapente/deltaplane altimètre-variomètre de votre navigation de voiture

GoFly - Parapente/Parapente/deltaplane altimètre-variomètre de votre navigation de voiture

GoFly est un projet basé sur PNA (appareils de navigation de voiture avec WindowsCE), LK8000 tactique fligh logiciels et variomètre (altimètre) externe d'entrée basés sur Arduino capteur de pression et le Conseil d'administration.Pourquoi ?-Vous pouv
Raspberry Pi - MPL3115A2 altimètre de précision capteur Python Tutorial

Raspberry Pi - MPL3115A2 altimètre de précision capteur Python Tutorial

La MPL3115A2 utilise un capteur de pression MEMS grâce à une interface I2C pour fournir des données exactes de l'Altitude/pression et température. Les sorties du capteur sont numérisées par une haute résolution 24-bit ADC. Traitement interne supprime
Raspberry Pi - MPL3115A2 altimètre de précision capteur Java Tutorial

Raspberry Pi - MPL3115A2 altimètre de précision capteur Java Tutorial

La MPL3115A2 utilise un capteur de pression MEMS grâce à une interface I2C pour fournir des données exactes de l'Altitude/pression et température. Les sorties du capteur sont numérisées par une haute résolution 24-bit ADC. Traitement interne supprime
Arduino thermomètre avec sonde de température LM35

Arduino thermomètre avec sonde de température LM35

Arduino thermomètre avec sonde de température LM35 est un très simple à mettre en œuvre le projet Arduino basé. Ses un projet parfait si vous êtes un débutant et avez juste commencé à tester pratiquement projets Arduino.Dans ce projet, nous exposera
Particule Photon - tutoriel de capteur altimètre de précision MPL3115A2

Particule Photon - tutoriel de capteur altimètre de précision MPL3115A2

La MPL3115A2 utilise un capteur de pression MEMS grâce à une interface I2C pour fournir des données exactes de l'Altitude/pression et température. Les sorties du capteur sont numérisées par une haute résolution 24-bit ADC. Traitement interne supprime
Arduino moniteur portatif de météo, altimètre, température, humidité, à l’aide de DHT11 et BMP85 avec écran LCD à l’aide de seulement 3 points

Arduino moniteur portatif de météo, altimètre, température, humidité, à l’aide de DHT11 et BMP85 avec écran LCD à l’aide de seulement 3 points

j'ai fait ce projet parce que j'ai souvent escalader des montagnes comme celui de la photo et j'ai besoin de connaître l'altitude, la température et aussi des changements de temps, parfois en quelques minutes le temps obtenir très mauvais, avec la gr
Rapide Arduino hygromètre (capteur d’humidité)

Rapide Arduino hygromètre (capteur d’humidité)

Nous avons eu quelques condensation et moisissure émet dans notre appartement récemment devait, selon moi, le taux d'humidité. Notre propriété est relativement récent et, par conséquent, a des propriétés très bonne isolation (double vitrage etc..). L
Arduino thermomètre

Arduino thermomètre

Son chaud ici à Los Angeles ! Outre la sécheresse massive en Californie se trouve, ce n'est pas aussi cool ici ces derniers temps. Je voulais construire quelque chose pour voir à quel point chaud, c'était vraiment, et c'est ici !Lire cette instructab
Arduino thermomètre avec LM35

Arduino thermomètre avec LM35

Bonjour, tout le monde!!! Aujourd'hui je vais vous montrer comment faire un thermomètre avec capteur de température Arduino et LM35, bâtie sur une maquette et connecté avec les cavaliers (tas de câbles: D).Étape 1: Collecte les pièces Cet article rec
Arduino chronomètre

Arduino chronomètre

Cet Instructable va vous montrer comment faire un arrêt à regarder hors un Arduino.Étape 1: Ce que vous aurez besoinVous sera nécessaire--1 x Arduino Uno http://store.arduino.cc/product/A000066-1 x clavier LCD bouclier http://www.amazon.co.uk/SODIAL-