Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Kartbot Steering Wheel Controller
- // Teensy MCU in a Logitech Momo wheel with paddles and buttons
- // 6 buttons, 2 paddles, 2 LED's.
- // Buttons numbered top to bottom
- // Communicates via i2c with Teensy++ controller in the back of the electric go-kart.
- #include <Wire.h>
- #define leftOne 21
- #define leftTwo 20
- #define leftThree 19
- #define rightOne 18
- #define rightTwo 17
- #define rightThree 16
- #define leftLED 15
- #define rightLED 14
- #define leftPaddle 13
- #define rightPaddle 12
- byte buttonStates=1;
- void setup() {
- Serial.begin(9600);
- Wire.begin(2);
- Wire.onRequest(sendData);
- Wire.onReceive(receiveData);
- pinMode(leftOne, INPUT);
- pinMode(leftTwo, INPUT);
- pinMode(leftThree, INPUT);
- pinMode(rightOne, INPUT);
- pinMode(rightTwo, INPUT);
- pinMode(rightThree, INPUT);
- pinMode(leftLED, OUTPUT);
- pinMode(rightLED, OUTPUT);
- pinMode(leftPaddle, INPUT);
- pinMode(rightPaddle, INPUT);
- digitalWrite(leftOne, HIGH);
- digitalWrite(leftTwo, HIGH);
- digitalWrite(leftThree, HIGH);
- digitalWrite(rightOne, HIGH);
- digitalWrite(rightTwo, HIGH);
- digitalWrite(rightThree, HIGH);
- digitalWrite(leftPaddle, HIGH);
- digitalWrite(rightPaddle, HIGH);
- }
- void loop() {
- if (!digitalRead(rightPaddle)) {
- buttonStates |= 0x1;
- buttonStates &= ~0x2;
- // Serial.println(buttonStates);
- }
- if (!digitalRead(leftPaddle)) {
- buttonStates |= 0x2;
- buttonStates &= ~0x1;
- // Serial.println(buttonStates);
- }
- if (!digitalRead(rightOne)) {
- buttonStates |= 0x4;
- } else {
- buttonStates &= ~0x4;
- }
- if (!digitalRead(rightTwo)) {
- buttonStates |= 0x8;
- } else {
- buttonStates &= ~0x8;
- }
- if (!digitalRead(rightThree)) {
- buttonStates |= 0x10;
- } else {
- buttonStates &= ~0x10;
- }
- if (!digitalRead(leftOne)) {
- buttonStates |= 0x20;
- } else {
- buttonStates &= ~0x20;
- }
- if (!digitalRead(leftTwo)) {
- buttonStates |= 0x40;
- } else {
- buttonStates &= ~0x40;
- }
- if (!digitalRead(leftThree)) {
- buttonStates |= 0x80;
- } else {
- buttonStates &= ~0x80;
- }
- // Serial.println(buttonStates);
- }
- void sendData() {
- Wire.write(buttonStates); // Seriously, it's THAT simple! Send a number between 1 and 254 to indicate which buttons are pressed.
- }
- void receiveData(int howMany) { // Rear controller will control LED's to indicate forward or backward operation.
- while (Wire.available())
- {
- byte x = Wire.read();
- if (x) { // True for forward, false for reverse
- digitalWrite(leftLED, LOW);
- digitalWrite(rightLED, HIGH);
- } else {
- digitalWrite(leftLED, HIGH);
- digitalWrite(rightLED, LOW);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement