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);}In qualità di Affiliato Amazon riceviamo un guadagno dagli acquisti idonei