diff --git a/lib/SyRen50/src/Syren50.cpp b/lib/SyRen50/src/Syren50.cpp index c60abc0..d2cdd47 100644 --- a/lib/SyRen50/src/Syren50.cpp +++ b/lib/SyRen50/src/Syren50.cpp @@ -2,18 +2,22 @@ #include #include "Syren50.h" +#define RXD2 16 +#define TXD2 17 + void Syren50::init() { - Serial1.begin(9600); + Serial2.begin(9600, SERIAL_8N1, RXD2, TXD2); delay(1000); // Give about 1 second to boot up, per datasheet - Serial.write(0b10101010); + Serial2.write(0b10101010); } void Syren50::command(uint8_t command, uint8_t data) { - Serial1.write(0x80); // Address - Serial1.write(command); // Command - Serial1.write(data); - Serial1.write((0x80 + command + data) & 0b01111111); // Checksum - Serial1.flush(); + Serial2.write(0x80); // Address + Serial2.write(command); // Command + Serial2.write(data); + Serial2.write((0x80 + command + data) & 0b01111111); // Checksum + Serial2.flush(); + delay(5); } void Syren50::forwards(uint8_t speed) { diff --git a/platformio.ini b/platformio.ini index c36403d..ba9487f 100644 --- a/platformio.ini +++ b/platformio.ini @@ -10,15 +10,10 @@ [platformio] -default_envs = esp12e +default_envs = esp32dev name = WiFiTrainReceiver -[env:esp12e] -platform = espressif8266 +[env:esp32dev] +platform = espressif32 framework = arduino -board = esp12e - -[env:nodemcuv2] -platform = espressif8266 -framework = arduino -board = nodemcuv2 +board = esp32dev \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index da4cc4b..02bcb81 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,39 +1,54 @@ #include "Arduino.h" -#include "wifi.h" -#include +#include #include -#include "SyRen50.h" +#include "Syren50.h" using namespace std; Syren50 motor; void setup() { - Serial.begin(9600); + Serial.begin(115200); // delay required for motor controller boot-up delay(1000); motor.init(); } float throttle = 0.0f; -uint8_t direction = 0; +int8_t direction = 0; bool horn = false; bool bell = false; bool lights = false; -uint8_t last_direction = 0; +int8_t last_direction = 0; float last_throttle = 0.0f; -void inertia(float throttle, uint8_t direction, float &inertial_throttle, uint8_t &inertial_direction) { +void inertia(float throttle, int8_t direction, float &inertial_throttle, int8_t &inertial_direction) { inertial_throttle = throttle; inertial_direction = direction; } float motor_throttle; -uint8_t motor_direction; +int8_t motor_direction; + +void get_control_inputs(float &throttle, int8_t &direction) { + if (Serial.available() > 0) { + if (Serial.peek() == 'c') { + Serial.read(); + Serial.println("Init motor"); + motor.init(); + } else { + int recvd = Serial.parseInt(); + throttle = (float) recvd / 100.0; + Serial.println(throttle); + direction = 1; + } + } +} void loop() { - //get_control_inputs(throttle, direction, horn, bell, lights); + get_control_inputs(throttle, direction); inertia(throttle, direction, motor_throttle, motor_direction); - motor.move(motor_direction, motor_throttle); + Serial.println(motor_throttle); + motor.move(motor_direction, (uint8_t) (motor_throttle * 127.0)); delay(1); } \ No newline at end of file