Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
- Committer:
- thomasya
- Date:
- 2019-07-11
- Revision:
- 5:1d817b3c42f1
- Parent:
- 4:c1438ffd88dd
- Child:
- 6:572219c7c378
File content as of revision 5:1d817b3c42f1:
#include "mbed.h"
#include "TextLCD.h"
#define VMAX 0.36f
#define VMIN 0.05f
Serial pc(USBTX, USBRX, 115200);
Ticker ticker1;
CAN can1(PB_8, PB_9);
CANMessage can_msg_1;
CANMessage can_msg_send;
char data_msg[3] = {0x11,0x22,0x33};
DigitalIn armSwitch(PF_7, PullDown);
bool armed = false;
AnalogIn res(PA_0);
float volt = 0;
//I2C i2c_lcd(PB_7,PB_6); // SDA, SCL
I2C i2c_lcd(PF_0,PF_1); // SDA, SCL
TextLCD_I2C lcd(&i2c_lcd, 0x7E, TextLCD::LCD16x2); // I2C bus, PCF8574 Slaveaddress, LCD Type
const char fill[] = {0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00};
const char empty[] = {0x1F, 0x11, 0x11, 0x11, 0x11, 0x11, 0x1F, 0x00};
const char cross[] = {0x00, 0x11, 0x0A, 0x04, 0x0A, 0x11, 0x00, 0x00};
void showBar(void);
void showArm(void);
void CAN_RX1(void);
void sendCMD(void)
{
if(armed)
{
can_msg_send = CANMessage(0x111,data_msg,3,CANData,CANStandard);
can1.write(can_msg_send);
}
//printf("res: %f\n", res.read());
}
int main()
{
can1.frequency(500000);
can1.attach(&CAN_RX1, CAN::RxIrq);
ticker1.attach(&sendCMD, 1);
pc.printf("start\n");
lcd.setCursor(TextLCD::CurOff_BlkOff);
lcd.setBacklight(TextLCD::LightOn);
lcd.setUDC(0, (char *) fill);
lcd.setUDC(1, (char *) empty);
lcd.setUDC(2, (char *) cross);
pc.printf("set done\n\r");
while(1)
{
volt = res.read();
showBar();
showArm();
}
}
void CAN_RX1(void)
{
if(can1.read(can_msg_1))
{
pc.printf("CAN RX %d\n", can_msg_1.id);
}
}
void showBar(void)
{
int bars = 16 * (volt-VMIN)/(VMAX-VMIN);
if (bars > 16)
bars = 16;
else if( bars < 0 )
bars = 0;
if (armed)
{
for(int i = 0; i<bars ;i++)
{
lcd.locate(i,0);
lcd.putc(0);
}
for(int i = bars; i<16 ;i++)
{
lcd.locate(i,0);
lcd.putc(1);
}
}
else
{
for(int i = 0; i<bars ;i++)
{
lcd.locate(i,0);
lcd.putc(2);
}
for(int i = bars; i<16 ;i++)
{
lcd.locate(i,0);
lcd.putc(1);
}
}
}
void showArm(void)
{
if (armSwitch)
armed = true;
else
armed = false;
if (armed)
{
lcd.locate(0,1);
lcd.printf("ARMED ");
}
else
{
lcd.locate(0,1);
lcd.printf("DISARMED");
}
}