#include //libreria per modulo #define BUTTON_PIN 2 //definizione del pin del pulsante #define LED_PIN 3 //definizione del pin per il led #define POT_PIN A0 //definizione del pin per il potenziometro const byte address[6] = "00002"; //Indirizzo del PIPE RF24 radio(7, 8); //Imposta CE e nCSN conformemente all'hardware struct DataPacket { // struttura per la ricezione del dato byte button; //variabile per il pulsate byte brightness; // variabile per il contenimento del segnale del potenziometro ricevuto }; DataPacket sendData; //variabile del tipo di struttura del pacchetto data dalla libreria, serve per l'invio del pacchetto DataPacket receiveData; //variabile del tipo di struttura del pacchetto data dalla libreria, serve per la ricezione del pacchetto void setup() { Serial.begin(9600); // impostazione base per il serial monitor pinMode(BUTTON_PIN, INPUT_PULLUP); // impostazione base per il pin del pulsante pinMode(LED_PIN, OUTPUT); // impostazione base per il pin del led /* ---------- INIZIALIZZAZIONE DELLA LIBRERIA ---------- */ radio.begin(); radio.setAutoAck(true); radio.openWritingPipe(address); radio.openReadingPipe(0, address); radio.startListening(); } void loop() { /* ---------- LETTURA INPUT ---------- */ sendData.button = !digitalRead(BUTTON_PIN); // 1 se premuto int potValue = analogRead(POT_PIN); sendData.brightness = map(potValue, 0, 1023, 0, 255); /* ---------- COMANDI INVIO DEL PACCHETTO ---------- */ radio.stopListening(); radio.write(&sendData, sizeof(sendData)); radio.startListening(); Serial.print("Inviato | Button: "); Serial.print(sendData.button); Serial.print(" | Brightness: "); Serial.println(sendData.brightness); /* ---------- RICEZIONE ---------- */ if (radio.available()) { radio.read(&receiveData, sizeof(receiveData)); /* ---------- GESTIONE DEL SERIAL MONITOR ---------- */ Serial.print("Ricevuto | Button: "); Serial.print(receiveData.button); Serial.print(" | Brightness: "); Serial.println(receiveData.brightness); if (receiveData.button == 1) //controllo del valore del pulsate per l'accensione del led { analogWrite(LED_PIN, receiveData.brightness); // PWM per la luminosita del led eper farlo accendere } else { analogWrite(LED_PIN, 0); // LED spento } } delay(100); //pausa di 100ms }