#include #include #include #include #define SLAVE_ADDRESS 0x0b dht DHT; #define DHT11_PIN 9 const int red = 7; const int green = 6; const int yellow = 5; // U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ A5, /* data=*/ A4); void setup(){ pinMode(red, OUTPUT); pinMode(green, OUTPUT); pinMode(yellow, OUTPUT); Serial.begin(9600); // u8g2.begin(); Wire.begin(SLAVE_ADDRESS); Wire.onRequest(sendtemperature); } float temperature(uint16_t pin){ float temp = 0; int chk = DHT.read11(pin); temp = DHT.temperature; return temp; } float humidity(uint16_t pin){ float hum = 0; int chk = DHT.read11(pin); hum = DHT.humidity; return hum; } void set_state(uint8_t state){ digitalWrite(green,0); digitalWrite(red,0); digitalWrite(yellow,0); switch (state){ case 0: digitalWrite(green,1); break; case 1: digitalWrite(red,1); break; case 2: digitalWrite(yellow,1); break; default:; } } void print4plotter(float temp,float hum){ Serial.print("Temperatur:"); Serial.print(temp); Serial.print(", Humidity:"); Serial.println(hum); } /* void print_screen_temp(float temp){ u8g2.clearBuffer(); u8g2.setFont(u8g2_font_unifont_t_symbols); u8g2.setFontRefHeightExtendedText(); u8g2.setDrawColor(1); u8g2.setFontPosTop(); u8g2.setFontDirection(0); u8g2.drawStr( 0, 0, "Temperatur:"); char buff[6]; dtostrf(temp, 4, 2, buff); u8g2.drawStr( 0, 18, buff); u8g2.drawUTF8(40, 18, "°C"); u8g2.sendBuffer(); } void print_screen_hum(float hum){ u8g2.clearBuffer(); u8g2.setFont(u8g2_font_unifont_t_symbols); u8g2.setFontRefHeightExtendedText(); u8g2.setDrawColor(1); u8g2.setFontPosTop(); u8g2.setFontDirection(0); u8g2.drawStr( 0, 0, "Humidity:"); char buff[6]; dtostrf(hum, 4, 2, buff); u8g2.drawStr( 0, 18, buff); u8g2.drawUTF8(40, 18, "%"); u8g2.sendBuffer(); } */ uint8_t converttemp(float temp){ temp += 75; return round(temp); } float gtemp = 0; void sendtemperature(){ uint8_t dat = converttemp(gtemp); Wire.write(dat); } uint32_t d_state = 0; uint32_t display_time=10000; uint32_t messure_time=100; void loop() { for (int i=0; i< display_time/messure_time; i++){ float temp=temperature(DHT11_PIN); float hum= humidity(DHT11_PIN); print4plotter(temp,hum); gtemp = temp; if (temp<=0) set_state(0); // green else if (temp <=40) set_state(2); // yellow else set_state(1); // red //if (d_state % 2) print_screen_temp(temp); //else print_screen_hum(hum); delay(messure_time); } d_state ++; }