Indice
Descrizione
Questa puntata è dedicata alla comunicazione senza fili attraverso le radio frequenze. Vedremo come utilizzarla per trasmettere i messaggi da una scheda di Arduino e riceverli sull'altra.
Tra gli esempi vedremo come inviare i dati ambientali per visualizzarli sul display LCD.
#include <RH_ASK.h>
#define BUTTON_PIN 2
RH_ASK rf;
int lastValue = LOW;
int state = LOW;
const char *msgON = "ON";
const char *msgOFF = "OFF";
void setup() {
rf.init();
pinMode(BUTTON_PIN, INPUT);
}
void loop() {
int value = digitalRead(BUTTON_PIN);
if (value != lastValue && value == HIGH) {
state = !state;
if (state) {
rf.send((uint8_t *) msgON, strlen(msgON));
} else {
rf.send((uint8_t *) msgOFF, strlen(msgOFF));
}
rf.waitPacketSent();
}
lastValue = value;
delay(50);
}
#include <RH_ASK.h>
#define LED_PIN 7
RH_ASK rf;
void setup() {
rf.init();
pinMode(LED_PIN, OUTPUT);
}
void loop() {
uint8_t buffer[RH_ASK_MAX_MESSAGE_LEN];
uint8_t bufferLength = sizeof(buffer);
if (rf.recv(buffer, &bufferLength)) {
buffer[bufferLength] = '\0';
if (strncmp((char *) buffer, "ON", bufferLength) == 0) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
}
delay(10);
}
#include <RH_ASK.h>
#include <DHT.h>
#define DHT_PIN 7
struct DataHolder {
float temperature;
float humidity;
};
DataHolder dh;
RH_ASK rf;
DHT dht(DHT_PIN, DHT11);
void setup() {
dht.begin();
rf.init();
}
void loop() {
delay(1000);
dh.temperature = dht.readTemperature();
dh.humidity = dht.readHumidity();
rf.send((uint8_t *) &dh, sizeof(dh));
rf.waitPacketSent();
}
#include <RH_ASK.h>
#include <LiquidCrystal_I2C.h>
struct DataHolder{
float temperature;
float humidity;
};
DataHolder dh;
RH_ASK rf;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
rf.init();
lcd.init();
lcd.backlight();
}
void loop() {
uint8_t buffer[RH_ASK_MAX_MESSAGE_LEN];
uint8_t bufferLength = sizeof(buffer);
if (rf.recv(buffer, &bufferLength)) {
memcpy(&dh, buffer, bufferLength);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp.: " + String(dh.temperature) + char(0xDF) + "C");
lcd.setCursor(0,1);
lcd.print("Umid.: " + String(dh.humidity) + "%");
}
delay(10);
}