/*
   Credits: www.optimusdigital.ro
   Cod creat pentru: RECEPTOR
   Pentru schema de conectare si informatii despre
   modul sunt disponibile pe pagina:
   https://www.optimusdigital.ro/ro/ism-433-mhz/252-pereche-emitator-si-receptor-rf-433-mhz.html
*/

//includeți biblioteca necesară pentru a utiliza modulele RF 433MHz
#include <VirtualWire.h>

//stocați în variabila pinTX pin-ul la care este conectat emitatorul
//in cazul nostru, pin-ul utilizat este pin-ul digital 12.
int pinRX = 12;

//stocați viteza de transfer
int speedTransfer = 4000;


void setup()
{
  //pentru a vedea mesajul primit, porniti Serial Monitor setat pe baudrate-ul de 9600

  //porniti comunicarea seriala pe baudrate-ul de 9600
  Serial.begin(9600);

  //configurați receptorul prin setarea pin-ului la care este conectat modulul,
  //cat si viteza de transfer (biți pe secunda)
  vw_set_rx_pin(pinRX);
  vw_setup(speedTransfer);

  //porniti receptorul
  vw_rx_start();
}
void loop()
{
  //variabila globala VW_MAX_MESSAGE_LEN reprezintă numarul maxim de caractere care pot
  //fi transmise.
  //VW_MAX_MESSAGE_LEN are valoarea 30, iar mesajul propriu zis de transmis trebuie sa aiba maxim
  //27 de caractere,deoarece mai sunt si alte caractere speciale transmise impreuna cu mesajul


  //in vectorul buf se va stoca mesajul primit
  uint8_t buf[VW_MAX_MESSAGE_LEN];

  //in variabila buflen se stocheaza lungimea mesajului primit
  uint8_t buflen = VW_MAX_MESSAGE_LEN;

  //se verifica daca s-a primit un mesaj
  if (vw_get_message(buf, &buflen)) // Non-blocking
  {
    //se afiseaza mesajul in serial monitor caracter cu caracter.
    int i = 0;
    while (i < buflen)
    {
      Serial.print((char)buf[i]);
      i++;
    }
    //se trece la urmatoarea linie atunci cand mesajul a fost primit in totalitate
    Serial.println();
  }
}
