Created
September 18, 2022 10:27
-
-
Save hekras/42b50562555bfd1ce174775e5d65602d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <ESP8266WiFi.h> | |
#include <espnow.h> | |
// Structure example to receive data | |
// Must match the sender structure | |
typedef struct struct_message { | |
int a0; | |
int a1; | |
int a2; | |
int a3; | |
int a4; | |
int a5; | |
int a6; | |
int a7; | |
} struct_message; | |
// Create a struct_message called myData | |
struct_message myData; | |
uint8_t Pwm1 = 5; //Nodemcu PWM pin | |
uint8_t Pwm2 = 4; //Nodemcu PWM pin | |
int a0 = 15; //Gpio-15 of nodemcu esp8266 | |
int a1 = 13; //Gpio-13 of nodemcu esp8266 | |
int a2 = 12; //Gpio-12 of nodemcu esp8266 | |
int a3 = 14; //Gpio-14 of nodemcu esp8266 | |
// Callback function that will be executed when data is received | |
void OnDataRecv(uint8_t * mac, uint8_t *incomingData, uint8_t len) { | |
memcpy(&myData, incomingData, sizeof(myData)); | |
Serial.print(myData.a0); | |
Serial.print(myData.a1); | |
Serial.print(myData.a2); | |
Serial.print(myData.a3); | |
Serial.print("-"); | |
Serial.print(myData.a4); | |
Serial.print(myData.a5); | |
Serial.print(myData.a6); | |
Serial.print(myData.a7); | |
Serial.println(); | |
if (!myData.a0) { | |
digitalWrite(a0, HIGH); //Start first motor | |
digitalWrite(a1, LOW); | |
digitalWrite(a2, LOW); //Start second motor | |
digitalWrite(a3, HIGH); | |
} | |
if (!myData.a3) { | |
digitalWrite(a0, LOW); //Start first motor | |
digitalWrite(a1, HIGH); | |
digitalWrite(a2, HIGH); //Start second motor | |
digitalWrite(a3, LOW); | |
} | |
if (!myData.a1) { | |
digitalWrite(a0, HIGH); //Start first motor | |
digitalWrite(a1, LOW); | |
digitalWrite(a2, HIGH); //Start second motor | |
digitalWrite(a3, LOW); | |
} | |
if (!myData.a2) { | |
digitalWrite(a0, LOW); //Start first motor | |
digitalWrite(a1, HIGH); | |
digitalWrite(a2, LOW); //Start second motor | |
digitalWrite(a3, HIGH); | |
} | |
if ((myData.a0)&&(myData.a1)&&(myData.a2)&&(myData.a3)) { | |
digitalWrite(a0, LOW); //Start first motor | |
digitalWrite(a1, LOW); | |
digitalWrite(a2, LOW); //Start second motor | |
digitalWrite(a3, LOW); | |
} | |
if (!myData.a7) { | |
analogWrite(Pwm1, 100); | |
analogWrite(Pwm2, 100); | |
} | |
if (!myData.a6) { | |
analogWrite(Pwm1, 150); | |
analogWrite(Pwm2, 150); | |
} | |
if (!myData.a5) { | |
analogWrite(Pwm1, 200); | |
analogWrite(Pwm2, 200); | |
} | |
if (!myData.a4) { | |
analogWrite(Pwm1, 250); | |
analogWrite(Pwm2, 250); | |
} | |
} | |
void setup() { | |
// Initialize Serial Monitor | |
Serial.begin(115200); | |
pinMode(a0, OUTPUT); | |
pinMode(a1, OUTPUT); | |
pinMode(a2, OUTPUT); | |
pinMode(a3, OUTPUT); | |
delay(2000); | |
// Set device as a Wi-Fi Station | |
WiFi.mode(WIFI_STA); | |
WiFi.disconnect(); | |
Serial.println(WiFi.macAddress()); | |
// Init ESP-NOW | |
if (esp_now_init() != 0) { | |
Serial.println("Error initializing ESP-NOW"); | |
return; | |
} | |
// Once ESPNow is successfully Init, we will register for recv CB to | |
// get recv packer info | |
esp_now_set_self_role(ESP_NOW_ROLE_SLAVE); | |
esp_now_register_recv_cb(OnDataRecv); | |
Serial.println(""); | |
Serial.println("Running"); | |
} | |
void loop() { | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment