Salve a tutti, in sostanza sto cercando di far si che il mio controllore (parte rx) per 7 secondi resti ad ascoltare il trasmettitore che ogni secondo invia un messaggio, e qualora dopo sette secondi il ricevitore non riesca a ricevere nulla, di conseguenza accenda un led.
Sketch RX:
void loop()
{
for(;;)
{
unsigned char status = SPI_Read(STATUS);
if(status&RX_DR) "se il dato è pronto nella fifo rx"
{
SPI_Read_Buf(RD_RX_PLOAD, rx_buf, TX_PLOAD_WIDTH); // read playload to rx_buf
SPI_RW_Reg(FLUSH_RX,0); // clear RX_FIFO
memcpy(&nrf_data, rx_buf, sizeof(nrf_data));
if ((nrf_data.counter) == 0)
{
digitalWrite(led,LOW);
delay(800);
goto STEP;
}
}
digitalWrite(led,HIGH);
STEP:
SPI_RW_Reg(WRITE_REG+STATUS,status); // clear RX_DR or TX_DS or MAX_RT interrupt flag
delay(100);
}}
Io vorrei trovare un modo per iterare per sette secondi questa parte di codice :
if(status&RX_DR) "se il dato è pronto nella fifo rx"
{
SPI_Read_Buf(RD_RX_PLOAD, rx_buf, TX_PLOAD_WIDTH); // read playload to rx_buf
SPI_RW_Reg(FLUSH_RX,0); // clear RX_FIFO
memcpy(&nrf_data, rx_buf, sizeof(nrf_data));
if ((nrf_data.counter) == 0)
{
digitalWrite(led,LOW);
delay(800);
goto STEP;
}
e nel caso in cui dopo sette secondi esso non abbia ricevuto nulla di conseguenza accende un led,
però nel aso in cui esso riceva un messaggio nel range di sette secondi, ovviamente, il led restera' spento. So che è una domanda banale, ma date le mie scarse conoscenze, non riesco ad ovviare al problema e il mio led lampeggia, non svolgendo il dovere di segnalare che la connessione con il tx è andata persa.