temperaturen en vocht in en om het huis meten

Als U een gezamenlijk project wil starten of aan projecten van anderen mee wilt werken.
Berichten: 6
Geregistreerd: 10 Sep 2014, 10:25

Re: temperaturen en vocht in en om het huis meten

Berichtdoor patrick2603 » 27 Sep 2014, 15:05

deze code werkt voor 3 DHT11 sensoren
1 BMP085 Barometric Pressure Sensor
1 LDR
mischien help dit iemand vooruit
nu word dit steeds verder uitgebreid naar visual studio om een mooi scherm te maken.

patrick


// three DHT11 sensor plus BMP085 Barometric Pressure Sensor plus LDR
// Demonstrates multiple sensors

#include "DHT.h"
#include <Wire.h>
#include <Adafruit_BMP085.h>

Adafruit_BMP085 bmp;

#define DHT1PIN 2 // dit zijn de pinnen van de vochtvoeler DHT11
#define DHT2PIN 3 // dit zijn de pinnen van de vochtvoeler DHT11
#define DHT3PIN 4 // dit zijn de pinnen van de vochtvoeler DHT11

// Uncomment whatever type you're using!
#define DHT1TYPE DHT11 // DHT 11
#define DHT2TYPE DHT11 // DHT 11
#define DHT3TYPE DHT11 // DHT 11

int LDR_Pin = A0; //analog pin 0 voor de lichtsensor

// de aansluitpennen van de DHT11 sensor
// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

// dit zijn de aansluitpunten voor de luchtdruksensor
// Connect VCC of the BMP085 sensor to 3.3V (NOT 5.0V!)
// Connect GND to Ground
// Connect SCL to i2c clock - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 5
// Connect SDA to i2c data - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 4
// EOC is not used, it signifies an end of conversion
// XCLR is a reset pin, also not used here

DHT dht1(DHT1PIN, DHT1TYPE);
DHT dht2(DHT2PIN, DHT2TYPE);
DHT dht3(DHT3PIN, DHT3TYPE);

void setup() {
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
while (1) {}
}

dht1.begin();
dht2.begin();
dht3.begin();
}

void loop() {
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h1 = dht1.readHumidity();
float t1 = dht1.readTemperature();
float h2 = dht2.readHumidity();
float t2 = dht2.readTemperature();
float h3 = dht3.readHumidity();
float t3 = dht3.readTemperature();

int LDRReading = analogRead(LDR_Pin); // lezen van de lichtsterkte

// sensoren temp. en vocht DHT11
// check if returns are valid, if they are NaN (not a number) then something went wrong!
if (isnan(t1) || isnan(h1)) {
Serial.println("fout bij lezen sensor #1");
} else {
Serial.print("vocht 1: ");
Serial.print(h1); Serial.print(" %\t");
Serial.print("Temperatuur 1: ");
Serial.print(t1);
Serial.println(" *C");
}
if (isnan(t2) || isnan(h2)) {
Serial.println("fout bij lezen sensor #2");
} else {
Serial.print("vocht 2: ");
Serial.print(h2);
Serial.print(" %\t");
Serial.print("Temperatuur 2: ");
Serial.print(t2);
Serial.println(" *C");
}
if (isnan(t3) || isnan(h3)) {
Serial.println("fout bij lezen sensor #3");
} else {
Serial.print("vocht 3: ");
Serial.print(h3); Serial.print(" %\t");
Serial.print("Temperatuur 3: ");
Serial.print(t3);
Serial.println(" *C");
}

//sensoren voor de luchtdruk BMP085 Barometric Pressure Sensor
{
Serial.print("Temperatuur = ");
Serial.print(bmp.readTemperature());
Serial.println(" *C");

Serial.print("luchtdruk = ");
Serial.print(bmp.readPressure());
Serial.println(" Pa");

Serial.print("hoogte = ");
Serial.print(bmp.readAltitude(102500));
Serial.println(" meters");
}

//sensoren voor de lichtsterkte
{
Serial.print("lichtsterkte = ");
Serial.println(LDRReading);

Serial.println();
delay(5000);
}
}

Advertisement

Berichten: 6
Geregistreerd: 10 Sep 2014, 10:25

Re: temperaturen en vocht in en om het huis meten

Berichtdoor patrick2603 » 16 Nov 2014, 22:06

ik heb nog wat met de code gespeeld er ook een lichtsensor bijgeplaatst en ook 5 leds. Maar met de leds begint het probleem ik kan de leds
wel aan en uitzetten maar de uitlezing van het vocht valt dan stil. het vocht en temperatuur zou continu moeten gelezen kunnen worden en
ertussenin wil ik ook de leds kunnen schakelen. wat ik ook verander de sensoren worden uitgelezen als ik een led aan of uitschakel ook als
ik het commando goto weglaat. dit probleem vind ik niet graag een beetje hulp a.u.b.

dit is de code


#include "DHT.h"
#include <Wire.h>
#include <Adafruit_BMP085.h>

Adafruit_BMP085 bmp;

