Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Library Area
- #include <IFCT.h>
- #include <SPI.h>
- const int can0_enable = 2; // defines can0 enable pin, pin 28, as can0_enable
- CAN_message_t msg;
- // Setup Area
- const int SOL1 = 32;
- const int SOL2 = 31;
- const int SOL3 = 30;
- const int SOL4 = 29;
- const int SOL5 = 25;
- const int SOL6 = 26;
- const int SOL7 = 27;
- const int SOL8 = 28;
- const int L01 = 5;
- const int L02 = 6;
- const int L03 = 7;
- const int L04 = 8;
- const int L05 = 9;
- const int L06 = 10;
- const int L07 = 11;
- const int L08 = 12;
- const int btn01 = 16;
- const int btn02 = 15;
- const int btn03 = 14;
- const int btn04 = 13;
- const int btn05 = 20;
- const int btn06 = 19;
- const int btn07 = 18;
- const int btn08 = 17;
- byte btnhold = 0;
- byte shift = 0;
- byte neutral = 0;
- byte reverse = 0;
- byte gear = 0;
- byte delay12 = 0;
- byte delay23 = 0;
- byte delay34 = 0;
- byte delay45 = 0;
- byte delay56 = 0;
- byte delay67 = 0;
- byte btnStatus01 = 0;
- byte btnStatus02 = 0;
- byte btnStatus03 = 0;
- byte btnStatus04 = 0;
- byte btnStatus05 = 0;
- byte btnStatus06 = 0;
- byte btnStatus07 = 0;
- byte btnStatus08 = 0;
- byte outStatus01 = 0;
- byte outStatus02 = 0;
- byte outStatus03 = 0;
- byte outStatus04 = 0;
- byte outStatus05 = 0;
- byte outStatus06 = 0;
- byte outStatus07 = 0;
- byte outStatus08 = 0;
- elapsedMillis timer1;
- void setup() {
- // put your setup code here, to run once:
- pinMode(SOL1, OUTPUT);
- pinMode(SOL2, OUTPUT);
- pinMode(SOL3, OUTPUT);
- pinMode(SOL4, OUTPUT);
- pinMode(SOL5, OUTPUT);
- pinMode(SOL6, OUTPUT);
- pinMode(SOL7, OUTPUT);
- pinMode(SOL8, OUTPUT);
- pinMode(L01, OUTPUT);
- pinMode(L02, OUTPUT);
- pinMode(L03, OUTPUT);
- pinMode(L04, OUTPUT);
- pinMode(L05, OUTPUT);
- pinMode(L06, OUTPUT);
- pinMode(L07, OUTPUT);
- pinMode(L08, OUTPUT);
- pinMode(btn01, INPUT);
- pinMode(btn02, INPUT);
- pinMode(btn03, INPUT);
- pinMode(btn04, INPUT);
- pinMode(btn05, INPUT);
- pinMode(btn06, INPUT);
- pinMode(btn07, INPUT);
- pinMode(btn08, INPUT);
- digitalWrite(SOL1, HIGH);
- digitalWrite(SOL2, HIGH);
- digitalWrite(SOL3, HIGH);
- digitalWrite(SOL4, HIGH);
- digitalWrite(SOL5, HIGH);
- digitalWrite(SOL6, HIGH);
- digitalWrite(SOL7, HIGH);
- digitalWrite(SOL8, HIGH);
- digitalWrite(L01, HIGH);
- digitalWrite(L02, HIGH);
- digitalWrite(L03, HIGH);
- digitalWrite(L04, HIGH);
- digitalWrite(L05, HIGH);
- digitalWrite(L06, HIGH);
- digitalWrite(L07, HIGH);
- digitalWrite(L08, HIGH);
- digitalWrite(24, LOW);
- Serial.begin(115200);
- pinMode(can0_enable, OUTPUT); // for the can0 transceiver enable pin
- digitalWrite(can0_enable, LOW); // can0 enable pin needs to be low to receive messages
- Can0.setBaudRate(1000000); // Canbus 0 Bitrate in bits per second.
- Can0.enableFIFO();
- Can0.enableFIFOInterrupt();
- Can0.intervalTimer(); // enable queue system and run callback in background.
- Can0.onReceive(canSniff0);
- }
- void loop() {
- // Integer Read Loop
- if (timer1 >= 10) {
- if ( (digitalRead(btn08) == LOW) && (btnhold == 0) ) {
- Serial.println(F("Shift Command Received..."));
- btnhold = 1;
- btnStatus08 = 1;
- shift = (shift + 1) % 6 ;
- switch (shift) {
- case 0: //
- digitalWrite(SOL1, HIGH);
- outStatus01 = 0;
- digitalWrite(SOL2, HIGH);
- outStatus02 = 0;
- digitalWrite(SOL3, HIGH);
- outStatus03 = 0;
- digitalWrite(SOL4, HIGH);
- outStatus04 = 0;
- digitalWrite(SOL5, HIGH);
- outStatus05 = 0;
- digitalWrite(L01, HIGH);
- digitalWrite(L02, HIGH);
- digitalWrite(L03, HIGH);
- digitalWrite(L04, HIGH);
- digitalWrite(L05, HIGH);
- Serial.println(F("GEAR N"));
- gear = 0;
- break;
- case 1: //
- digitalWrite(SOL1, LOW);
- outStatus01 = 1;
- digitalWrite(SOL2, HIGH);
- outStatus02 = 0;
- digitalWrite(SOL3, HIGH);
- outStatus03 = 0;
- digitalWrite(SOL4, HIGH);
- outStatus04 = 0;
- digitalWrite(SOL5, HIGH);
- outStatus05 = 0;
- digitalWrite(L01, LOW);
- digitalWrite(L02, HIGH);
- digitalWrite(L03, HIGH);
- digitalWrite(L04, HIGH);
- digitalWrite(L05, HIGH);
- Serial.println(F("GEAR 1"));
- gear = 1;
- break;
- case 2: //
- digitalWrite(SOL1, HIGH);
- outStatus01 = 0;
- delay(delay12);
- digitalWrite(SOL2, LOW);
- outStatus02 = 1;
- digitalWrite(SOL3, HIGH);
- outStatus03 = 0;
- digitalWrite(SOL4, HIGH);
- outStatus04 = 0;
- digitalWrite(SOL5, HIGH);
- outStatus05 = 0;
- digitalWrite(L01, HIGH);
- digitalWrite(L02, LOW);
- digitalWrite(L03, HIGH);
- digitalWrite(L04, HIGH);
- digitalWrite(L05, HIGH);
- Serial.println(F("GEAR 2"));
- gear = 2;
- break;
- case 3: //
- digitalWrite(SOL1, HIGH);
- outStatus01 = 0;
- digitalWrite(SOL2, HIGH);
- outStatus02 = 0;
- delay(delay23);
- digitalWrite(SOL3, LOW);
- outStatus03 = 1;
- digitalWrite(SOL4, HIGH);
- outStatus04 = 0;
- digitalWrite(SOL5, HIGH);
- outStatus05 = 0;
- digitalWrite(L01, HIGH);
- digitalWrite(L02, HIGH);
- digitalWrite(L03, LOW);
- digitalWrite(L04, HIGH);
- digitalWrite(L05, HIGH);
- Serial.println(F("GEAR 3"));
- gear = 3;
- break;
- case 4: //
- digitalWrite(SOL1, HIGH);
- outStatus01 = 0;
- digitalWrite(SOL2, HIGH);
- outStatus02 = 0;
- digitalWrite(SOL3, HIGH);
- outStatus03 = 0;
- delay(delay34);
- digitalWrite(SOL4, LOW);
- outStatus04 = 1;
- digitalWrite(SOL5, HIGH);
- outStatus05 = 0;
- digitalWrite(L01, HIGH);
- digitalWrite(L02, HIGH);
- digitalWrite(L03, HIGH);
- digitalWrite(L04, LOW);
- digitalWrite(L05, HIGH);
- Serial.println(F("GEAR 4"));
- gear = 4;
- break;
- case 5: //
- digitalWrite(SOL1, HIGH);
- outStatus01 = 0;
- digitalWrite(SOL2, HIGH);
- outStatus02 = 0;
- digitalWrite(SOL3, HIGH);
- outStatus03 = 0;
- digitalWrite(SOL4, HIGH);
- outStatus04 = 0;
- delay(delay45);
- digitalWrite(SOL5, LOW);
- outStatus05 = 1;
- digitalWrite(L01, HIGH);
- digitalWrite(L02, HIGH);
- digitalWrite(L03, HIGH);
- digitalWrite(L04, HIGH);
- digitalWrite(L05, LOW);
- Serial.println(F("GEAR 5"));
- gear = 5;
- break;
- }
- }
- if ( (digitalRead(btn08) == HIGH) && (btnhold == 1) ) {
- btnhold = 0;
- btnStatus08 = 0;
- Serial.println(F("BUTTON LOW"));
- }
- timer1 = 0;
- msg.bus = 0;
- msg.flags.extended = 0;
- msg.id = 0x1A0;
- msg.len = 8;
- msg.seq = 1;
- msg.buf[0] = gear;
- msg.buf[1] = outStatus01;
- msg.buf[2] = outStatus02;
- msg.buf[3] = outStatus03;
- msg.buf[4] = outStatus04;
- msg.buf[5] = outStatus05;
- msg.buf[6] = outStatus06;
- Can0.write(msg);
- }
- void canSniff0(const CAN_message_t &msg) { // global callback
- // you'll need to add all your info and variables to this based on receiving a message.
- // if msg.id == 0x123 {
- msg.buf[0] = shiftup
- msg.buf[1] = shiftdown
- }
- // shit like that....
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement