Показ температуры и влажности в протеусе с использованием arduinoC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Показ температуры и влажности в протеусе с использованием arduino

Сообщение Anonymous »

Мне нужно выполнить этот проект: < /p>

Создайте схему, которая включает в себя плату Arduino Uno, датчик температуры и влажности (22dht), два точки -матрицы с драйверами, сенсором и некоторыми резисторами. Схема работает таким образом, что по умолчанию температура отображается в матрице, когда сенсор не касается, а влажность отображается при касании сенсорного датчика. Температура или влажность отображаются в одной матрице, а смайон, связанный с тем, желательна эта температура или влажность, слишком высокая или слишком низкая, отображается во второй матрице. src = "https://i.sstatic.net/q8jhoinz.png"/>
Это мой код в Arduino cpp:

Код: Выделить всё

#include 
#include 

#define DHTPIN 2
#define DHTTYPE DHT22

#define TOUCHPIN 3

#define DATAIN 11
#define CLK    13
#define LOAD1  10
#define LOAD2   9

DHT dht(DHTPIN, DHTTYPE);
LedControl lc1 = LedControl(DATAIN, CLK, LOAD1, 1);
LedControl lc2 = LedControl(DATAIN, CLK, LOAD2, 1);

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

pinMode(TOUCHPIN, INPUT);

lc1.shutdown(0, false);
lc1.setIntensity(0, 8);
lc1.clearDisplay(0);

lc2.shutdown(0, false);
lc2.setIntensity(0, 8);
lc2.clearDisplay(0);
}

void loop() {
float temp = dht.readTemperature();
float hum = dht.readHumidity();

if (isnan(temp) || isnan(hum)) {
Serial.println("Failed to read from DHT sensor!");
return;
}

bool touch = digitalRead(TOUCHPIN);

if (touch == HIGH) {
displayNumber((int)hum, lc1);
displayEmoticon(getEmoticon(hum, "hum"), lc2);
} else {
displayNumber((int)temp, lc1);
displayEmoticon(getEmoticon(temp, "temp"), lc2);
}

delay(2000);
}

void displayNumber(int num, LedControl &lc) {
lc.clearDisplay(0);
if (num > 99) num = 99;
lc.setChar(0, 1, (num / 10) + '0', false);
lc.setChar(0, 0, (num % 10) + '0', false);
}

char getEmoticon(float value, String type) {
if (type == "temp") {
if (value < 18) return '-';
if (value > 28) return '+';
return ':';
} else if (type == "hum") {
if (value < 30) return '-';
if (value > 70) return '+';
return ':';
}
return '?';
}

void displayEmoticon(char emoticon, LedControl &lc) {
lc.clearDisplay(0);
switch (emoticon) {
case '-':
lc.setRow(0, 3, B00011000);
lc.setRow(0, 4, B00011000);
break;
case '+':
lc.setRow(0, 2, B00011000);
lc.setRow(0, 3, B01111110);
lc.setRow(0, 4, B01111110);
lc.setRow(0, 5, B00011000);
break;
case ':':
lc.setLed(0, 2, 3, true);
lc.setLed(0, 5, 3, true);
break;
case '?':
default:
lc.setRow(0, 3, B01000010);
lc.setRow(0, 4, B00100100);
break;
}
}
Проблема в том, что когда я начинаю моделирование, все точки на моих дисплеях включаются, и в основном они ничего не показывают.


Подробнее здесь: https://stackoverflow.com/questions/796 ... ng-arduino
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»