Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
//PROGRAM BY: RANDY N. CAÑADA (NOV. 2025) //CONNECTIONS /*CE_PIN 7 CSN_PIN 10 SCK_PIN 4 MOSI_PIN 6 MISO_PIN 5 GND-GND VCC-5Vdc/3.3vdc JOYSTICKS: VRX = A1 VRY= A0 gnd-grnd vcc-vcc note: when you are using breakout board for nrfl01, you can supply 5vdc. If not use 3.3vdc */ #include
#include
#define CE_PIN 7 #define CSN_PIN 10 #define joyVert A0 // VRy → forward/backward #define joyHorz A1 // VRx → turning RF24 radio(CE_PIN, CSN_PIN); const byte address[6] = "00001"; struct Data_Package { int8_t motorLeft; int8_t motorRight; }; Data_Package data; int centerVert = 0; int centerHorz = 0; void setup() { Serial.begin(115200); pinMode(joyVert, INPUT); pinMode(joyHorz, INPUT); SPI.begin(); //SPI.begin(4, 5, 6); // SCK, MISO, MOSI if (!radio.begin()) { Serial.println("NRF24 not responding!"); while (1); } radio.openWritingPipe(address); radio.setChannel(100); radio.setPALevel(RF24_PA_LOW); radio.setDataRate(RF24_250KBPS); radio.stopListening(); // Calibrate joystick center Serial.println("Calibrating joystick, keep it untouched..."); delay(2000); centerVert = analogRead(joyVert); centerHorz = analogRead(joyHorz); Serial.print("Center Vert: "); Serial.print(centerVert); Serial.print(" Center Horz: "); Serial.println(centerHorz); Serial.println("Calibration done!"); } void loop() { int deadZone = 30; int joyV_raw = analogRead(joyVert) - centerVert; int joyH_raw = analogRead(joyHorz) - centerHorz; int joyV = 0; int joyH = 0; // Map Vertical (forward/backward) if (abs(joyV_raw) > deadZone) { joyV = map(joyV_raw, -512, 512, -127, 127); } // Map Horizontal (turning) if (abs(joyH_raw) > deadZone) { joyH = map(joyH_raw, -512, 512, -127, 127); } // Combine for motor speeds int MotorLeft = joyV + joyH; int MotorRight = joyV - joyH; MotorLeft = constrain(MotorLeft, -127, 127); MotorRight = constrain(MotorRight, -127, 127); if (abs(MotorLeft) < 5) MotorLeft = 0; if (abs(MotorRight) < 5) MotorRight = 0; data.motorLeft = MotorLeft; data.motorRight = MotorRight; radio.write(&data, sizeof(Data_Package)); Serial.print("joyV_raw: "); Serial.print(joyV_raw); Serial.print(" joyH_raw: "); Serial.print(joyH_raw); Serial.print(" MotorLeft: "); Serial.print(MotorLeft); Serial.print(" MotorRight: "); Serial.println(MotorRight); delay(100); }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)