Run/kill switch operated power supply.

Dependencies:   BridgeDriver MCP23017 TextLCD mbed

main.cpp

Committer:
ggudgel
Date:
2015-10-23
Revision:
0:8c0abf52e7c0

File content as of revision 0:8c0abf52e7c0:

#include "mbed.h"
#include "LocalPinNames.h"
#include "BridgeDriver.h"
#include "TextLCD.h"

I2C i2c(P0_10,P0_11);       // I2C bus (SDA, SCL)
BridgeDriver bridges(&i2c); // bridge
TextLCD_I2C lcd(&i2c, MCP23008_SA0, TextLCD::LCD20x4); // LCD
DigitalIn killSw(KILL);

void setDrives(int NEWSTATE) {
    lcd.setAddress(0,3); //set cursor to 0,0
    if (NEWSTATE)
        lcd.printf("Power On   ");
    else
        lcd.printf("Power Off  ");
    bridges.drive(1,NEWSTATE);
    bridges.drive(2,NEWSTATE);
    bridges.drive(3,NEWSTATE);
    bridges.drive(4,NEWSTATE);
    bridges.drive(5,NEWSTATE);
    bridges.drive(6,NEWSTATE);
    bridges.drive(7,NEWSTATE);
    bridges.drive(8,NEWSTATE);
}

int main() {
    killSw.mode(PullUp);
    i2c.frequency(1000000);
    lcd.setBacklight(TextLCD::LightOn);
    lcd.cls(); //clear the display
    lcd.setAddress(0,0); //set cursor to 0,0
    lcd.printf("Simple Power Supply");
    lcd.setAddress(0,1);
    lcd.printf("Operate with run sw.");
    
    int currentKillState = killSw;
    setDrives(!currentKillState);
    
    while(1) {
        if (currentKillState != killSw) {
            currentKillState = killSw;
            setDrives(!currentKillState);
        }
        wait(0.1);
    }
}