Tem­pe­ra­tur­an­zei­ge mit 20-LED-Neopixel-Stick

Inhalts­ver­zeich­nis

BMP280

#include "Adafruit_BMP280.h"
#include "Adafruit_NeoPixel.h"
#define RING 4

// Anzahl der LEDs ⇒ muss angepasst werden
#define AnzahlLED 20

// LEDRing -> Name des LED-Rings
Adafruit_NeoPixel LEDRing(AnzahlLED, RING, NEO_GRB + NEO_KHZ800);

// Name des Sensor
Adafruit_BMP280 bmp;

void setup()
{
  Serial.begin(9600);

  // BMP280 starten
  if (!bmp.begin()) Serial.println("BMP280 gestartet!");

    // setBrightness(0..255)
  LEDRing.setBrightness(200);

  // NeoPixel Bibliothek initialisieren
  LEDRing.begin();
}

void loop() 
{
  float gemesseneTemperatur = bmp.readTemperature();

  // gelesene Temperatur in String umwandeln
  String Temperatur = String(gemesseneTemperatur);

  // . durch , ersetzen
  Temperatur.replace(".", ",");

  // Ausgabe Serieller Monitor
  Serial.println("Temperatur: " + Temperatur + "°C");
  Serial.println("--------------------------------");
  
    // alle LEDs aus
  LEDRing.clear();

  /*
    es können nur ganzzahlige Werte berücksichtigt werden
    es sollen entsprechend der Skala die LEDs leuchten
    der Wert vor dem Komma entscheidet über die Anzahl der LEDs
  */
  if (gemesseneTemperatur >= 10 && gemesseneTemperatur < 11)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 1);
  if (gemesseneTemperatur >= 11 && gemesseneTemperatur < 12)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 2);
  if (gemesseneTemperatur >= 12 && gemesseneTemperatur < 13)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 3);
  if (gemesseneTemperatur >= 13 && gemesseneTemperatur < 14)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 4);
  if (gemesseneTemperatur >= 14 && gemesseneTemperatur < 15)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 5);
  if (gemesseneTemperatur >= 15 && gemesseneTemperatur < 16)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 6);
  if (gemesseneTemperatur >= 16 && gemesseneTemperatur < 17)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 7);
  if (gemesseneTemperatur >= 17 && gemesseneTemperatur < 18)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 8);
  if (gemesseneTemperatur >= 18 && gemesseneTemperatur < 19)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 9);
  if (gemesseneTemperatur >= 19 && gemesseneTemperatur < 20)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 10);
  if (gemesseneTemperatur >= 20 && gemesseneTemperatur < 21)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 11);
  if (gemesseneTemperatur >= 21 && gemesseneTemperatur < 22)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 12);
  if (gemesseneTemperatur >= 22 && gemesseneTemperatur < 23)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 13);
  if (gemesseneTemperatur >= 23 && gemesseneTemperatur < 24)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 14);
  if (gemesseneTemperatur >= 24 && gemesseneTemperatur < 25)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 15);
  if (gemesseneTemperatur >= 25 && gemesseneTemperatur < 26)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 16);
  if (gemesseneTemperatur >= 26 && gemesseneTemperatur < 27)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 17);
  if (gemesseneTemperatur >= 27 && gemesseneTemperatur < 28)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 18);
  if (gemesseneTemperatur >= 28 && gemesseneTemperatur < 29)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 19);
  if (gemesseneTemperatur >= 29 && gemesseneTemperatur < 30)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 20);
  LEDRing.show();

  delay(2000);  
}

DHT 11/DHT22

#include "DHT.h"
#include "Adafruit_NeoPixel.h"

#define RING 4

// Anzahl der LEDs ⇒ muss angepasst werden
#define AnzahlLED 20

// LEDRing -> Name des LED-Rings
Adafruit_NeoPixel LEDRing(AnzahlLED, RING, NEO_GRB + NEO_KHZ800);

// Pin des DHT-Sensors
#define SENSOR_DHT 7

// Sensortyp festlegen
// DHT22 oder DHT11
#define SensorTyp DHT22

// Sensor DHT einen Namen zuweisen
DHT dht(SENSOR_DHT, SensorTyp);

void setup()
{
  Serial.begin(9600);
  while (!Serial) {;}
  delay(1000);

  // DHT starten
  dht.begin();

  // setBrightness(0..255)
  LEDRing.setBrightness(200);

  // NeoPixel Bibliothek initialisieren
  LEDRing.begin();
}

void loop() 
{
  // Temperatur lesen
  float gemesseneTemperatur = dht.readTemperature();

  // gelesene Temperatur in String umwandeln
  String Temperatur = String(gemesseneTemperatur);

  // . durch , ersetzen
  Temperatur.replace(".", ",");

  // Ausgabe Serieller Monitor
  Serial.println("Temperatur: " + Temperatur + "°C");
  Serial.println("--------------------------------");

  // alle LEDs aus
  LEDRing.clear();

  /*
    es können nur ganzzahlige Werte berücksichtigt werden
    es sollen entsprechend der Skala die LEDs leuchten
    der Wert vor dem Komma entscheidet über die Anzahl der LEDs
  */
  if (gemesseneTemperatur >= 10 && gemesseneTemperatur < 11)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 1);
  if (gemesseneTemperatur >= 11 && gemesseneTemperatur < 12)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 2);
  if (gemesseneTemperatur >= 12 && gemesseneTemperatur < 13)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 3);
  if (gemesseneTemperatur >= 13 && gemesseneTemperatur < 14)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 4);
  if (gemesseneTemperatur >= 14 && gemesseneTemperatur < 15)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 5);
  if (gemesseneTemperatur >= 15 && gemesseneTemperatur < 16)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 6);
  if (gemesseneTemperatur >= 16 && gemesseneTemperatur < 17)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 7);
  if (gemesseneTemperatur >= 17 && gemesseneTemperatur < 18)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 8);
  if (gemesseneTemperatur >= 18 && gemesseneTemperatur < 19)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 9);
  if (gemesseneTemperatur >= 19 && gemesseneTemperatur < 20)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 10);
  if (gemesseneTemperatur >= 20 && gemesseneTemperatur < 21)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 11);
  if (gemesseneTemperatur >= 21 && gemesseneTemperatur < 22)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 12);
  if (gemesseneTemperatur >= 22 && gemesseneTemperatur < 23)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 13);
  if (gemesseneTemperatur >= 23 && gemesseneTemperatur < 24)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 14);
  if (gemesseneTemperatur >= 24 && gemesseneTemperatur < 25)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 15);
  if (gemesseneTemperatur >= 25 && gemesseneTemperatur < 26)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 16);
  if (gemesseneTemperatur >= 26 && gemesseneTemperatur < 27)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 17);
  if (gemesseneTemperatur >= 27 && gemesseneTemperatur < 28)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 18);
  if (gemesseneTemperatur >= 28 && gemesseneTemperatur < 29)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 19);
  if (gemesseneTemperatur >= 29 && gemesseneTemperatur < 30)  LEDRing.fill(LEDRing.Color(0, 0, 255), 0, 20);

  LEDRing.show();

  delay(2000);  
}

Letzte Aktualisierung: Mrz 13, 2024 @ 10:04