Run/kill switch operated power supply.
Dependencies: BridgeDriver MCP23017 TextLCD mbed
Diff: main.cpp
- Revision:
- 0:8c0abf52e7c0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Oct 23 01:18:13 2015 +0000 @@ -0,0 +1,47 @@ +#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); + } +}