4180 lab 1
Dependencies: mbed MCP23S17 PinDetect USBDevice
main.cpp@6:e346d2a3010f, 2020-01-15 (annotated)
- Committer:
- emilywilson
- Date:
- Wed Jan 15 20:06:00 2020 +0000
- Revision:
- 6:e346d2a3010f
- Parent:
- 5:d1ad3a964858
- Child:
- 7:b7720a8623b5
part 4
Who changed what in which revision?
User | Revision | Line number | New 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 | 6:e346d2a3010f | 4 | #include "part4.h" |
emilywilson | 0:c1654e25cc43 | 5 | |
emilywilson | 0:c1654e25cc43 | 6 | DigitalOut myled(p26); |
emilywilson | 4:6a7029bf4e1c | 7 | PwmOut builtinLED(LED1); |
emilywilson | 0:c1654e25cc43 | 8 | DigitalIn pb(p22); |
emilywilson | 1:f121b88d9c85 | 9 | //DigitalIn pb2(p21); |
emilywilson | 0:c1654e25cc43 | 10 | |
emilywilson | 5:d1ad3a964858 | 11 | // p20 is most significant bit |
emilywilson | 6:e346d2a3010f | 12 | PinDetect redSelect(p18); |
emilywilson | 6:e346d2a3010f | 13 | PinDetect blueSelect(p18); |
emilywilson | 6:e346d2a3010f | 14 | PinDetect greenSelect(p20); |
emilywilson | 4:6a7029bf4e1c | 15 | |
emilywilson | 4:6a7029bf4e1c | 16 | PinName redPin = p24; |
emilywilson | 4:6a7029bf4e1c | 17 | PinName greenPin = p25; |
emilywilson | 4:6a7029bf4e1c | 18 | PinName bluePin = p23; |
emilywilson | 4:6a7029bf4e1c | 19 | |
emilywilson | 2:7570a8526148 | 20 | PinDetect pb1(p21); |
emilywilson | 2:7570a8526148 | 21 | PinDetect pb2(p22); |
emilywilson | 0:c1654e25cc43 | 22 | |
emilywilson | 2:7570a8526148 | 23 | float volatile p = 1.0f; |
emilywilson | 0:c1654e25cc43 | 24 | |
emilywilson | 0:c1654e25cc43 | 25 | void pb1_hit_callback() { |
emilywilson | 0:c1654e25cc43 | 26 | if (p > 0) { |
emilywilson | 0:c1654e25cc43 | 27 | p -= 0.1; |
emilywilson | 0:c1654e25cc43 | 28 | } |
emilywilson | 0:c1654e25cc43 | 29 | } |
emilywilson | 0:c1654e25cc43 | 30 | |
emilywilson | 0:c1654e25cc43 | 31 | void pb2_hit_callback() { |
emilywilson | 5:d1ad3a964858 | 32 | if (p < 1) { |
emilywilson | 0:c1654e25cc43 | 33 | p += 0.1; |
emilywilson | 0:c1654e25cc43 | 34 | } |
emilywilson | 0:c1654e25cc43 | 35 | } |
emilywilson | 0:c1654e25cc43 | 36 | |
emilywilson | 6:e346d2a3010f | 37 | RGBLed myRGBLed = RGBLed(redPin, greenPin, bluePin); |
emilywilson | 6:e346d2a3010f | 38 | |
emilywilson | 0:c1654e25cc43 | 39 | int main() { |
emilywilson | 4:6a7029bf4e1c | 40 | |
emilywilson | 4:6a7029bf4e1c | 41 | pb1.mode(PullUp); |
emilywilson | 4:6a7029bf4e1c | 42 | pb2.mode(PullUp); |
emilywilson | 6:e346d2a3010f | 43 | redSelect.mode(PullUp); |
emilywilson | 6:e346d2a3010f | 44 | greenSelect.mode(PullUp); |
emilywilson | 6:e346d2a3010f | 45 | blueSelect.mode(PullUp); |
emilywilson | 4:6a7029bf4e1c | 46 | wait(0.1); |
emilywilson | 4:6a7029bf4e1c | 47 | |
emilywilson | 4:6a7029bf4e1c | 48 | pb1.attach_asserted(&pb1_hit_callback); |
emilywilson | 4:6a7029bf4e1c | 49 | pb2.attach_asserted(&pb2_hit_callback); |
emilywilson | 4:6a7029bf4e1c | 50 | pb1.setSampleFrequency(); |
emilywilson | 4:6a7029bf4e1c | 51 | pb2.setSampleFrequency(); |
emilywilson | 4:6a7029bf4e1c | 52 | |
emilywilson | 6:e346d2a3010f | 53 | float redVal = 0.0f; |
emilywilson | 6:e346d2a3010f | 54 | float greenVal = 0.0f; |
emilywilson | 6:e346d2a3010f | 55 | float blueVal = 0.0f; |
emilywilson | 6:e346d2a3010f | 56 | |
emilywilson | 0:c1654e25cc43 | 57 | while(1) { |
emilywilson | 0:c1654e25cc43 | 58 | // Part 1 |
emilywilson | 1:f121b88d9c85 | 59 | // myled = !pb; |
emilywilson | 0:c1654e25cc43 | 60 | |
emilywilson | 0:c1654e25cc43 | 61 | // Part 2 |
emilywilson | 4:6a7029bf4e1c | 62 | // builtinLED = p; |
emilywilson | 4:6a7029bf4e1c | 63 | // wait(0.5); |
emilywilson | 0:c1654e25cc43 | 64 | |
emilywilson | 0:c1654e25cc43 | 65 | // Part 3 |
emilywilson | 4:6a7029bf4e1c | 66 | |
emilywilson | 6:e346d2a3010f | 67 | if (!redSelect) { |
emilywilson | 4:6a7029bf4e1c | 68 | redVal = 1.0 * p; |
emilywilson | 6:e346d2a3010f | 69 | } else { |
emilywilson | 6:e346d2a3010f | 70 | redVal = 0.0f; |
emilywilson | 4:6a7029bf4e1c | 71 | } |
emilywilson | 6:e346d2a3010f | 72 | if (!greenSelect) { |
emilywilson | 4:6a7029bf4e1c | 73 | greenVal = 1.0 * p; |
emilywilson | 6:e346d2a3010f | 74 | } else { |
emilywilson | 6:e346d2a3010f | 75 | greenVal = 0.0f; |
emilywilson | 4:6a7029bf4e1c | 76 | } |
emilywilson | 6:e346d2a3010f | 77 | if (!blueSelect) { |
emilywilson | 4:6a7029bf4e1c | 78 | blueVal = 1.0 * p; |
emilywilson | 6:e346d2a3010f | 79 | } else { |
emilywilson | 6:e346d2a3010f | 80 | blueVal = 0.0f; |
emilywilson | 4:6a7029bf4e1c | 81 | } |
emilywilson | 5:d1ad3a964858 | 82 | myRGBLed.write(redVal, greenVal, blueVal); |
emilywilson | 6:e346d2a3010f | 83 | wait(0.5); |
emilywilson | 5:d1ad3a964858 | 84 | |
emilywilson | 6:e346d2a3010f | 85 | run(); |
emilywilson | 0:c1654e25cc43 | 86 | |
emilywilson | 1:f121b88d9c85 | 87 | } |
emilywilson | 0:c1654e25cc43 | 88 | } |