Advertisement
UnaClocker

KartBot

Jan 15th, 2012
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.34 KB | None | 0 0
  1. // Una's crazed Go-Kart Project, aka, KartBot
  2. // Dual OSMC's controlling a wheelchair base
  3. // Creative Commons License. Written by Brian Gosney 2012
  4.  
  5. #include <LiquidCrystalFast.h>
  6.  
  7. LiquidCrystalFast lcd(7,8,9,10,11,12,13);
  8.  
  9.  
  10. int readings[100];
  11. byte readingNumber=0;
  12. long averageMe = 0;
  13. int brakeRaw;
  14. int tpsRaw;
  15. byte dutyCycle;
  16. byte brakeLevel;
  17. byte tpsLevel;
  18. boolean motorEnabled= false;
  19.  
  20. #define disablePin 5
  21. #define leftForward 14
  22. #define leftBackward 24
  23. #define rightForward 15
  24. #define rightBackward 25
  25. #define brakeControl 16
  26. #define throttleSensor 38
  27. #define brakeSensor 39
  28. #define steeringSensor 40 // Not yet implemented - placeholder for now
  29. #define leftMotorTemp 41 // Moving to I2C temp sensors asap.
  30. #define rightMotorTemp 42
  31.  
  32.  
  33.  
  34.  
  35. void setup() {
  36.   Serial.begin(9600);
  37.   pinMode(disablePin, OUTPUT);
  38.   digitalWrite(disablePin, HIGH); // Go high immediately to prevent twitching on startup. High = disabled.
  39.   pinMode(leftForward, OUTPUT);
  40.   pinMode(leftBackward, OUTPUT);
  41.   pinMode(rightForward, OUTPUT);
  42.   pinMode(rightBackward, OUTPUT);
  43.   pinMode(brakeControl, OUTPUT);
  44.   analogWrite(brakeControl, 255); // Release the brake, PWM mode so we can ease it back on.
  45. /*  lcd.begin(20,4);
  46.   lcd.setCursor(0,0);
  47.   lcd.print(F("Throttle:    %"));
  48.   lcd.setCursor(0,1);
  49.   lcd.print(F("Brake:    %")); */
  50.   pinMode(throttleSensor, INPUT);
  51.   pinMode(brakeSensor, INPUT);
  52. }
  53.  
  54. void loop() {
  55. //  lcd.setCursor(10,0);
  56.   tpsRaw = analogRead(throttleSensor);
  57.   brakeRaw = analogRead(brakeSensor);
  58.   tpsLevel = map(tpsRaw, 0, 1023, 0, 100);
  59.   brakeLevel = map(brakeRaw, 0, 1023, 0, 100);
  60. /*  lcd.print(tpsLevel);
  61.   lcd.print("%   ");
  62.   lcd.setCursor(7,1);
  63.   lcd.print(brakeLevel);
  64.   lcd.print("%   "); */
  65.   Serial.print("TPS: ");
  66.   Serial.println(tpsLevel);
  67.   if (tpsLevel > 0) {
  68.     if (brakeLevel < 5) {
  69.     // drive the motors
  70.     motorEnabled = true;
  71.     dutyCycle = map(tpsRaw, 0, 1024, 0, 255);
  72.     Serial.print("Duty Cycle ");
  73.     Serial.println(dutyCycle);
  74.     analogWrite(leftForward, dutyCycle);
  75.     analogWrite(rightForward, dutyCycle);
  76.     digitalWrite(disablePin, LOW); // enable the motor controllers
  77.     }
  78.   } else if (motorEnabled) {
  79.     // stop the motors
  80.     motorEnabled = false;
  81.     digitalWrite(disablePin, HIGH);
  82.     analogWrite(leftForward, 0);
  83.     analogWrite(rightForward, 0);
  84.    
  85.   }
  86.  
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement