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.
Dependencies: mbed mbed-rtos EthernetInterface
Diff: main.cpp
- Revision:
- 0:e894a0665114
- Child:
- 1:8485adfbbd18
diff -r 000000000000 -r e894a0665114 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Dec 10 19:41:42 2018 +0000 @@ -0,0 +1,162 @@ +/* mbed Microcontroller Library + * Copyright (c) 2018 ARM Limited + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "mbed.h" + +#define ON (1) +#define OFF (0) + +#define COLOR_RED (0b100) +#define COLOR_YELLOW (0b110) +#define COLOR_GREEN (0b010) +#define COLOR_BLUE (0b001) +#define COLOR_CYAN (0b011) +#define COLOR_MAZENTA (0b101) +#define COLOR_WHITE (0b111) +#define COLOR_BLACK (0b000) + +DigitalOut led_ctrl_5v(p8); +DigitalOut led_ctrl_12v(p9); +DigitalOut led_ctrl_24v(p10); +DigitalOut led_ctrl_main(p6); +DigitalOut led_motor_main_fuse(p5); +DigitalOut led_motor_12v_fuse(p7); +DigitalOut led_motor_main(p11); +DigitalOut led_motor_12v(p17); + +DigitalIn relay_ctrl_main(p14, PullNone); +DigitalIn relay_motor_main(p12, PullNone); +DigitalIn relay_motor_12v(p13, PullNone); + +AnalogIn ad_ctrl_main(p20); + +Serial pc(USBTX, USBRX, 9600); + +I2C i2c_master(p28, p27); +const char master_addr = 0x70; + +/*CAN*/ +CAN can_master(p30, p29); + +void LedCheck(void); + +// main() runs in its own thread in the OS +int main() +{ + float voltage_ctrl_main = 0.0; + char command; + char address; + char data[8]; + char can_data[2]; + led_ctrl_5v = OFF; + led_ctrl_12v = OFF; + led_ctrl_24v = OFF; + led_ctrl_main = OFF; + led_motor_main_fuse = OFF; + led_motor_12v_fuse = OFF; + led_motor_main = OFF; + led_motor_12v = OFF; + + LedCheck(); + + while (true) { + /*address = 0b1001000; + command = 0b10000011; + i2c_master.write(address, &command, 1, true); + wait_us(300); + i2c_master.read(address, &data[0], 1, true); + + command = 0b10010011; + i2c_master.write(address, &command, 1); + wait_us(300); + i2c_master.read(address, &data[1], 1, true); + + command = 0b10100011; + i2c_master.write(address, &command, 1); + wait_us(300); + i2c_master.read(address, &data[2], 1, true); + + command = 0b10110011; + i2c_master.write(address, &command, 1); + wait_us(300); + i2c_master.read(address, &data[3], 1, true); + + voltage_ctrl_main = (ad_ctrl_main.read() * 104.0 * 3.3 / 13.0);*/ + led_ctrl_main = relay_ctrl_main; + led_motor_main_fuse = relay_motor_main; + led_motor_main = relay_motor_main; + led_motor_12v_fuse = relay_motor_12v; + //printf("%04x\t%04x\t%04x\t%04x\t", data[0], data[1], data[2], data[3]); + //printf("%f(v)\n", voltage_ctrl_main); + + if(ON == relay_motor_main) + { + can_data[0] = COLOR_YELLOW; + can_data[1] = 0x10; + } + else + { + can_data[0] = COLOR_RED; + can_data[1] = 0x10; + } + CANMessage msg(0x1852, can_data, sizeof(can_data), CANData, CANStandard); + can_master.write(msg); + } +} + +void LedCheck(void) +{ + led_ctrl_5v = ON; + wait(0.05f); + led_ctrl_5v = OFF; + + led_ctrl_12v = ON; + wait(0.05f); + led_ctrl_12v = OFF; + + led_ctrl_24v = ON; + wait(0.05f); + led_ctrl_24v = OFF; + + led_ctrl_main = ON; + wait(0.05f); + led_ctrl_main = OFF; + + led_motor_main_fuse = ON; + wait(0.05f); + led_motor_main_fuse = OFF; + + led_motor_12v_fuse = ON; + wait(0.05f); + led_motor_12v_fuse = OFF; + + led_motor_main = ON; + wait(0.05f); + led_motor_main = OFF; + + led_motor_12v = ON; + wait(0.05f); + led_motor_12v = OFF; + + led_ctrl_5v = ON; + led_ctrl_12v = ON; + led_ctrl_24v = ON; + led_ctrl_main = ON; + led_motor_main_fuse = ON; + led_motor_12v_fuse = ON; + led_motor_main = ON; + led_motor_12v = ON; + wait(0.2f); + + led_ctrl_12v = OFF; + led_ctrl_5v = OFF; + led_ctrl_24v = OFF; + led_ctrl_main = OFF; + led_motor_main_fuse = OFF; + led_motor_12v_fuse = OFF; + led_motor_main = OFF; + led_motor_12v = OFF; + +} \ No newline at end of file