4180 lab 1

Dependencies:   mbed MCP23S17 PinDetect USBDevice

Committer:
emilywilson
Date:
Tue Jan 21 21:06:20 2020 +0000
Revision:
11:2cfdab516b21
Parent:
10:0886afdfb170
Child:
12:cc5bda248946
power management extra credit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilywilson 0:c1654e25cc43 1 #include "mbed.h"
emilywilson 0:c1654e25cc43 2 #include "RGBLed.h"
emilywilson 0:c1654e25cc43 3 #include "PinDetect.h"
emilywilson 7:b7720a8623b5 4 //#include "part4.h"
emilywilson 7:b7720a8623b5 5 //#include "part6.h"
emilywilson 10:0886afdfb170 6 //#include "part7.h"
emilywilson 7:b7720a8623b5 7 //#include "part8.h"
emilywilson 7:b7720a8623b5 8 //#include "part9.h"
emilywilson 11:2cfdab516b21 9 //#include "watchdog_ec.h"
emilywilson 11:2cfdab516b21 10 #include "powermanagement_ec.h"
emilywilson 0:c1654e25cc43 11
emilywilson 7:b7720a8623b5 12 //DigitalOut myled(p26);
emilywilson 7:b7720a8623b5 13 //PwmOut builtinLED(LED1);
emilywilson 7:b7720a8623b5 14 //DigitalIn pb(p22);
emilywilson 1:f121b88d9c85 15 //DigitalIn pb2(p21);
emilywilson 0:c1654e25cc43 16
emilywilson 5:d1ad3a964858 17 // p20 is most significant bit
emilywilson 7:b7720a8623b5 18 //PinDetect redSelect(p18);
emilywilson 7:b7720a8623b5 19 //PinDetect blueSelect(p19);
emilywilson 7:b7720a8623b5 20 //PinDetect greenSelect(p20);
emilywilson 7:b7720a8623b5 21 //
emilywilson 7:b7720a8623b5 22 //PinName redPin = p24;
emilywilson 7:b7720a8623b5 23 //PinName greenPin = p25;
emilywilson 7:b7720a8623b5 24 //PinName bluePin = p23;
emilywilson 7:b7720a8623b5 25 //
emilywilson 7:b7720a8623b5 26 //PinDetect pb1(p21);
emilywilson 7:b7720a8623b5 27 //PinDetect pb2(p22);
emilywilson 0:c1654e25cc43 28
emilywilson 2:7570a8526148 29 float volatile p = 1.0f;
emilywilson 0:c1654e25cc43 30
emilywilson 0:c1654e25cc43 31 void pb1_hit_callback() {
emilywilson 0:c1654e25cc43 32 if (p > 0) {
emilywilson 7:b7720a8623b5 33 p -= 0.1f;
emilywilson 0:c1654e25cc43 34 }
emilywilson 0:c1654e25cc43 35 }
emilywilson 0:c1654e25cc43 36
emilywilson 0:c1654e25cc43 37 void pb2_hit_callback() {
emilywilson 5:d1ad3a964858 38 if (p < 1) {
emilywilson 7:b7720a8623b5 39 p += 0.1f;
emilywilson 0:c1654e25cc43 40 }
emilywilson 0:c1654e25cc43 41 }
emilywilson 0:c1654e25cc43 42
emilywilson 7:b7720a8623b5 43 //RGBLed myRGBLed = RGBLed(redPin, greenPin, bluePin);
emilywilson 6:e346d2a3010f 44
emilywilson 0:c1654e25cc43 45 int main() {
emilywilson 4:6a7029bf4e1c 46
emilywilson 7:b7720a8623b5 47 // pb1.mode(PullUp);
emilywilson 7:b7720a8623b5 48 // pb2.mode(PullUp);
emilywilson 7:b7720a8623b5 49 // redSelect.mode(PullUp);
emilywilson 7:b7720a8623b5 50 // greenSelect.mode(PullUp);
emilywilson 7:b7720a8623b5 51 // blueSelect.mode(PullUp);
emilywilson 7:b7720a8623b5 52 // wait(0.1);
emilywilson 7:b7720a8623b5 53 //
emilywilson 7:b7720a8623b5 54 // pb1.attach_asserted(&pb1_hit_callback);
emilywilson 7:b7720a8623b5 55 // pb2.attach_asserted(&pb2_hit_callback);
emilywilson 7:b7720a8623b5 56 // pb1.setSampleFrequency();
emilywilson 7:b7720a8623b5 57 // pb2.setSampleFrequency();
emilywilson 7:b7720a8623b5 58 //
emilywilson 7:b7720a8623b5 59 // float redVal = 0.0f;
emilywilson 7:b7720a8623b5 60 // float greenVal = 0.0f;
emilywilson 7:b7720a8623b5 61 // float blueVal = 0.0f;
emilywilson 6:e346d2a3010f 62
emilywilson 0:c1654e25cc43 63 while(1) {
emilywilson 0:c1654e25cc43 64 // Part 1
emilywilson 1:f121b88d9c85 65 // myled = !pb;
emilywilson 0:c1654e25cc43 66
emilywilson 0:c1654e25cc43 67 // Part 2
emilywilson 4:6a7029bf4e1c 68 // builtinLED = p;
emilywilson 4:6a7029bf4e1c 69 // wait(0.5);
emilywilson 0:c1654e25cc43 70
emilywilson 0:c1654e25cc43 71 // Part 3
emilywilson 7:b7720a8623b5 72 // if (!redSelect) {
emilywilson 7:b7720a8623b5 73 // redVal = 1.0f * p;
emilywilson 7:b7720a8623b5 74 // } else {
emilywilson 7:b7720a8623b5 75 // redVal = 0.0f;
emilywilson 7:b7720a8623b5 76 // }
emilywilson 7:b7720a8623b5 77 // if (!greenSelect) {
emilywilson 7:b7720a8623b5 78 // greenVal = 1.0f * p;
emilywilson 7:b7720a8623b5 79 // } else {
emilywilson 7:b7720a8623b5 80 // greenVal = 0.0f;
emilywilson 7:b7720a8623b5 81 // }
emilywilson 7:b7720a8623b5 82 // if (!blueSelect) {
emilywilson 7:b7720a8623b5 83 // blueVal = 1.0f * p;
emilywilson 7:b7720a8623b5 84 // } else {
emilywilson 7:b7720a8623b5 85 // blueVal = 0.0f;
emilywilson 7:b7720a8623b5 86 // }
emilywilson 7:b7720a8623b5 87 // myRGBLed.write(redVal, greenVal, blueVal);
emilywilson 7:b7720a8623b5 88 // wait(0.5);
emilywilson 4:6a7029bf4e1c 89
emilywilson 7:b7720a8623b5 90 // Part 4
emilywilson 7:b7720a8623b5 91 // run_part4();
emilywilson 7:b7720a8623b5 92
emilywilson 7:b7720a8623b5 93 // Part 5 in separate project
emilywilson 7:b7720a8623b5 94
emilywilson 7:b7720a8623b5 95 // Part 6 in separate project
emilywilson 5:d1ad3a964858 96
emilywilson 7:b7720a8623b5 97 // Part 7
emilywilson 11:2cfdab516b21 98 // run_part7();
emilywilson 7:b7720a8623b5 99
emilywilson 7:b7720a8623b5 100 // Part 8
emilywilson 7:b7720a8623b5 101 // run_part8();
emilywilson 0:c1654e25cc43 102
emilywilson 7:b7720a8623b5 103 // Part 9
emilywilson 7:b7720a8623b5 104 // run_part9();
emilywilson 7:b7720a8623b5 105
emilywilson 7:b7720a8623b5 106 // Part 10 in separate project
emilywilson 7:b7720a8623b5 107
emilywilson 7:b7720a8623b5 108 // Watchdog Extra Credit
emilywilson 11:2cfdab516b21 109 // run_watchdogEC();
emilywilson 11:2cfdab516b21 110
emilywilson 11:2cfdab516b21 111 run_powermanagementEC();
emilywilson 7:b7720a8623b5 112
emilywilson 1:f121b88d9c85 113 }
emilywilson 0:c1654e25cc43 114 }