Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Una's crazed Go-Kart Project, aka, KartBot
- // Dual OSMC's controlling a wheelchair base
- // Creative Commons License. Written by Brian Gosney 2012
- #include <LiquidCrystalFast.h>
- LiquidCrystalFast lcd(7,8,9,10,11,12,13);
- int readings[100];
- byte readingNumber=0;
- long averageMe = 0;
- int brakeRaw;
- int tpsRaw;
- byte dutyCycle;
- byte brakeLevel;
- byte tpsLevel;
- boolean motorEnabled= false;
- #define disablePin 5
- #define leftForward 14
- #define leftBackward 24
- #define rightForward 15
- #define rightBackward 25
- #define brakeControl 16
- #define throttleSensor 38
- #define brakeSensor 39
- #define steeringSensor 40 // Not yet implemented - placeholder for now
- #define leftMotorTemp 41 // Moving to I2C temp sensors asap.
- #define rightMotorTemp 42
- void setup() {
- Serial.begin(9600);
- pinMode(disablePin, OUTPUT);
- digitalWrite(disablePin, HIGH); // Go high immediately to prevent twitching on startup. High = disabled.
- pinMode(leftForward, OUTPUT);
- pinMode(leftBackward, OUTPUT);
- pinMode(rightForward, OUTPUT);
- pinMode(rightBackward, OUTPUT);
- pinMode(brakeControl, OUTPUT);
- analogWrite(brakeControl, 255); // Release the brake, PWM mode so we can ease it back on.
- /* lcd.begin(20,4);
- lcd.setCursor(0,0);
- lcd.print(F("Throttle: %"));
- lcd.setCursor(0,1);
- lcd.print(F("Brake: %")); */
- pinMode(throttleSensor, INPUT);
- pinMode(brakeSensor, INPUT);
- }
- void loop() {
- // lcd.setCursor(10,0);
- tpsRaw = analogRead(throttleSensor);
- brakeRaw = analogRead(brakeSensor);
- tpsLevel = map(tpsRaw, 0, 1023, 0, 100);
- brakeLevel = map(brakeRaw, 0, 1023, 0, 100);
- /* lcd.print(tpsLevel);
- lcd.print("% ");
- lcd.setCursor(7,1);
- lcd.print(brakeLevel);
- lcd.print("% "); */
- Serial.print("TPS: ");
- Serial.println(tpsLevel);
- if (tpsLevel > 0) {
- if (brakeLevel < 5) {
- // drive the motors
- motorEnabled = true;
- dutyCycle = map(tpsRaw, 0, 1024, 0, 255);
- Serial.print("Duty Cycle ");
- Serial.println(dutyCycle);
- analogWrite(leftForward, dutyCycle);
- analogWrite(rightForward, dutyCycle);
- digitalWrite(disablePin, LOW); // enable the motor controllers
- }
- } else if (motorEnabled) {
- // stop the motors
- motorEnabled = false;
- digitalWrite(disablePin, HIGH);
- analogWrite(leftForward, 0);
- analogWrite(rightForward, 0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement