#include <Wire.h>
#include <SSD1306Ascii.h>
#include <SSD1306AsciiWire.h>
#include <DHT20.h>
#include <dht.h>
DHT20 dht20;
#define SP Serial.print
dht dht22;
#define DHT22_PIN1 A3
#define wokwisimulation 1
SSD1306AsciiWire oled;
SSD1306AsciiWire oled2;
#define ssd1306 1
#define seriell 1
#define POTI A6
#define ROT 12
#define GELB 11
#define GRUEN 10
#include <Adafruit_NeoPixel.h> // Einbindung der Adafruit_Neopixel.h Bibliothek
#define PIN 4 // An welchem digitalen Pin ist der WS2812B Ring mit dem Mikrocontroller verbunden
#define NUMPIXELS 12 // Über wie viele Pixel verfügt der WS2812B Ring?
Adafruit_NeoPixel led_ring = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define SP Serial.print
void OLED (int tmp36, float temp22, float temp20);
void S0 (int tmp36, float temp22, float temp20);
void Ampel_Blinken (byte Ampel_farbe, unsigned int Thalbe);
void ledRing2 (int value);
void readDht20 (float * temp);
int temp36 = -300;
static int lm35 = -300;
float temp20 = -271.15;
float temp22 = -271.15;
unsigned long ms_old = 0;
bool toggle = 0;
unsigned long ms_alt = 0;
void setup() /* setup */
{
#ifdef wokwisimulation
led_ring.setBrightness( 210 );
#else
led_ring.setBrightness( 42 ); // auf HW-Cube viel zu hell
#endif
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
Serial.begin(9600);
Wire.begin();
dht20.begin();
led_ring.begin();
oled.setFont(System5x7);
oled.begin(&Adafruit128x64,0x3C);
pinMode(A0, INPUT);
} // ende setup
void Ampel_Blinken(byte Ampel_farbe, unsigned int Thalbe) // Teilaufgabe 2
{
if(millis() > (ms_old + Thalbe) and toggle == 0)
{
digitalWrite(Ampel_farbe, HIGH);
ms_old = millis();
toggle = 1;
}
if(millis() > (ms_old + Thalbe) and toggle == 1)
{
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
ms_old = millis();
toggle = 0;
}
}
void ledRing2 (int value) // Teilaufgabe 3
{
if(value < 256)
{
for(int i=0; i<12; i++)
{
led_ring.setPixelColor(i,0,value,255-value);
}
}
else
{
for(int i=0; i<12; i++)
{
led_ring.setPixelColor(i,value-256,255-(value-255),0);
}
}
led_ring.show();
}
void OLED (int tmp36, float temp22, float temp20) // Teilaufgabe 4
{
oled.setCursor(0,1);
oled.print("T36:");
oled.print(tmp36);
oled.write(128);
oled.print("C ");
oled.setCursor(0,3);
oled.print("D22:");
oled.print(temp22,1);
oled.write(128);
oled.print("C ");
oled.setCursor(0,5);
oled.print("D20:");
oled.print(temp20,1);
oled.write(128);
oled.print("C ");
}
void S0 (int tmp36, float temp22, float temp20) // Teilaufgabe 5
{
Serial.print("TMP36/°C: ");
Serial.print(tmp36);
Serial.print(" DHT22/°C: ");
Serial.print(temp22,2);
Serial.print(" DHT20/°C: ");
Serial.println(temp20,2);
}
void loop() // Teilaufgabe 5
{
int tmp36 = analogRead(map(A0,20,358,-40,125));
int temp1 = dht20.read();
temp20 = dht20.getTemperature();
int temp2 = dht22.read22(A3);
temp22 = dht22.temperature;
}
0
1
2
3
4
5
6