temperatura — Arduino Uno simulation

An interactive Arduino Uno circuit simulation you can run free in your browser on Velxio, by dave.

Components

Sketch code

// Lectura de BMP280 (temperatura + presión) y MPU6050 (acelerómetro)
// mostrados en pantalla OLED SSD1306 por I2C

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#include <Adafruit_MPU6050.h>

#define ANCHO 128
#define ALTO 64
#define OLED_RESET -1

Adafruit_SSD1306 display(ANCHO, ALTO, &Wire, OLED_RESET);
Adafruit_BMP280 bmp;
Adafruit_MPU6050 mpu;

unsigned long lastRead = 0;
const unsigned long intervalo = 1000; // 1 segundo

void setup() {
  Serial.begin(115200);
  Wire.begin();

  // Inicializar OLED
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("OLED no encontrado"));
    for (;;);
  }
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);

  // Inicializar BMP280 (dirección 0x76 por defecto)
  if (!bmp.begin(0x76)) {
    Serial.println(F("BMP280 no encontrado"));
    for (;;);
  }

  // Inicializar MPU6050 (dirección 0x68 por defecto)
  if (!mpu.begin(0x68)) {
    Serial.println(F("MPU6050 no encontrado"));
    for (;;);
  }

  Serial.println(F("=== SENSORES I2C INICIADOS ==="));
}

void loop() {
  if (millis() - lastRead >= intervalo) {
    lastRead = millis();

    // --- Leer BMP280 ---
    float temp = bmp.readTemperature();
    float pres = bmp.readPressure() / 100.0F; // hPa

    // --- Leer MPU6050 ---
    sensors_event_t a, g, t;
    mpu.getEvent(&a, &g, &t);

    // --- Mostrar en OLED ---
    display.clearDisplay();
    display.setCursor(0, 0);

    display.print(F("BMP280:"));
    display.setCursor(0, 10);
    display.print(temp, 1); display.print(F(" C"));
    display.setCursor(0, 20);
    display.print(pres, 0); display.print(F(" hPa"));

    display.setCursor(0, 35);
    display.print(F("MPU6050:"));
    display.setCursor(0, 45);
    display.print(F("Ax:")); display.print(a.acceleration.x, 1);
    display.setCursor(64, 45);
    display.print(F("Ay:")); display.print(a.acceleration.y, 1);
    display.setCursor(0, 55);
    display.print(F("Az:")); display.print(a.acceleration.z, 1);

    display.display();

    // --- Serial ---
    Serial.print(F("Temp: ")); Serial.print(temp, 1); Serial.print(F(" C  "));
    Serial.print(F("Pres: ")); Serial.print(pres, 0); Serial.print(F(" hPa  "));
    Serial.print(F("Acc: "));
    Serial.print(a.acceleration.x, 1); Serial.print(F(","));
    Serial.print(a.acceleration.y, 1); Serial.print(F(","));
    Serial.println(a.acceleration.z, 1);
  }
}

More projects by dave