added remote code

This commit is contained in:
Ghassan Yusuf 2025-03-23 23:41:54 +03:00
parent 0c0669d069
commit ac0aa5289e
4 changed files with 180 additions and 0 deletions

View File

@ -0,0 +1,44 @@
//==========================================================
// HEADER
//==========================================================
// HEADER FILE
#include "header.h"
//==========================================================
// SETUP
//==========================================================
// SETUP
void setup() {
Serial.begin(115200);
JY.setPin(X_AXIS_PIN, Y_AXIS_PIN, SWITCH_PIN);
JY.begin();
// StartWireless(); // Initialize ESP-NOW
}
//==========================================================
// LOOP
//==========================================================
// LOOP
void loop() {
JD.X = map(average(JY.readX(), 10), 0, 4095, 0, 255); // Map to 0-255
JD.Y = map(average(JY.readY(), 10), 0, 4095, 0, 255); // Map to 0-255
JD.B = JY.readB();
Serial.print(JD.X); Serial.print(" ");
Serial.print(JD.Y); Serial.print(" ");
Serial.println(!JD.B);
// SendData(JD); // Uncomment to send data
delay(20);
}
//==========================================================
// END
//==========================================================

View File

@ -0,0 +1,14 @@
//==========================================================
// JOYSTIC
//==========================================================
// Helper function
float average(uint16_t pin, unsigned int times) { // Changed to uint16_t
unsigned long readings = 0;
for(int i=0; i<times; i++) readings += analogRead(pin);
return readings / times;
}
//==========================================================
// JOYSTIC
//==========================================================

91
espnow-remote/header.h Normal file
View File

@ -0,0 +1,91 @@
//==========================================================
// JOYSTIC
//==========================================================
// LIBRARY
#include "joystic.h"
// JOYSTIC PIN DEFINITION
#define X_AXIS_PIN 32 // ADC1_CH4 (Valid)
#define Y_AXIS_PIN 33 // ADC1_CH5 (Valid)
#define SWITCH_PIN 34 // Changed from 25 (now ADC1_CH6)
// DATA STRUCTURE
struct JoysticData {
uint8_t X;
uint8_t Y;
bool B;
};
// JOYSTIC OBJECT
Joystic JY;
// JOYSTIC DATA
JoysticData JD;
//==========================================================
// ESPNOW
//==========================================================
// LIBRARY
#include <esp_now.h>
#include <WiFi.h>
// THIS REMOTE MAC ADDRESS
// 88:13:BF:04:24:7C
// THE RECEIVER MAC ADDRESS
// 1C:69:20:E9:13:EC
// REPLACE WITH YOUR RECEIVER MAC ADDRESS
uint8_t receiverMacAddress[] = {0x1C, 0x69, 0x20, 0xE9, 0x13, 0xEC}; // 1C:69:20:E9:13:EC
// CALLBACK WHEN DATA IS SENT
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
Serial.print("\r\nLast Packet Send Status:\t ");
Serial.println(status);
Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Message sent" : "Message failed");
}
// SEND DATA
void SendData(JoysticData &JD) {
esp_err_t result = esp_now_send(receiverMacAddress, (uint8_t *) &JD, sizeof(JD));
if (result == ESP_OK) {
Serial.println("Sent with success");
} else {
Serial.println("Error sending the data");
}
}
// Starting WiFi ESP NOW
void StartWireless() {
// WiFi Station Mode
WiFi.mode(WIFI_MODE_STA);
// Init ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
} else {
Serial.println("Succes: Initialized ESP-NOW");
}
esp_now_register_send_cb(OnDataSent);
// Register peer
esp_now_peer_info_t peerInfo;
memcpy(peerInfo.peer_addr, receiverMacAddress, 6);
peerInfo.channel = 0;
peerInfo.encrypt = false;
// Add peer
if (esp_now_add_peer(&peerInfo) != ESP_OK) {
Serial.println("Failed to add peer");
return;
} else {
Serial.println("Succes: Added peer");
}
}
//==========================================================

31
espnow-remote/joystic.h Normal file
View File

@ -0,0 +1,31 @@
class Joystic {
private:
uint8_t x_pin, y_pin, b_pin;
public:
Joystic() { }
Joystic(uint8_t x, uint8_t y, uint8_t b) {
setPin(x, y, b);
}
void setPin(uint8_t x, uint8_t y, uint8_t b) {
x_pin = x;
y_pin = y;
b_pin = b;
}
void begin() {
pinMode(x_pin, INPUT);
pinMode(y_pin, INPUT);
pinMode(b_pin, INPUT_PULLUP);
}
unsigned int readX() { return analogRead(x_pin); }
unsigned int readY() { return analogRead(y_pin); }
bool readB() { return !digitalRead(b_pin); }
};