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
main.cpp@0:e894a0665114, 2018-12-10 (annotated)
- Committer:
- JadeEtoile
- Date:
- Mon Dec 10 19:41:42 2018 +0000
- Revision:
- 0:e894a0665114
- Child:
- 1:8485adfbbd18
test upload
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JadeEtoile | 0:e894a0665114 | 1 | /* mbed Microcontroller Library |
JadeEtoile | 0:e894a0665114 | 2 | * Copyright (c) 2018 ARM Limited |
JadeEtoile | 0:e894a0665114 | 3 | * SPDX-License-Identifier: Apache-2.0 |
JadeEtoile | 0:e894a0665114 | 4 | */ |
JadeEtoile | 0:e894a0665114 | 5 | |
JadeEtoile | 0:e894a0665114 | 6 | #include "mbed.h" |
JadeEtoile | 0:e894a0665114 | 7 | |
JadeEtoile | 0:e894a0665114 | 8 | #define ON (1) |
JadeEtoile | 0:e894a0665114 | 9 | #define OFF (0) |
JadeEtoile | 0:e894a0665114 | 10 | |
JadeEtoile | 0:e894a0665114 | 11 | #define COLOR_RED (0b100) |
JadeEtoile | 0:e894a0665114 | 12 | #define COLOR_YELLOW (0b110) |
JadeEtoile | 0:e894a0665114 | 13 | #define COLOR_GREEN (0b010) |
JadeEtoile | 0:e894a0665114 | 14 | #define COLOR_BLUE (0b001) |
JadeEtoile | 0:e894a0665114 | 15 | #define COLOR_CYAN (0b011) |
JadeEtoile | 0:e894a0665114 | 16 | #define COLOR_MAZENTA (0b101) |
JadeEtoile | 0:e894a0665114 | 17 | #define COLOR_WHITE (0b111) |
JadeEtoile | 0:e894a0665114 | 18 | #define COLOR_BLACK (0b000) |
JadeEtoile | 0:e894a0665114 | 19 | |
JadeEtoile | 0:e894a0665114 | 20 | DigitalOut led_ctrl_5v(p8); |
JadeEtoile | 0:e894a0665114 | 21 | DigitalOut led_ctrl_12v(p9); |
JadeEtoile | 0:e894a0665114 | 22 | DigitalOut led_ctrl_24v(p10); |
JadeEtoile | 0:e894a0665114 | 23 | DigitalOut led_ctrl_main(p6); |
JadeEtoile | 0:e894a0665114 | 24 | DigitalOut led_motor_main_fuse(p5); |
JadeEtoile | 0:e894a0665114 | 25 | DigitalOut led_motor_12v_fuse(p7); |
JadeEtoile | 0:e894a0665114 | 26 | DigitalOut led_motor_main(p11); |
JadeEtoile | 0:e894a0665114 | 27 | DigitalOut led_motor_12v(p17); |
JadeEtoile | 0:e894a0665114 | 28 | |
JadeEtoile | 0:e894a0665114 | 29 | DigitalIn relay_ctrl_main(p14, PullNone); |
JadeEtoile | 0:e894a0665114 | 30 | DigitalIn relay_motor_main(p12, PullNone); |
JadeEtoile | 0:e894a0665114 | 31 | DigitalIn relay_motor_12v(p13, PullNone); |
JadeEtoile | 0:e894a0665114 | 32 | |
JadeEtoile | 0:e894a0665114 | 33 | AnalogIn ad_ctrl_main(p20); |
JadeEtoile | 0:e894a0665114 | 34 | |
JadeEtoile | 0:e894a0665114 | 35 | Serial pc(USBTX, USBRX, 9600); |
JadeEtoile | 0:e894a0665114 | 36 | |
JadeEtoile | 0:e894a0665114 | 37 | I2C i2c_master(p28, p27); |
JadeEtoile | 0:e894a0665114 | 38 | const char master_addr = 0x70; |
JadeEtoile | 0:e894a0665114 | 39 | |
JadeEtoile | 0:e894a0665114 | 40 | /*CAN*/ |
JadeEtoile | 0:e894a0665114 | 41 | CAN can_master(p30, p29); |
JadeEtoile | 0:e894a0665114 | 42 | |
JadeEtoile | 0:e894a0665114 | 43 | void LedCheck(void); |
JadeEtoile | 0:e894a0665114 | 44 | |
JadeEtoile | 0:e894a0665114 | 45 | // main() runs in its own thread in the OS |
JadeEtoile | 0:e894a0665114 | 46 | int main() |
JadeEtoile | 0:e894a0665114 | 47 | { |
JadeEtoile | 0:e894a0665114 | 48 | float voltage_ctrl_main = 0.0; |
JadeEtoile | 0:e894a0665114 | 49 | char command; |
JadeEtoile | 0:e894a0665114 | 50 | char address; |
JadeEtoile | 0:e894a0665114 | 51 | char data[8]; |
JadeEtoile | 0:e894a0665114 | 52 | char can_data[2]; |
JadeEtoile | 0:e894a0665114 | 53 | led_ctrl_5v = OFF; |
JadeEtoile | 0:e894a0665114 | 54 | led_ctrl_12v = OFF; |
JadeEtoile | 0:e894a0665114 | 55 | led_ctrl_24v = OFF; |
JadeEtoile | 0:e894a0665114 | 56 | led_ctrl_main = OFF; |
JadeEtoile | 0:e894a0665114 | 57 | led_motor_main_fuse = OFF; |
JadeEtoile | 0:e894a0665114 | 58 | led_motor_12v_fuse = OFF; |
JadeEtoile | 0:e894a0665114 | 59 | led_motor_main = OFF; |
JadeEtoile | 0:e894a0665114 | 60 | led_motor_12v = OFF; |
JadeEtoile | 0:e894a0665114 | 61 | |
JadeEtoile | 0:e894a0665114 | 62 | LedCheck(); |
JadeEtoile | 0:e894a0665114 | 63 | |
JadeEtoile | 0:e894a0665114 | 64 | while (true) { |
JadeEtoile | 0:e894a0665114 | 65 | /*address = 0b1001000; |
JadeEtoile | 0:e894a0665114 | 66 | command = 0b10000011; |
JadeEtoile | 0:e894a0665114 | 67 | i2c_master.write(address, &command, 1, true); |
JadeEtoile | 0:e894a0665114 | 68 | wait_us(300); |
JadeEtoile | 0:e894a0665114 | 69 | i2c_master.read(address, &data[0], 1, true); |
JadeEtoile | 0:e894a0665114 | 70 | |
JadeEtoile | 0:e894a0665114 | 71 | command = 0b10010011; |
JadeEtoile | 0:e894a0665114 | 72 | i2c_master.write(address, &command, 1); |
JadeEtoile | 0:e894a0665114 | 73 | wait_us(300); |
JadeEtoile | 0:e894a0665114 | 74 | i2c_master.read(address, &data[1], 1, true); |
JadeEtoile | 0:e894a0665114 | 75 | |
JadeEtoile | 0:e894a0665114 | 76 | command = 0b10100011; |
JadeEtoile | 0:e894a0665114 | 77 | i2c_master.write(address, &command, 1); |
JadeEtoile | 0:e894a0665114 | 78 | wait_us(300); |
JadeEtoile | 0:e894a0665114 | 79 | i2c_master.read(address, &data[2], 1, true); |
JadeEtoile | 0:e894a0665114 | 80 | |
JadeEtoile | 0:e894a0665114 | 81 | command = 0b10110011; |
JadeEtoile | 0:e894a0665114 | 82 | i2c_master.write(address, &command, 1); |
JadeEtoile | 0:e894a0665114 | 83 | wait_us(300); |
JadeEtoile | 0:e894a0665114 | 84 | i2c_master.read(address, &data[3], 1, true); |
JadeEtoile | 0:e894a0665114 | 85 | |
JadeEtoile | 0:e894a0665114 | 86 | voltage_ctrl_main = (ad_ctrl_main.read() * 104.0 * 3.3 / 13.0);*/ |
JadeEtoile | 0:e894a0665114 | 87 | led_ctrl_main = relay_ctrl_main; |
JadeEtoile | 0:e894a0665114 | 88 | led_motor_main_fuse = relay_motor_main; |
JadeEtoile | 0:e894a0665114 | 89 | led_motor_main = relay_motor_main; |
JadeEtoile | 0:e894a0665114 | 90 | led_motor_12v_fuse = relay_motor_12v; |
JadeEtoile | 0:e894a0665114 | 91 | //printf("%04x\t%04x\t%04x\t%04x\t", data[0], data[1], data[2], data[3]); |
JadeEtoile | 0:e894a0665114 | 92 | //printf("%f(v)\n", voltage_ctrl_main); |
JadeEtoile | 0:e894a0665114 | 93 | |
JadeEtoile | 0:e894a0665114 | 94 | if(ON == relay_motor_main) |
JadeEtoile | 0:e894a0665114 | 95 | { |
JadeEtoile | 0:e894a0665114 | 96 | can_data[0] = COLOR_YELLOW; |
JadeEtoile | 0:e894a0665114 | 97 | can_data[1] = 0x10; |
JadeEtoile | 0:e894a0665114 | 98 | } |
JadeEtoile | 0:e894a0665114 | 99 | else |
JadeEtoile | 0:e894a0665114 | 100 | { |
JadeEtoile | 0:e894a0665114 | 101 | can_data[0] = COLOR_RED; |
JadeEtoile | 0:e894a0665114 | 102 | can_data[1] = 0x10; |
JadeEtoile | 0:e894a0665114 | 103 | } |
JadeEtoile | 0:e894a0665114 | 104 | CANMessage msg(0x1852, can_data, sizeof(can_data), CANData, CANStandard); |
JadeEtoile | 0:e894a0665114 | 105 | can_master.write(msg); |
JadeEtoile | 0:e894a0665114 | 106 | } |
JadeEtoile | 0:e894a0665114 | 107 | } |
JadeEtoile | 0:e894a0665114 | 108 | |
JadeEtoile | 0:e894a0665114 | 109 | void LedCheck(void) |
JadeEtoile | 0:e894a0665114 | 110 | { |
JadeEtoile | 0:e894a0665114 | 111 | led_ctrl_5v = ON; |
JadeEtoile | 0:e894a0665114 | 112 | wait(0.05f); |
JadeEtoile | 0:e894a0665114 | 113 | led_ctrl_5v = OFF; |
JadeEtoile | 0:e894a0665114 | 114 | |
JadeEtoile | 0:e894a0665114 | 115 | led_ctrl_12v = ON; |
JadeEtoile | 0:e894a0665114 | 116 | wait(0.05f); |
JadeEtoile | 0:e894a0665114 | 117 | led_ctrl_12v = OFF; |
JadeEtoile | 0:e894a0665114 | 118 | |
JadeEtoile | 0:e894a0665114 | 119 | led_ctrl_24v = ON; |
JadeEtoile | 0:e894a0665114 | 120 | wait(0.05f); |
JadeEtoile | 0:e894a0665114 | 121 | led_ctrl_24v = OFF; |
JadeEtoile | 0:e894a0665114 | 122 | |
JadeEtoile | 0:e894a0665114 | 123 | led_ctrl_main = ON; |
JadeEtoile | 0:e894a0665114 | 124 | wait(0.05f); |
JadeEtoile | 0:e894a0665114 | 125 | led_ctrl_main = OFF; |
JadeEtoile | 0:e894a0665114 | 126 | |
JadeEtoile | 0:e894a0665114 | 127 | led_motor_main_fuse = ON; |
JadeEtoile | 0:e894a0665114 | 128 | wait(0.05f); |
JadeEtoile | 0:e894a0665114 | 129 | led_motor_main_fuse = OFF; |
JadeEtoile | 0:e894a0665114 | 130 | |
JadeEtoile | 0:e894a0665114 | 131 | led_motor_12v_fuse = ON; |
JadeEtoile | 0:e894a0665114 | 132 | wait(0.05f); |
JadeEtoile | 0:e894a0665114 | 133 | led_motor_12v_fuse = OFF; |
JadeEtoile | 0:e894a0665114 | 134 | |
JadeEtoile | 0:e894a0665114 | 135 | led_motor_main = ON; |
JadeEtoile | 0:e894a0665114 | 136 | wait(0.05f); |
JadeEtoile | 0:e894a0665114 | 137 | led_motor_main = OFF; |
JadeEtoile | 0:e894a0665114 | 138 | |
JadeEtoile | 0:e894a0665114 | 139 | led_motor_12v = ON; |
JadeEtoile | 0:e894a0665114 | 140 | wait(0.05f); |
JadeEtoile | 0:e894a0665114 | 141 | led_motor_12v = OFF; |
JadeEtoile | 0:e894a0665114 | 142 | |
JadeEtoile | 0:e894a0665114 | 143 | led_ctrl_5v = ON; |
JadeEtoile | 0:e894a0665114 | 144 | led_ctrl_12v = ON; |
JadeEtoile | 0:e894a0665114 | 145 | led_ctrl_24v = ON; |
JadeEtoile | 0:e894a0665114 | 146 | led_ctrl_main = ON; |
JadeEtoile | 0:e894a0665114 | 147 | led_motor_main_fuse = ON; |
JadeEtoile | 0:e894a0665114 | 148 | led_motor_12v_fuse = ON; |
JadeEtoile | 0:e894a0665114 | 149 | led_motor_main = ON; |
JadeEtoile | 0:e894a0665114 | 150 | led_motor_12v = ON; |
JadeEtoile | 0:e894a0665114 | 151 | wait(0.2f); |
JadeEtoile | 0:e894a0665114 | 152 | |
JadeEtoile | 0:e894a0665114 | 153 | led_ctrl_12v = OFF; |
JadeEtoile | 0:e894a0665114 | 154 | led_ctrl_5v = OFF; |
JadeEtoile | 0:e894a0665114 | 155 | led_ctrl_24v = OFF; |
JadeEtoile | 0:e894a0665114 | 156 | led_ctrl_main = OFF; |
JadeEtoile | 0:e894a0665114 | 157 | led_motor_main_fuse = OFF; |
JadeEtoile | 0:e894a0665114 | 158 | led_motor_12v_fuse = OFF; |
JadeEtoile | 0:e894a0665114 | 159 | led_motor_main = OFF; |
JadeEtoile | 0:e894a0665114 | 160 | led_motor_12v = OFF; |
JadeEtoile | 0:e894a0665114 | 161 | |
JadeEtoile | 0:e894a0665114 | 162 | } |