well… i am a student and i had to programm 3 sensors. ( pressure, temperature and density). The sensor has to recalculate the variables to make it celcius and kPa and %. so, here is my code;
#include "DHT.h" //Activatie van de luchvochtigheid en temperatuur sensor.
#include<Wire.h> //Activatie van de druk sensor.
#define DHTPIN 2 // De gekozen pin die we aangesloten hebben.
#define DHTTYPE DHT22 // De luchtvochtigheid en temperatuursensor.
#define Addr 0x60 //adress van sensor MPL115A2.
int maxHum = 60; // Een maximale luchtvochtigheid waarde voor het programma.
int maxTemp = 40; // Een maximale temperatuur waarde voor het programma.
DHT dht(DHTPIN, DHTTYPE);
unsigned int data[8];
float a1 = 0.0, b1 = 0.0, b2 = 0.0, c12 = 0.0;
void setup() {
//luchtvochtigheid en temperatuur sensor
Serial.begin(9600);
dht.begin();
//temperatuur en druk sensor
// Initialise I2C communication
Wire.begin();
// Initialise Serial Communication, set baud rate = 9600
Serial.begin(9600);
for (int i = 0; i < 8; i++)
{
// Start I2C Transmission
Wire.beginTransmission(Addr);
// Select data register
Wire.write(4 + i);
// Stop I2C Transmission
Wire.endTransmission();
// Request 1 byte of data
Wire.requestFrom(Addr, 1);
// Read 1 byte of data
// A10 msb, A10 lsb, Bb1 msb, Bb1 lsb, B2 msb, B2 lsb, C12 msb, C12 lsb
if (Wire.available() == 1)
{
data[i] = Wire.read();
}
}
// Convert the data to floating points
a1 = ((data[0] * 256.0) + data[1]) / 8.0;
b1 = ((data[2] * 256) + data[3]);
if (b1 > 32767)
{
b1 -= 65536;
}
b1 = b1 / 8192.0;
b2 = ((data[4] * 256) + data[5]);
if (b2 > 32767)
{
b2 -= 65536;
}
b2 = b2 / 16384.0;
c12 = ((data[6] * 256.0 + data[7]) / 4.0) / 4194304.0;
delay(300);
}
void loop() {
//luchtvochtigheid en temperatuur sensor
delay(2000); // De vertraging voor de sensor om een beter waarden te krijgen.
float h = dht.readHumidity();
// Read temperature in Celsius
float t = dht.readTemperature();
// Check of read niet lukt.
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
//temperatuur en druk sensor
// Start I2C Transmission
Wire.beginTransmission(Addr);
// Send Pressure measurement command
Wire.write(0x12);
// Start conversion
Wire.write(0x00);
// Stop I2C Transmission
Wire.endTransmission();
delay(300);
// Start I2C Transmission
Wire.beginTransmission(Addr);
// Select data register
Wire.write(0x00);
// Stop I2C Transmission
Wire.endTransmission();
// Request 4 bytes of data
Wire.requestFrom(Addr, 4);
// Read 4 bytes of data
// pres msb, pres lsb, temp msb, temp lsb
if (Wire.available() == 4)
{
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
data[3] = Wire.read();
}
// Convert the data to 10-bits
int pres = (data[0] * 256 + (data[1] & 0xC0)) / 64;
int temp = (data[2] * 256 + (data[3] & 0xC0)) / 64;
// Calculate pressure compensation
float presComp = a1 + (b1 + c12 * temp) * pres + b2 * temp;
// Convert the data
float pressure = (65.0 / 1023.0) * presComp + 50.0;
float cTemp = (temp - 498) / (-5.35) + 25.0;
float fTemp = cTemp * 1.8 + 32.0;
int waarde1 = pressure;
int waarde2 = h;
int waarde3 = t;
Serial.print(waarde1);
Serial.print(";");
Serial.print(waarde2);
Serial.print(";");
Serial.print(waarde3);
Serial.println(";");
delay(500);
}
it is a long code, with a lot of calculating. i really don’t know every line in there.
also i don’t know what you mean. i am a noobie in this sort of things.
can u describe how i can see how many times it is sending ?
i like your kindess and help by the way. i appriciate it a lot. !