Independiente Arduino altímetro (2 / 3 paso)

Paso 2: El programa

Explicaciones de código (código completo más abajo):

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

Son las 2 bibliotecas que tienes que poner dentro de Documents\Arduino\libraries\

 #define P0 1021.97 

Esto es donde calibrar el altímetro, si se cambia este valor. Una vez hecho, es bastante exacto!

(por defecto es 1013.25, tuve que subir a 1021.97 a la altitud correcta en mi ciudad)

 U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); 

Aquí definen el tipo de pantalla 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); 

Aquí la información que desea mostrar en la primera pantalla y de su posición (Y, X, valor)

 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); 

Mismo para la segunda pantalla

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

Aquí actualizamos la altitud mínima y máxima almacenada

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

Aquí, con el valor de delay (1000 en este caso), te quedas 1 segundo en la primera pantalla antes de pasar a la segunda. Así cambiar si quiere personalizar pantalla tiempo :)

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

Mismo para segunda pantalla!

Espero que sea claro, no dude en enviar una pregunta en los comentarios si es necesario!

Aquí está el código completo:

 #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 de bmp; Tipo OLEDchar sT [20]; sP de Char [9]; char la sA [9]; char sA_MIN [9]; char sA_MAX [9]; doble A_MIN = 0; doble A_MAX = 0; void draw (doble T, doble P, doble A) {u8g.setFont(u8g_font_unifont); dtostrf (T, 4, 2, sT), dtostrf (P, 4, 2, sP); dtostrf (A, 4, 2, sA);} void draw2 (doble A_MIN, doble A_MAX) {u8g.setFont(u8g_font_unifont);} void setup() {Serial.begin(9600); si (! bmp.begin()) {Serial.println ("BMP init error!") mientras que (1);} else Serial.println ("BMP init éxito!"); bmp.setOversampling(4); u8g.setColorIndex(1); u8g.setFont(u8g_font_unifont);} void loop(void) {doble T, P; resultado de char = bmp.startMeasurment(); if (resultado! = 0) {delay(result); resultado = bmp.getTemperatureAndPressure (T, P); si (resultado! = 0) {doble 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();

Artículos Relacionados

Independiente Arduino cronómetro - protector de teclado de LCD SainSmart

Independiente Arduino cronómetro - protector de teclado de LCD SainSmart

así, para mi Instructable primera, también compartiré con ustedes mi primer proyecto: cronómetro de Arduino A independiente.Debo admitir que esto no fue creado por mí. Tomé la idea de otro cronómetro donde podrás leer la información en el puerto seri
GoFly - parapente/muchos/deslizamiento altímetro-variómetro de su navegación para automóviles

GoFly - parapente/muchos/deslizamiento altímetro-variómetro de su navegación para automóviles

GoFly es un proyecto basado en PNA (dispositivos de navegación de coche con Windows CE), software de computadora de vuelo táctico LK8000 y variómetro (altímetro) externo de entrada basan en Arduino board y sensor de presión.¿Por qué?-Usted puede cons
Un compacto, altímetro de Arduino para aviones RC

Un compacto, altímetro de Arduino para aviones RC

Por favor voten por este Instructable si crees que se merece! ¡ Gracias!El Altímetro Ultimate es un altímetro de Arduino controlado súper compacto, capaz de medir la altura con una precisión de 0,3 metros y guardar los valores mayores y menor que ha
Arduino Nano - MPL3115A2 altímetro de precisión Sensor Tutorial

Arduino Nano - MPL3115A2 altímetro de precisión Sensor Tutorial

El MPL3115A2 emplea un sensor de presión MEMS con una interfaz I2C para proporcionar los datos exactos de la presión/altitud y la temperatura. Las salidas del sensor son digitalizadas por un ADC de 24 bits de alta resolución. Procesamiento interno el
Interfaz MS5067 altímetro con Linkit

Interfaz MS5067 altímetro con Linkit

MS50XX serie es la serie de altímetros Meas-Specs, utiliza mediciones para estimar la altura de aire. Aquí voy a utilizar la unidad de MS5607Hoja de datos: http://www.meas-spec.com/downloads/MS5607-02BA03.pdfPaso 1: conexionesMS5607: LinkitGND: tierr
Cohete altímetro registrador

Cohete altímetro registrador

Usando nuestras SD card y presión sensor escudos, creamos un registrador de datos que rastrea la altitud de un objeto, como un cohete modelo! Si quieres ver imágenes de nuestros lanzamientos de cohete, revisa el video aquí!Paso 1: materialesComponent
Partícula fotón - Tutorial de Sensor altímetro de precisión MPL3115A2

Partícula fotón - Tutorial de Sensor altímetro de precisión MPL3115A2

El MPL3115A2 emplea un sensor de presión MEMS con una interfaz I2C para proporcionar los datos exactos de la presión/altitud y la temperatura. Las salidas del sensor son digitalizadas por un ADC de 24 bits de alta resolución. Procesamiento interno el
Frambuesa Pi - MPL3115A2 altímetro de precisión Sensor Python Tutorial

Frambuesa Pi - MPL3115A2 altímetro de precisión Sensor Python Tutorial

El MPL3115A2 emplea un sensor de presión MEMS con una interfaz I2C para proporcionar los datos exactos de la presión/altitud y la temperatura. Las salidas del sensor son digitalizadas por un ADC de 24 bits de alta resolución. Procesamiento interno el
Frambuesa Pi - MPL3115A2 altímetro de precisión Sensor Java Tutorial

Frambuesa Pi - MPL3115A2 altímetro de precisión Sensor Java Tutorial

El MPL3115A2 emplea un sensor de presión MEMS con una interfaz I2C para proporcionar los datos exactos de la presión/altitud y la temperatura. Las salidas del sensor son digitalizadas por un ADC de 24 bits de alta resolución. Procesamiento interno el
Arduino Monitor portátil de tiempo, altímetro, temperatura, humedad, con LCD con sólo 3 pines DHT11 y BMP85

Arduino Monitor portátil de tiempo, altímetro, temperatura, humedad, con LCD con sólo 3 pines DHT11 y BMP85

hice este proyecto ya que a menudo escalar montañas como el de la foto y necesito saber la altitud, la temperatura y también cambios en el clima, a veces en cuestión de minutos el tiempo que muy mala, con granizo, la nieve y una niebla muy densa.Todo
Oculta Arduino termómetro

Oculta Arduino termómetro

¿Sabías que muchos chips Arduinos y ATtiny tienen un termómetro incorporado? La temperatura no está calibrada, por lo que se debe tomar un par de lecturas para caracterizarla. Encontré la idea original en el artículo - Termómetro de secreto . He añad
Arduioscillo-el generador de frecuencia Arduino voltímetro

Arduioscillo-el generador de frecuencia Arduino voltímetro

¿Qué hago?   El propósito de este proyecto es crear un generador de frecuencia voltímetro asequible y práctico con materiales ahí en su banco de trabajo. Este enlace te llevará a mi youtube video explicando el dispositivo http://www.youtube.com/watch
Arduino intervalómetro para Sony a6000 / A7

Arduino intervalómetro para Sony a6000 / A7

Yo quería hacer lapsos de mi cámara sin espejo de Sony, pero la aplicación incorporada sólo admite 999 disparos a la vez. Así que, decidí construir un intervalómetro simple basado en Arduino que puede tomar una fotografía en un intervalo deseado para
PropVario, un variómetro/altímetro DIY con salida de voz para planeadores RC

PropVario, un variómetro/altímetro DIY con salida de voz para planeadores RC

este instructables le mostrará cómo construir un Vario barato, que pudiera hablar la altitud ypor supuesto enviar tonos diferentes al cambiar la altura de su vuelo.Algunas características:-voz y tono-utilizar sus propias muestras (onda-) en su idioma