Problema Con Ricevitore 433 MHZ

Salve a tutti , ho provato con dei modulini a 433 mhz a trasmettere la temperatura esterna all’arduino.

Girovagando in rete , mi sono imbattuto in questo codice

TX:

#include <VirtualWire.h>
#include "DHT.h"

#define DHTPIN 2  

#define DHTTYPE DHT11 

const int led_pin = 13;
const int transmit_pin = 8;

struct package
{
 float temperature ;
 float humidity ;
};


typedef struct package Package;
Package data;

DHT dht(DHTPIN, DHTTYPE);

void setup()

{
  Serial.begin(9600);
   // 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(2000);
 Serial.println(data.temperature);
}

void readSensor()
{
dht.begin();
delay(1000);
data.humidity = dht.readHumidity();
data.temperature = dht.readTemperature();
}
RX:

#include <LiquidCrystal.h>

#include <VirtualWire.h>



const int receive_pin = 8;
char temperatureChar[10];
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


struct package
{
 float temperature = 0.0;
 float humidity = 0.0;
};


typedef struct package Package;
Package data;


void setup()
{       
 pinMode(13,OUTPUT);
 Serial.begin(9600);
  
   delay(1000);
lcd.begin(16,2);
   // Initialise the IO and ISR
   vw_set_rx_pin(receive_pin);
   vw_setup(100);   // Bits per sec
   vw_rx_start();       // Start the receiver PLL running
}

void loop()
{
   uint8_t buf[sizeof(data)];
   uint8_t buflen = sizeof(data);

if (vw_have_message())  // Is there a packet for us? 
 {
   vw_get_message(buf, &buflen);
   memcpy(&data,&buf,buflen);
   digitalWrite(13,1);
   Serial.print("\nPackage:");
   Serial.print(data.temperature);
   String temperatureString = String(data.temperature,1);
   temperatureString.toCharArray(temperatureChar,10);
   lcd.setCursor(1,0);
   lcd.print("Temp");
   
   
   lcd.setCursor(6,0);
   lcd.print(data.temperature);

 
 }
}

Quelle poche volte che arriva il segnale , esce sempre che è presente un Overflow. Potete Aiutarmi?

**>Falco21: **ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (in basso a destra del post, bottone More → Modify) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra).

Guglielmo

Facile che ci sono dati corrotti. Dovresti mettere un monitor che ti presenta i dati in formato esadecimale e vai a vedere se sono consoni a quello che ci si aspetta.

ExperimentUno:
Facile che ci sono dati corrotti. Dovresti mettere un monitor che ti presenta i dati in formato esadecimale e vai a vedere se sono consoni a quello che ci si aspetta.

Mi stampa : Tempo 0.00 , come se non gli arrivasse segnale.

*>Falco21: *... ti prego ancora di fare quanto ti ho richiesto nel post #1.

Guglielmo

gpb01:
**>Falco21: ** … ti prego ancora di fare quanto ti ho richiesto nel post #1.

Guglielmo

Chiedo scusa , pensavo di averLe scritto chiedendole una cosa.

Devo effettuare ciò CODE </ ******* /> o ho capito male? La prego di essere comprensivo :smiley:

… NO, devi fare esattamente quello che c’è scritto nel mio post #1. Se lo leggi attentamente vedi che non è difficile :smiley:

Guglielmo

gpb01: ... NO, devi fare esattamente quello che c'è scritto nem lio post #1. Se lo leggi attentamente vedi che non è difficile :D

Guglielmo

Ora va bene?

Falco21: Ora va bene?

Guglielmo

Che stampi 0 non è una magia. Ma quello che riceve è necessario per la ricerca del problema.