Davide Rosa Hack
In questo articolo spiego come creare un radiocomando a 2,4 gHz da utilizzare con una radioricevente che verrà illustrata in un'altro articolo.
Per il progetto e stato utilizzata l'Arduino Pro Mini 328 (3.3V/8MHz)
e la scheda nRF24L01+Module (Modulo radio TX/RX) con la libreria RF24
come stick si possono utilizzare dei Mini Joystick o il vecchio telecomando di un giocattolo
Schema elettrico
Sketch Arduino :
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define JOYSTICK_CH1 A0
#define JOYSTICK_CH2 A1
#define JOYSTICK_CH3 A2
#define JOYSTICK_CH4 A3
#define JOYSTICK_CH5 A4
#define JOYSTICK_CH6 A5
#define JOYSTICK_CH7 A6
#define JOYSTICK_CH8 A7
#define OUTPUT_1 2
#define OUTPUT_2 3
#define OUTPUT_3 4
#define OUTPUT_4 5
#define OUTPUT_5 6
#define OUTPUT_6 7
#define OUTPUT_7 8
#define CSN_PIN 9
#define CE_PIN 10
const uint64_t pipe = 0xE8E8F0F0E1LL;
RF24 radio(CE_PIN, CSN_PIN);
byte joystick[8];
void setup() {
pinMode(OUTPUT_1, OUTPUT);
pinMode(OUTPUT_2, OUTPUT);
pinMode(OUTPUT_3, OUTPUT);
pinMode(OUTPUT_4, OUTPUT);
pinMode(OUTPUT_5, OUTPUT);
pinMode(OUTPUT_6, OUTPUT);
pinMode(OUTPUT_7, OUTPUT);
digitalWrite(OUTPUT_1, LOW);
digitalWrite(OUTPUT_2, LOW);
digitalWrite(OUTPUT_3, LOW);
digitalWrite(OUTPUT_4, LOW);
digitalWrite(OUTPUT_5, LOW);
digitalWrite(OUTPUT_6, LOW);
digitalWrite(OUTPUT_7, HIGH);
radio.begin();
radio.setPayloadSize(sizeof(joystick));
radio.openWritingPipe(pipe);
}
void loop() {
joystick[0] = (byte)map(analogRead(JOYSTICK_CH1), 0, 1023, 0, 255);
joystick[1] = (byte)map(analogRead(JOYSTICK_CH2), 0, 1023, 0, 255);
joystick[2] = (byte)map(analogRead(JOYSTICK_CH3), 0, 1023, 0, 255);
joystick[3] = (byte)map(analogRead(JOYSTICK_CH4), 0, 1023, 0, 255);
joystick[4] = (byte)map(analogRead(JOYSTICK_CH5), 0, 1023, 0, 255);
joystick[5] = (byte)map(analogRead(JOYSTICK_CH6), 0, 1023, 0, 255);
joystick[6] = (byte)map(analogRead(JOYSTICK_CH7), 0, 1023, 0, 255);
joystick[7] = (byte)map(analogRead(JOYSTICK_CH8), 0, 1023, 0, 255);
if (radio.write(joystick, sizeof(joystick))) {
digitalWrite(OUTPUT_7, HIGH);
}
else {
digitalWrite(OUTPUT_7, LOW);
}
}
Galleria Immagini