Zweimal DHT22 Sensor verwenden?

Hallo,

ich baue gerade eine Art "Wetterstation" mit meinem Arduino dazu verwende ich zweimal den DHT22 um die Temperatur und Luftfeuchtigkeit innen und außen zu messen. Ich habe nun das Problem, dass ich einen Befehl (Fett gedruckt) nicht einfach doppelt verwenden kann. Was macht dieser Befehl ? Wie kann ich einfach beide Sensoren verwenden?

Danke im Voraus!

Code:

#include <SimpleDHT.h>

#include <LiquidCrystal.h>

int pinDHT22in = 8;

int pinDHT22out = 9;

int Sensorwert;

const uint8_t rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7;

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

SimpleDHT22 dht22(pinDHT22in);

void setup(){

 Serial.begin(115200);             // Damit unsere Werte später im seriellen Monitor angezeigt werden können, legen wir zuerst die Baudrate 9600 fest.

 pinMode( 0 , INPUT);             // Pin 0 dient nun als Input

 lcd.begin(20, 4);              //Im Setup wird angegeben, wie viele Zeichen und Zeilen verwendet werden. Hier: 16 Zeichen in 4 Zeilen.

 lcd.clear();

}

void loop()

{

   Sensorwert = analogRead(0);       // Zuerst wird der Wert (gas) am Pin A0 ausgelesen...

     

   Serial.print("Der erfasste Wert lautet : "); 

   Serial.println(Sensorwert, DEC);     //... und anschließend im seriellen Monitor als Dezimalzahl ausgegeben.

   Serial.println();

   lcd.setCursor(0, 0);

   lcd.print("Messwert (gas): ");

   lcd.print(Sensorwert);

   delay(1000);

      float temperature = 0;

      float humidity = 0;

      int err = SimpleDHTErrSuccess;

      if((err=dht22.read2(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess){

       lcd.setCursor(0, 1);

       lcd.print("Read DHT22 failed, err=");

       lcd.print(err);

       delay(2000);

       return;

}

     lcd.setCursor(0, 1);

     lcd.print("Temp(in): ");

     lcd.print((float)temperature);

     lcd.print(" *C");

     lcd.setCursor(0, 2);

     lcd.print("Luftfeuchte: ");

     lcd.print((float)humidity);

     lcd.print("%");

     delay(2500); // DHT22 sampling rate is 0.5HZ.   

 delay(1000);             

Computer, Technik, programmieren, Arduino, Sensor, Arduino Uno
Arduino Lauflicht Programmierung?

Hallo ich bin Neu hier und auch neu in der Materie Arduino. Ich hoffe hier kann mir einer helfen- Ich möchte ein Lauflicht (wie auf Video:https://www.instagram.com/p/CHOOV51Fj_T/?igshid=tudc3clo118m) in Kaltweiss für zwei Led Bänder programmieren die Parallel zueinander anlaufen sollen. Dazu habe ich eine gewisse Schaltung aufgebaut (siehe Bild) die via Pulldown-Widerstand angeschalten bzw. ausgeschalten werden sollen. Zum beigefügten Bild kurz eine Erklärung meiner Vorstellung:

Über den 230V Funkschalter wird ein Funkaktor angesteuert der wiederum die Primärseite des 5V Trafos an bzw. ausschalten kann. Über die Sekundärseite werden die Led-Strips bestromt sowie der Digitial Port 11 der wiederum einen "Pulldown-Widerstand" von 10kOhm vorgeschalten hat und als An bzw. Ausschalter dem Arduino einen Digitalenschalter aufzeigen soll, damit dieser weiss wann er die Led-Strips zu schalten hat. Die Led sollen dann lediglich in einem Kaltweiss Ton als Lauflicht (wie im Video) parallel zu einander loslaufen. Es sind zwei led streifen mit jeweils 165LED.

Der Arduino UNO selbst ist über ein seperates Netzteil dauerbestromt. Soweit in der Theorie...
Jetzt brauche ich allerdings eure Hilfe, denn den Skript dafür zu programmieren traue ich mir absolut nicht zu, da ich dazu leider absolut zu wenig Ahnung davon habe. Ich hoffe einer von Euch kann mir helfen und dazu einen passenden Skript schreiben und Ihn mir hier zur Verfügung stellen. Freue mich für jede Hilfreiche Antwort. Liebe Grüße

Bild zum Beitrag
Computer, Technik, programmieren, Arduino, LED, Technologie, Arduino Uno, Spiele und Gaming
Arduino Code funktioniert nicht?

IRremote und JoyStick funktionieren nicht

#include <SPI.h> // Bibliothek für SPI-Kommunikation

#include <Mirf.h> // Bibliothek für nRF24L01

#include <nRF24L01.h> // Treiber für nRF24L01

#include <MirfHardwareSpiDriver.h> // Hardware-SPI-Treiber für Mirf

#include <IRremote.h> // Bibliothek für IR-Kommunikation

// Pin-Definitionen

int receiver = 4; // Pin für den IR-Empfänger

const int SW = 2; // Pin für den Schalter

const int X = A0; // Analog-Pin für X-Achse

const int Y = A1; // Analog-Pin für Y-Achse

// Initialisierung des IR-Empfängers

IRrecv irrecv(receiver);

IRsend results;

uint32_t last_decodedRawData = 0; // Variable zum Speichern des letzten IR-Codes

// Funktion zur Verarbeitung des empfangenen IR-Codes

void translateIR() {

 if (irrecv.decodedIRData.flags) {

  // Wenn ein Wiederholungscode empfangen wird, den letzten empfangenen Code verwenden

  irrecv.decodedIRData.decodedRawData = last_decodedRawData;

 } else {

  // Den empfangenen Code im seriellen Monitor ausgeben

  Serial.print("Empfangener IR-Code: 0x");

  Serial.println(irrecv.decodedIRData.decodedRawData, HEX);

 }

}

// Setup-Funktion, die einmal beim Starten des Programms ausgeführt wird

void setup() {

 Serial.begin(9600); // Startet die serielle Kommunikation mit 9600 Baud

 irrecv.enableIRIn(); // Aktiviert den IR-Empfänger

 pinMode(SW, INPUT); // Setzt den Schalter-Pin als Eingang

 digitalWrite(SW, HIGH); // Aktiviert den Pull-up-Widerstand für den Schalter

 Mirf.cePin = 9; // Setzt den Chip Enable (CE) Pin für den nRF24L01

 Mirf.csnPin = 10; // Setzt den Chip Select Not (CSN) Pin für den nRF24L01

 Mirf.spi = &MirfHardwareSpi; // Setzt den SPI-Treiber für Mirf

 Mirf.init(); // Initialisiert den nRF24L01

 Mirf.setRADDR((byte *)"Sen01"); // Setzt die Adresse des Senders

 Mirf.payload = sizeof(unsigned int); // Setzt die Payload-Größe auf die Größe eines unsigned int

 Mirf.channel = 3; // Setzt den Kommunikationskanal auf 3

 Mirf.config(); // Konfiguriert den nRF24L01

}

unsigned int adata = 0; // Variable zum Speichern der zu sendenden Daten

// Hauptschleife, die kontinuierlich ausgeführt wird

void loop() {

 // Überprüfen, ob ein IR-Signal empfangen wurde

 if (irrecv.decode()) {

  translateIR(); // Verarbeitung des empfangenen IR-Codes

  irrecv.resume(); // Bereit zum Empfang des nächsten IR-Codes

 }

 // Lesen des Schalter- und Analogwerte

 int swValue = digitalRead(SW); // Lesen des Schalterzustands

 int xValue = analogRead(X); // Lesen des X-Achsen-Werts

 int yValue = analogRead(Y); // Lesen des Y-Achsen-Werts

 // Überprüfen der empfangenen IR-Codes und Setzen von adata entsprechend

 if (last_decodedRawData == 0xAD52FF00) {

  adata = 12006;

 } else if (last_decodedRawData == 0xBF40FF00) {

  adata = 12005;

 } else if (last_decodedRawData == 0xBC43FF00) {

  adata = 12004;

 } else if (last_decodedRawData == 0xBB44FF00) {

  adata = 12003;

 }

 // Überprüfen des Schalterwerts und Setzen von adata

 if (swValue == 0) {

  adata = 2103;

 }

 // Überprüfen der Analogwerte und Setzen von adata

 if (yValue < 1024 && yValue > 6 && xValue > 150 && xValue < 800) {

  adata = 213;

 } else if (yValue < 512 && yValue > -1 && xValue > 200 && xValue < 700) {

  adata = 312;

 } else if (xValue < 509 && xValue > -1 && yValue > 200 && yValue < 750) {

  adata = 231;

 } else if (xValue < 1024 && xValue > 515 && yValue > 450 && yValue < 750) {

  adata = 321;

 } else if (xValue < 514 && xValue > 510 && yValue < 511 && yValue > 507) {

  adata = 123;

 }

 // Senden der Daten über Mirf, wenn adata gesetzt wurde

 if (adata != 0) {

  byte data[Mirf.payload]; // Array zum Speichern der zu sendenden Daten

  data[0] = adata & 0xFF; // Niedriges Byte von adata

  data[1] = adata >> 8; // Hohes Byte von adata

  Mirf.setTADDR((byte *)"Rec01"); // Setzt die Adresse des Empfängers

  Mirf.send(data); // Sendet die Daten

  while (Mirf.isSending()) {} // Warten, bis das Senden abgeschlossen ist

  delay(20); // Kurze Pause, um das Senden zu beenden

  adata = 0; // Zurücksetzen von adata nach dem Senden

 }

}

Arduino, Code, Programmiersprache, Arduino Uno, Arduino IDE

Meistgelesene Beiträge zum Thema Arduino Uno