In acest articol vom folosi cele 2 module pentru a transmite informatiile a 2 (sau chiar mai multi) senzori catre un alt modul Arduino.
Conexiunile sunt identice cu cele din articolul anterior.
In acest exemplu, pentru simplificarea codului sursa, voi simula valorile celor 2 senzori folosind functia random().
Sketchul folosit pentru partea de emisie este cel de mai jos:
#include <RH_ASK.h>
#include <SPI.h>
int senzor1, senzor2;
String str_senz1, str_senz2, str_out;
RH_ASK rf_driver;
void setup() {
rf_driver.init();
Serial.begin(9600);
}
void loop() {
senzor1 = random(1, 100);
senzor2 = random(1, 100);
str_senz1 = String(senzor1);
str_senz2 = String(senzor2);
str_out = str_senz1 + "," + str_senz2;
static char *msg = str_out.c_str();
rf_driver.send((uint8_t *)msg, strlen(msg));
rf_driver.waitPacketSent();
delay(1000);
}
Datele receptionate le vom afisa intr-un terminal serial.
Sketchul folosit pentru a face acest lucru este cel de mai jos:
#include <RH_ASK.h>
#include <SPI.h>
String str_senz1, str_senz2, str_out;
RH_ASK rf_driver;
void setup() {
rf_driver.init();
Serial.begin(9600);
}
void loop() {
uint8_t buf[6];
uint8_t buflen = sizeof(buf);
if (rf_driver.recv(buf, &buflen))
{
str_out = String((char*)buf);
for (int i = 0; i < str_out.length(); i++) {
if (str_out.substring(i, i+1) == ",") {
str_senz1 = str_out.substring(0, i);
str_senz2 = str_out.substring(i+1);
break;
}
}
Serial.print("Senzor 1: ");
Serial.print(str_senz1);
Serial.print(" - Senzor 2 : ");
Serial.println(str_senz2);
}
}