#define DHT1PIN 2 // dit zijn de pinnen van de vochtvoeler DHT11
#define DHT2PIN 3 // dit zijn de pinnen van de vochtvoeler DHT11
#define DHT3PIN 4 // dit zijn de pinnen van de vochtvoeler DHT11

// Uncomment whatever type you're using!
#define DHT1TYPE DHT11 // DHT 11
#define DHT2TYPE DHT11 // DHT 11
#define DHT3TYPE DHT11 // DHT 11

int LDR_Pin = A0; //analog pin 0 voor de lichtsensor

// de aansluitpennen van de DHT11 sensor
// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

// dit zijn de aansluitpunten voor de luchtdruksensor
// Connect VCC of the BMP085 sensor to 3.3V (NOT 5.0V!)
// Connect GND to Ground
// Connect SCL to i2c clock - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 5
// Connect SDA to i2c data - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 4
// EOC is not used, it signifies an end of conversion
// XCLR is a reset pin, also not used here

DHT dht1(DHT1PIN, DHT1TYPE);
DHT dht2(DHT2PIN, DHT2TYPE);
DHT dht3(DHT3PIN, DHT3TYPE);

void setup() {
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
while (1) {}
}
// initialize the LED pins:
for (int thisPin = 5; thisPin < 10; thisPin++) {
pinMode(thisPin, OUTPUT);
}
dht1.begin();
dht2.begin();
dht3.begin();
}

void loop() {

schakel:
// read the sensor:
if (Serial.available() > 0) {
int inByte = Serial.read();
// do something different depending on the character received.
// The switch statement expects single number values for each case;
// in this exmaple, though, you're using single quotes to tell
// the controller to get the ASCII value for the character. For
// example 'a' = 97, 'b' = 98, and so forth:

switch (inByte) {
case 'a':
digitalWrite(5, LOW);
break; goto test;
case 'b':
digitalWrite(6, LOW);
break ; goto test;
case 'c':
digitalWrite(7, LOW);
break; goto test;
case 'd':
digitalWrite(8, LOW);
break; goto test;
case 'e': goto test;
digitalWrite(9, LOW);
break; goto test;
case 'f':
digitalWrite(5, HIGH);
break; goto test;
case 'g':
digitalWrite(6, HIGH);
break; goto test;
case 'h':
digitalWrite(7, HIGH);
break; goto test;
case 'i':
digitalWrite(8, HIGH);
break; goto test;
case 'j':
digitalWrite(9, HIGH);
break; goto test;
}

test:
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h1 = dht1.readHumidity();
float t1 = dht1.readTemperature();
float h2 = dht2.readHumidity();
float t2 = dht2.readTemperature();
float h3 = dht3.readHumidity();
float t3 = dht3.readTemperature();

int LDRReading = analogRead(LDR_Pin); // lezen van de lichtsterkte

// sensoren temp. en vocht DHT11
// check if returns are valid, if they are NaN (not a number) then something went wrong!
if (isnan(t1) || isnan(h1)) {
Serial.println("fout bij lezen sensor #1");
} else {
Serial.print("vocht 1: ");
Serial.print(h1);
Serial.print(" %\t");
Serial.print("Temperatuur 1: ");
Serial.print(t1);
Serial.println(" *C");
}
if (isnan(t2) || isnan(h2)) {
Serial.println("fout bij lezen sensor #2");
} else {
Serial.print("vocht 2: ");
Serial.print(h2);
Serial.print(" %\t");
Serial.print("Temperatuur 2: ");
Serial.print(t2);
Serial.println(" *C");
}
if (isnan(t3) || isnan(h3)) {
Serial.println("fout bij lezen sensor #3");
} else {
Serial.print("vocht 3: ");
Serial.print(h3);
Serial.print(" %\t");
Serial.print("Temperatuur 3: ");
Serial.print(t3);
Serial.println(" *C");
}

//sensoren voor de luchtdruk BMP085 Barometric Pressure Sensor
{
Serial.print("Temperatuur = ");
Serial.print(bmp.readTemperature());
Serial.println(" *C");

Serial.print("luchtdruk = ");
Serial.print((bmp.readPressure()/100));
Serial.println(" Mbar");
}

//sensoren voor de lichtsterkte
{
Serial.print("lichtsterkte = ");
Serial.println(LDRReading);

Serial.println();
delay(5000);
goto schakel;
}
}
}

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: temperaturen en vocht in en om het huis meten

Berichtdoor shooter » 20 Nov 2014, 12:59

je hebt labels gebruikt, maar ik mis dus subroutines ofwel functies.
en gebruik geen delay want dan stopt het zaakje telkens.
zoek naar millis() en hoe dit in je programma te gebruiken, dat als een timer is gedaan een bepaalde actie wordt uitgevoerd, lijkt een beetje op interrupt.

zorg dat je loop een stuk kleiner wordt en snel doorlopen wordt, als er een actie nodig is dan de functie aanroepen.

dus een functie maken voor het ophalen van data en een voor je uitgangen.
paul deelen
shooter@home.nl

Vorige

Terug naar Gezamenlijke projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten