yuki makura / Mbed 2 deprecated 2018_wamv_sw_panel

Dependencies:   mbed mbed-rtos EthernetInterface

main.cpp

Committer:
JadeEtoile
Date:
2018-12-10
Revision:
0:e894a0665114
Child:
1:8485adfbbd18

File content as of revision 0:e894a0665114:

/* 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;

}