Index

auto-plow / 20d052c

A wheelchair motor-propelled battery-powered ESP32-driven remote control snow plow.

Latest Commit

{#}TimeHashSubjectAuthor#(+)(-)GPG?
4920 Jan 2019 05:1820d052cUpdatesjoshuas3178124N

Blob @ auto-plow / src / ard1 / ard1.cpp

text/plain2643 bytesdownload raw
1#include "Arduino.h"
2#include "ard1.h"
3#include "serial.h"
4#include "reset.h"
5
6#include "SoftwareSerial.h"
7SoftwareSerial roboclaw(4, 5);
8
9// One time
10void setup() {
11 pinMode(PIN_RESET, INPUT);
12 digitalWrite(PIN_RESET, LOW);
13 serial();
14
15 Serial.println("ARD1: ARD1 serial communications active");
16 Serial.print("ARD1: Beginning RoboClaw Motor Controller serial at baud rate ");
17 Serial.println(ROBOCLAW_BAUD);
18 roboclaw.begin(ROBOCLAW_BAUD);
19
20 pinMode(PIN_BRAKES, OUTPUT);
21 pinMode(PIN_CH_1, INPUT);
22 pinMode(PIN_CH_2, INPUT);
23 pinMode(PIN_CH_3, INPUT);
24 pinMode(PIN_CH_4, INPUT);
25 pinMode(PIN_CH_5, INPUT);
26 pinMode(PIN_CH_6, INPUT);
27}
28
29int brakes = 1;
30
31byte full_stop = 0;
32// Repeatedly
33void loop() {
34 int ch1 = pulseIn(PIN_CH_1, 1000);
35 int ch2 = pulseIn(PIN_CH_2, 1000);
36 int ch3 = pulseIn(PIN_CH_3, 1000);
37 int ch4 = pulseIn(PIN_CH_4, 1000);
38 int ch5 = pulseIn(PIN_CH_5, 1000);
39 int ch6 = pulseIn(PIN_CH_6, 1000);
40
41 // ch1: right joystick horizontal, 1099, 1978
42 // ch2: right joystick vertical, 1003, 1986
43 // ch3: left joystick vertical, 993, 1885
44 // ch4: left joystick horizontal, 1023, 1986
45 // ch5: switch d, 993, 1986
46 // ch6: switch a, 993, 1986
47
48 if (ch1 < 1099) ch1 = 1099;
49 if (ch1 > 1978) ch1 = 1978;
50
51 if (ch2 < 1003) ch2 = 1003;
52 if (ch2 > 1986) ch2 = 1986;
53
54 if (ch3 < 993) ch3 = 993;
55 if (ch3 > 1885) ch3 = 1885;
56
57 if (ch4 < 1023) ch4 = 1023;
58 if (ch4 > 1986) ch4 = 1986;
59
60 if (ch5 < 993) ch5 = 993;
61 if (ch5 > 1986) ch5 = 1986;
62
63 if (ch6 < 993) ch6 = 993;
64 if (ch6 > 1986) ch6 = 1986;
65
66 int ch1_fixed = map(ch1, 1099, 1978, 1, 127);
67 int ch2_fixed = map(ch2, 1003, 1986, 1, 127);
68
69 if (ch1_fixed < 84 && ch1_fixed > 44) ch1_fixed = 64;
70 if (ch2_fixed < 84 && ch2_fixed > 44) ch2_fixed = 64;
71
72 int motor_left = 64;
73 int motor_right = 64;
74
75 if (ch1_fixed > 64 && ch2_fixed > 64) {
76 motor_left = ch2_fixed;
77 motor_right = 127 - (ch1_fixed - 64);
78 } else if (ch1_fixed < 64 && ch2_fixed > 64) {
79 motor_right = ch2_fixed;
80 motor_left = 127 - (64 - ch1_fixed);
81 } else if (ch2_fixed > 64) {
82 motor_right = ch2_fixed;
83 motor_left = ch2_fixed;
84 } else if (ch1_fixed > 64 && ch2_fixed < 64) {
85 motor_left = ch2_fixed;
86 motor_right = 64 - (64 - ch1_fixed);
87 } else if (ch1_fixed < 64 && ch2_fixed < 64) {
88 motor_right = ch2_fixed;
89 motor_left = 64 - (ch1_fixed + 64);
90 } else if (ch2_fixed < 64) {
91 motor_left = ch2_fixed;
92 motor_right = ch2_fixed;
93 }
94
95 Serial.print(motor_left - 64);
96 Serial.print("\t");
97 Serial.println(motor_right - 64);
98
99// roboclaw.write(127);
100// roboclaw.write(255);
101}
102
103