Version1

Dependencies:   BSP_DISCO_F746NG DHT22

Committer:
antoinnneee
Date:
Mon Jun 22 15:16:28 2020 +0000
Revision:
0:d60753bdf6d7
FirstCommit;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
antoinnneee 0:d60753bdf6d7 1 #include "view.h"
antoinnneee 0:d60753bdf6d7 2 #include "stm32746g_discovery_lcd.h"
antoinnneee 0:d60753bdf6d7 3 #include "mbed.h"
antoinnneee 0:d60753bdf6d7 4 #include "button.h"
antoinnneee 0:d60753bdf6d7 5 #include "gauge.h"
antoinnneee 0:d60753bdf6d7 6 #include <DHT22/DHT22.h>
antoinnneee 0:d60753bdf6d7 7 #include <list>
antoinnneee 0:d60753bdf6d7 8 #include "pouce.h"
antoinnneee 0:d60753bdf6d7 9 #include "PouceRouge.h"
antoinnneee 0:d60753bdf6d7 10
antoinnneee 0:d60753bdf6d7 11
antoinnneee 0:d60753bdf6d7 12
antoinnneee 0:d60753bdf6d7 13 View::View(int width, int height, uint32_t bgColor)
antoinnneee 0:d60753bdf6d7 14 : m_width(width), m_height(height), m_bgColor(bgColor)
antoinnneee 0:d60753bdf6d7 15 {
antoinnneee 0:d60753bdf6d7 16 Button *butDefault = new Button(110, 200, 60);
antoinnneee 0:d60753bdf6d7 17 butDefault->setText("update");
antoinnneee 0:d60753bdf6d7 18 m_buttonList.push_back(butDefault);
antoinnneee 0:d60753bdf6d7 19
antoinnneee 0:d60753bdf6d7 20 temperatureGauge = new Gauge;
antoinnneee 0:d60753bdf6d7 21 temperatureGauge->setText("Temperature");
antoinnneee 0:d60753bdf6d7 22
antoinnneee 0:d60753bdf6d7 23 humidityGauge = new Gauge(150, 50);
antoinnneee 0:d60753bdf6d7 24 humidityGauge->setLimit(0, 100);
antoinnneee 0:d60753bdf6d7 25 humidityGauge->setColorType(1);
antoinnneee 0:d60753bdf6d7 26 humidityGauge->setText("Humidity");
antoinnneee 0:d60753bdf6d7 27
antoinnneee 0:d60753bdf6d7 28 dht = new DHT22(D1);
antoinnneee 0:d60753bdf6d7 29 draw();
antoinnneee 0:d60753bdf6d7 30 drawImage(250, 40, 0);
antoinnneee 0:d60753bdf6d7 31 }
antoinnneee 0:d60753bdf6d7 32
antoinnneee 0:d60753bdf6d7 33 void View::drawImage(int offsetX, int offsetY, int type)
antoinnneee 0:d60753bdf6d7 34 {
antoinnneee 0:d60753bdf6d7 35
antoinnneee 0:d60753bdf6d7 36 int x = 0;
antoinnneee 0:d60753bdf6d7 37 int y = 0;
antoinnneee 0:d60753bdf6d7 38 uint32_t* dataPtr = nullptr;
antoinnneee 0:d60753bdf6d7 39 int h = 0;
antoinnneee 0:d60753bdf6d7 40 int w = 0;
antoinnneee 0:d60753bdf6d7 41 if (type)
antoinnneee 0:d60753bdf6d7 42 {
antoinnneee 0:d60753bdf6d7 43 dataPtr = (uint32_t*)Pouce.data;
antoinnneee 0:d60753bdf6d7 44 w = Pouce.width;
antoinnneee 0:d60753bdf6d7 45 h = Pouce.height;
antoinnneee 0:d60753bdf6d7 46 }
antoinnneee 0:d60753bdf6d7 47 else
antoinnneee 0:d60753bdf6d7 48 {
antoinnneee 0:d60753bdf6d7 49 dataPtr = (uint32_t*)PouceRouge.data;
antoinnneee 0:d60753bdf6d7 50 w = PouceRouge.width;
antoinnneee 0:d60753bdf6d7 51 h = PouceRouge.height;
antoinnneee 0:d60753bdf6d7 52 }
antoinnneee 0:d60753bdf6d7 53 while(y < h)
antoinnneee 0:d60753bdf6d7 54 {
antoinnneee 0:d60753bdf6d7 55 while(x < w)
antoinnneee 0:d60753bdf6d7 56 {
antoinnneee 0:d60753bdf6d7 57 uint32_t color = *dataPtr;
antoinnneee 0:d60753bdf6d7 58 if (!color)
antoinnneee 0:d60753bdf6d7 59 color = 0xffffffff;
antoinnneee 0:d60753bdf6d7 60 BSP_LCD_DrawPixel(x + offsetX, y + offsetY, color);
antoinnneee 0:d60753bdf6d7 61 dataPtr++;
antoinnneee 0:d60753bdf6d7 62 x++;
antoinnneee 0:d60753bdf6d7 63 }
antoinnneee 0:d60753bdf6d7 64 x = 0;
antoinnneee 0:d60753bdf6d7 65 y++;
antoinnneee 0:d60753bdf6d7 66 }
antoinnneee 0:d60753bdf6d7 67 }
antoinnneee 0:d60753bdf6d7 68
antoinnneee 0:d60753bdf6d7 69 void delay(int value)
antoinnneee 0:d60753bdf6d7 70 {
antoinnneee 0:d60753bdf6d7 71 int delCnt = 0;
antoinnneee 0:d60753bdf6d7 72 while (delCnt < value)
antoinnneee 0:d60753bdf6d7 73 {
antoinnneee 0:d60753bdf6d7 74 delCnt ++;
antoinnneee 0:d60753bdf6d7 75 thread_sleep_for(1);
antoinnneee 0:d60753bdf6d7 76 }
antoinnneee 0:d60753bdf6d7 77
antoinnneee 0:d60753bdf6d7 78 }
antoinnneee 0:d60753bdf6d7 79 static int testFunc(){
antoinnneee 0:d60753bdf6d7 80 return 5;
antoinnneee 0:d60753bdf6d7 81 }
antoinnneee 0:d60753bdf6d7 82
antoinnneee 0:d60753bdf6d7 83 void View::setGaugeValue(float(DHT22::*funcGauge)(), Gauge* targetGauge)
antoinnneee 0:d60753bdf6d7 84 {
antoinnneee 0:d60753bdf6d7 85 targetGauge->setValue((int)(dht->*funcGauge)());
antoinnneee 0:d60753bdf6d7 86 }
antoinnneee 0:d60753bdf6d7 87
antoinnneee 0:d60753bdf6d7 88
antoinnneee 0:d60753bdf6d7 89 void View::contain(int x, int y)
antoinnneee 0:d60753bdf6d7 90 {
antoinnneee 0:d60753bdf6d7 91 int idBut = 0;
antoinnneee 0:d60753bdf6d7 92 for (Button *it : m_buttonList) {
antoinnneee 0:d60753bdf6d7 93 if (it->contain(x,y)) {
antoinnneee 0:d60753bdf6d7 94 if (idBut == 0)
antoinnneee 0:d60753bdf6d7 95 {
antoinnneee 0:d60753bdf6d7 96 updateGauge();
antoinnneee 0:d60753bdf6d7 97 }
antoinnneee 0:d60753bdf6d7 98
antoinnneee 0:d60753bdf6d7 99 }
antoinnneee 0:d60753bdf6d7 100 idBut++;
antoinnneee 0:d60753bdf6d7 101 }
antoinnneee 0:d60753bdf6d7 102 }
antoinnneee 0:d60753bdf6d7 103
antoinnneee 0:d60753bdf6d7 104 void View::updateGauge()
antoinnneee 0:d60753bdf6d7 105 {
antoinnneee 0:d60753bdf6d7 106 setGaugeValue(&DHT22::getTemperature, temperatureGauge);
antoinnneee 0:d60753bdf6d7 107 setGaugeValue(&DHT22::getHumidity, humidityGauge);
antoinnneee 0:d60753bdf6d7 108 int type = (dht->getHumidity() > 50) ? 1 : 0;
antoinnneee 0:d60753bdf6d7 109 if (m_lastType != type)
antoinnneee 0:d60753bdf6d7 110 {
antoinnneee 0:d60753bdf6d7 111 m_lastType = type;
antoinnneee 0:d60753bdf6d7 112 drawImage(250, 40, type);
antoinnneee 0:d60753bdf6d7 113 }
antoinnneee 0:d60753bdf6d7 114 }
antoinnneee 0:d60753bdf6d7 115
antoinnneee 0:d60753bdf6d7 116 void View::draw()
antoinnneee 0:d60753bdf6d7 117 {
antoinnneee 0:d60753bdf6d7 118 BSP_LCD_Clear(m_bgColor);
antoinnneee 0:d60753bdf6d7 119 for (Button *it : m_buttonList) {
antoinnneee 0:d60753bdf6d7 120 it->draw();
antoinnneee 0:d60753bdf6d7 121 }
antoinnneee 0:d60753bdf6d7 122 temperatureGauge->draw();
antoinnneee 0:d60753bdf6d7 123 humidityGauge->draw();
antoinnneee 0:d60753bdf6d7 124 }