4180 lab 1

Dependencies:   mbed MCP23S17 PinDetect USBDevice

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?

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 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 }