Moved motor controller code out of handheld controller code
This commit is contained in:
parent
c59a99c8da
commit
6a9fad25e4
|
|
@ -1,39 +0,0 @@
|
|||
#include "Arduino.h"
|
||||
#include <stdint.h>
|
||||
#include "Syren50.h"
|
||||
|
||||
void Syren50::init() {
|
||||
Serial1.begin(9600);
|
||||
delay(1000); // Give about 1 second to boot up, per datasheet
|
||||
Serial.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();
|
||||
}
|
||||
|
||||
void Syren50::forwards(uint8_t speed) {
|
||||
command(0x00, speed);
|
||||
}
|
||||
|
||||
void Syren50::reverse(uint8_t speed) {
|
||||
command(0x01, speed);
|
||||
}
|
||||
|
||||
void Syren50::move(int8_t direction, uint8_t speed) {
|
||||
if (direction == 1) {
|
||||
forwards(speed);
|
||||
} else if (direction == -1) {
|
||||
reverse(speed);
|
||||
} else {
|
||||
forwards(0);
|
||||
}
|
||||
}
|
||||
|
||||
void Syren50::minInputVoltage(float voltage) {
|
||||
command(0x03, (uint8_t)((voltage - 6.0) * 5.0));
|
||||
}
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
#ifndef SYREN50_H
|
||||
#define SYREN50_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
class Syren50 {
|
||||
public:
|
||||
void init();
|
||||
void forwards(uint8_t speed);
|
||||
void reverse(uint8_t speed);
|
||||
void move(int8_t direction, uint8_t speed);
|
||||
void minInputVoltage(float voltage);
|
||||
|
||||
private:
|
||||
void command(uint8_t command, uint8_t data);
|
||||
};
|
||||
|
||||
#endif
|
||||
27
src/main.cpp
27
src/main.cpp
|
|
@ -2,49 +2,28 @@
|
|||
#include "screen.h"
|
||||
#include "wifi.h"
|
||||
#include "controls.h"
|
||||
#include "Syren50.h"
|
||||
#include <ESP8266WiFi.h>
|
||||
#include <ESP8266WebServer.h>
|
||||
#include <string>
|
||||
using namespace std;
|
||||
|
||||
Syren50 motor;
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
displayInit();
|
||||
controlsInit();
|
||||
WiFi.softAP(WIFI_SSID, WIFI_PASS);
|
||||
displayWiFiInformation(WIFI_SSID, WIFI_PASS);
|
||||
delay(1000);
|
||||
motor.init();
|
||||
}
|
||||
|
||||
float throttle = 0.0f;
|
||||
int direction = 0;
|
||||
uint8_t direction = 0;
|
||||
bool horn = false;
|
||||
bool bell = false;
|
||||
bool lights = false;
|
||||
|
||||
int last_direction = 0;
|
||||
float last_throttle = 0.0f;
|
||||
|
||||
void inertia(float throttle, int direction, float &inertial_throttle, int &inertial_direction) {
|
||||
|
||||
inertial_throttle = throttle;
|
||||
inertial_direction = direction;
|
||||
}
|
||||
|
||||
|
||||
void loop() {
|
||||
getControlsState(throttle, direction, horn, bell, lights);
|
||||
|
||||
float motor_throttle;
|
||||
int motor_direction;
|
||||
inertia(throttle, direction, motor_throttle, motor_direction);
|
||||
|
||||
displayControlStatus(motor_throttle, motor_direction, horn, bell, lights);
|
||||
motor.move(motor_direction, motor_throttle * 127.0f);
|
||||
|
||||
displayControlStatus(throttle, direction, horn, bell, lights);
|
||||
//sendControlOutputs(throttle, direction, horn, bell, lights);
|
||||
delay(1);
|
||||
}
|
||||
Loading…
Reference in New Issue