Temperatur und Luftfeuchtigkeit in Proteus mit Arduino zeigenC++

Programme in C++. Entwicklerforum
Anonymous
 Temperatur und Luftfeuchtigkeit in Proteus mit Arduino zeigen

Post by Anonymous »

Ich muss dieses Projekt durchführen: < /p>

Entwerfen Sie eine Schaltung, die ein Arduino -UNO -Board, einen Temperatur- und Feuchtigkeitssensor (22DHT), zwei Punktmatrizen mit Treibern, einen Berührungssensor und einige Widerstände enthält. Die Schaltung funktioniert so, dass die Temperatur standardmäßig in der Matrix angezeigt wird, wenn der Berührungssensor nicht berührt wird, und die Luftfeuchtigkeit angezeigt wird, wenn der Berührungssensor berührt wird. Die Temperatur oder Luftfeuchtigkeit wird in einer Matrix angezeigt und das Emoticon, das mit der Frage verbunden ist, ob diese Temperatur oder Luftfeuchtigkeit wünschenswert, zu hoch oder zu niedrig in der zweiten Matrix angezeigt wird. src = "https://i.sstatic.net/q8jhoinz.png"/>
Dies ist mein Code in Arduino CPP:

Code: Select all

#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;
}
}
Das Problem ist, dass bei der Simulation alle Punkte in meinen Anzeigen einschalten und sie im Grunde genommen nichts zeigen.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post