Standardoil:
Ok, rimango in attesa
Ciao! Sono tornato! ho voluto fare un po di prove e per questo ci è voluto un bel po di tempo! Posso riassumerle cosi:
- Collegato tramite al pc stampando sulla porta seriale ad ogni iterazione l'arduino non si è mai bloccato, ma ad un certo punto l'antenna ha cominciato a dare letture sporche;
- Di conseguenza ho ho messo nel codice una stampa di cosa riceveva dall'antenna e l'ho messo a girare... adesso è circa un mese che mi legge tutti i comandi e non si è mai impallato! Ma a parte la stampa non ho cambiato nulla al codice!
il codice attuale (senza le stampe) è questo:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define PIN_RELAY 2
#define DEVICE_ID "00001"
#define DELIMITER "§"
const byte address[5] = "00001";
byte rawData[10];
char *container;
RF24 radio(7, 8);
void setup() {
// configuring relay
pinMode(PIN_RELAY, OUTPUT);
// configuring radio
radio.begin();
radio.setPALevel(RF24_PA_HIGH);
radio.setDataRate(RF24_250KBPS);
radio.setCRCLength(RF24_CRC_8) ;
radio.setRetries(15, 15);
radio.openReadingPipe(0, address);
radio.startListening();
}
void loop() {
if ( radio.available() ) {
//Serial.println("AVAILABLE");
// reading data
radio.read(&rawData, sizeof(rawData));
// detecting command
container = strtok(rawData, DELIMITER);
//Serial.println(container);
if ( strcmp(container, DEVICE_ID) == 0 ) {
container = strtok(NULL, DELIMITER);
if ( container[0] == '0' ) {
//Serial.println("OFF");
digitalWrite(PIN_RELAY, 0);
}
else {
//Serial.println("ON");
digitalWrite(PIN_RELAY, 1);
}
}
}
delay(300);
}
Premetto che l'arduino durante questi test prendeva l'alimentazione da un FTDI, mentre prima da un alimentatore (questo https://it.aliexpress.com/item/32877094377.html?spm=a2g0s.9042311.0.0.27424c4dH3oYZb) collegato al pin raw. Ho pensato che il problema fosse questo alimentatore ma non può esserlo perché quando ho fatto il test 1 in cui ho avuto problemi già non utilizzavo tale alimentatore.
Qualcuno mi sa dare una spiegazione?