++++++Attiny85 Code ++++++++++++++
#include <VirtualWire.h>
#include "DHT.h"
#define DHTPIN 3
#define DHTTYPE DHT22
const int led_pin = 4;
const int transmit_pin = 2;
struct package
{
float temperature ;
float humidity ;
};
typedef struct package Package;
Package data;
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
// Initialise the IO and ISR
vw_set_tx_pin(transmit_pin);
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(500); // Bits per sec
pinMode(led_pin, OUTPUT);
}
void loop()
{
digitalWrite(led_pin, HIGH); // Flash a light to show transmitting
readSensor();
vw_send((uint8_t *)&data, sizeof(data));
vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(led_pin, LOW);
delay(100);
}
void readSensor()
{
dht.begin();
delay(100);
data.humidity = dht.readHumidity();
data.temperature = dht.readTemperature();
}
++++++Arduino Receiver code ++++++++++++++
#include <VirtualWire.h>
const int receive_pin = 12;
const int led = 13;
char temperatureChar[10];
char humidityChar[10];
struct package
{
float temperature = 0.0;
float humidity = 0.0;
};
typedef struct package Package;
Package data;
void setup()
{
/* Initialisation du port série */
Serial.begin(115200);
Serial.println("setup done");
//delay(1000);
// Initialise the IO and ISR
vw_setup(500); // Bits per sec
vw_set_rx_pin(receive_pin);
vw_rx_start(); // Start the receiver PLL running
Serial.println("setup done");
pinMode(led,OUTPUT);
}
void loop()
{
uint8_t buf[sizeof(data)];
uint8_t buflen = sizeof(data);
if (vw_have_message()) // Is there a packet for us?
{
Serial.println("message recu");
vw_get_message(buf, &buflen);
// delay(1000);
memcpy(&data,&buf,buflen);
Serial.print("\nPackage:");
Serial.print(data.temperature);
String temperatureString = String(data.temperature,1);
temperatureString.toCharArray(temperatureChar,10);
String humidityString = String(data.humidity,1);
humidityString.toCharArray(humidityChar,10);
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(100);
Serial.print("\n");
Serial.println(data.humidity);
}
}