Run/kill switch operated power supply.
Dependencies: BridgeDriver MCP23017 TextLCD mbed
main.cpp@0:8c0abf52e7c0, 2015-10-23 (annotated)
- Committer:
- ggudgel
- Date:
- Fri Oct 23 01:18:13 2015 +0000
- Revision:
- 0:8c0abf52e7c0
Kill Switch operated power supply.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ggudgel | 0:8c0abf52e7c0 | 1 | #include "mbed.h" |
ggudgel | 0:8c0abf52e7c0 | 2 | #include "LocalPinNames.h" |
ggudgel | 0:8c0abf52e7c0 | 3 | #include "BridgeDriver.h" |
ggudgel | 0:8c0abf52e7c0 | 4 | #include "TextLCD.h" |
ggudgel | 0:8c0abf52e7c0 | 5 | |
ggudgel | 0:8c0abf52e7c0 | 6 | I2C i2c(P0_10,P0_11); // I2C bus (SDA, SCL) |
ggudgel | 0:8c0abf52e7c0 | 7 | BridgeDriver bridges(&i2c); // bridge |
ggudgel | 0:8c0abf52e7c0 | 8 | TextLCD_I2C lcd(&i2c, MCP23008_SA0, TextLCD::LCD20x4); // LCD |
ggudgel | 0:8c0abf52e7c0 | 9 | DigitalIn killSw(KILL); |
ggudgel | 0:8c0abf52e7c0 | 10 | |
ggudgel | 0:8c0abf52e7c0 | 11 | void setDrives(int NEWSTATE) { |
ggudgel | 0:8c0abf52e7c0 | 12 | lcd.setAddress(0,3); //set cursor to 0,0 |
ggudgel | 0:8c0abf52e7c0 | 13 | if (NEWSTATE) |
ggudgel | 0:8c0abf52e7c0 | 14 | lcd.printf("Power On "); |
ggudgel | 0:8c0abf52e7c0 | 15 | else |
ggudgel | 0:8c0abf52e7c0 | 16 | lcd.printf("Power Off "); |
ggudgel | 0:8c0abf52e7c0 | 17 | bridges.drive(1,NEWSTATE); |
ggudgel | 0:8c0abf52e7c0 | 18 | bridges.drive(2,NEWSTATE); |
ggudgel | 0:8c0abf52e7c0 | 19 | bridges.drive(3,NEWSTATE); |
ggudgel | 0:8c0abf52e7c0 | 20 | bridges.drive(4,NEWSTATE); |
ggudgel | 0:8c0abf52e7c0 | 21 | bridges.drive(5,NEWSTATE); |
ggudgel | 0:8c0abf52e7c0 | 22 | bridges.drive(6,NEWSTATE); |
ggudgel | 0:8c0abf52e7c0 | 23 | bridges.drive(7,NEWSTATE); |
ggudgel | 0:8c0abf52e7c0 | 24 | bridges.drive(8,NEWSTATE); |
ggudgel | 0:8c0abf52e7c0 | 25 | } |
ggudgel | 0:8c0abf52e7c0 | 26 | |
ggudgel | 0:8c0abf52e7c0 | 27 | int main() { |
ggudgel | 0:8c0abf52e7c0 | 28 | killSw.mode(PullUp); |
ggudgel | 0:8c0abf52e7c0 | 29 | i2c.frequency(1000000); |
ggudgel | 0:8c0abf52e7c0 | 30 | lcd.setBacklight(TextLCD::LightOn); |
ggudgel | 0:8c0abf52e7c0 | 31 | lcd.cls(); //clear the display |
ggudgel | 0:8c0abf52e7c0 | 32 | lcd.setAddress(0,0); //set cursor to 0,0 |
ggudgel | 0:8c0abf52e7c0 | 33 | lcd.printf("Simple Power Supply"); |
ggudgel | 0:8c0abf52e7c0 | 34 | lcd.setAddress(0,1); |
ggudgel | 0:8c0abf52e7c0 | 35 | lcd.printf("Operate with run sw."); |
ggudgel | 0:8c0abf52e7c0 | 36 | |
ggudgel | 0:8c0abf52e7c0 | 37 | int currentKillState = killSw; |
ggudgel | 0:8c0abf52e7c0 | 38 | setDrives(!currentKillState); |
ggudgel | 0:8c0abf52e7c0 | 39 | |
ggudgel | 0:8c0abf52e7c0 | 40 | while(1) { |
ggudgel | 0:8c0abf52e7c0 | 41 | if (currentKillState != killSw) { |
ggudgel | 0:8c0abf52e7c0 | 42 | currentKillState = killSw; |
ggudgel | 0:8c0abf52e7c0 | 43 | setDrives(!currentKillState); |
ggudgel | 0:8c0abf52e7c0 | 44 | } |
ggudgel | 0:8c0abf52e7c0 | 45 | wait(0.1); |
ggudgel | 0:8c0abf52e7c0 | 46 | } |
ggudgel | 0:8c0abf52e7c0 | 47 | } |