A program to read steering angle and wheel speed off CAN bus and to perform PID control

Dependencies:   mbed PID

main.cpp

Committer:
samh25
Date:
2022-06-28
Revision:
1:6839bcd71b6a
Parent:
0:190a2fe3cf0f

File content as of revision 1:6839bcd71b6a:

// TBReAI AI-MBED
// WRITTEN BY SEB HALL ON 29/06/2022

#include "mbed.h"

const PinName writePin = p29;
const PinName readPin = p30;
const int busFrequency = 500000;
const unsigned steeringMessageID = 0x100;

Serial pc(USBTX, USBRX);
DigitalOut led1(LED1);
DigitalOut led2(LED2);
union {
    double formattedData;
    char rawData[8]; 
} CANFormatted;

CAN CANBus(readPin, writePin, busFrequency);

void readCANMessage() {
    
    led2 = 1;
    
    CANMessage message;
    CANBus.read(message);
    
    for (int i = 0; i < 8; i++) {
        CANFormatted.rawData[i] = message.data[i];    
    }
    
    led2 = 0;
    
}

void sendCANMessage(double data, unsigned id) {
    
    CANMessage message;
    
    CANFormatted.formattedData = data;
    
    for (int i = 0; i < 8; i++) {
        message.data[i] = CANFormatted.rawData[i];
    }
    
    message.id = id;
    
    CANBus.write(message);
    
}

int main() {
    
    pc.printf("STARTED\n");
    
    led1 = !led1;
    
    CANBus.attach(callback(readCANMessage));
    
}