4180 lab 1

Dependencies:   mbed MCP23S17 PinDetect USBDevice

Committer:
emilywilson
Date:
Wed Jan 15 19:14:47 2020 +0000
Revision:
4:6a7029bf4e1c
Parent:
3:d84f4a501915
Child:
5:d1ad3a964858
part 3

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 0:c1654e25cc43 4
emilywilson 0:c1654e25cc43 5 DigitalOut myled(p26);
emilywilson 4:6a7029bf4e1c 6 PwmOut builtinLED(LED1);
emilywilson 0:c1654e25cc43 7 DigitalIn pb(p22);
emilywilson 1:f121b88d9c85 8 //DigitalIn pb2(p21);
emilywilson 0:c1654e25cc43 9
emilywilson 0:c1654e25cc43 10 // p10 is most significant bit
emilywilson 4:6a7029bf4e1c 11 BusIn ledSelect(p18, p19, p20);
emilywilson 4:6a7029bf4e1c 12
emilywilson 4:6a7029bf4e1c 13 PinName redPin = p24;
emilywilson 4:6a7029bf4e1c 14 PinName greenPin = p25;
emilywilson 4:6a7029bf4e1c 15 PinName bluePin = p23;
emilywilson 4:6a7029bf4e1c 16
emilywilson 2:7570a8526148 17 PinDetect pb1(p21);
emilywilson 2:7570a8526148 18 PinDetect pb2(p22);
emilywilson 0:c1654e25cc43 19
emilywilson 2:7570a8526148 20 float volatile p = 1.0f;
emilywilson 0:c1654e25cc43 21
emilywilson 0:c1654e25cc43 22 void pb1_hit_callback() {
emilywilson 0:c1654e25cc43 23 if (p > 0) {
emilywilson 0:c1654e25cc43 24 p -= 0.1;
emilywilson 0:c1654e25cc43 25 }
emilywilson 0:c1654e25cc43 26 }
emilywilson 0:c1654e25cc43 27
emilywilson 0:c1654e25cc43 28 void pb2_hit_callback() {
emilywilson 0:c1654e25cc43 29 if (p < 0) {
emilywilson 0:c1654e25cc43 30 p += 0.1;
emilywilson 0:c1654e25cc43 31 }
emilywilson 0:c1654e25cc43 32 }
emilywilson 0:c1654e25cc43 33
emilywilson 0:c1654e25cc43 34 int main() {
emilywilson 4:6a7029bf4e1c 35
emilywilson 4:6a7029bf4e1c 36 pb1.mode(PullUp);
emilywilson 4:6a7029bf4e1c 37 pb2.mode(PullUp);
emilywilson 4:6a7029bf4e1c 38 wait(0.1);
emilywilson 4:6a7029bf4e1c 39
emilywilson 4:6a7029bf4e1c 40 pb1.attach_asserted(&pb1_hit_callback);
emilywilson 4:6a7029bf4e1c 41 pb2.attach_asserted(&pb2_hit_callback);
emilywilson 4:6a7029bf4e1c 42 pb1.setSampleFrequency();
emilywilson 4:6a7029bf4e1c 43 pb2.setSampleFrequency();
emilywilson 4:6a7029bf4e1c 44
emilywilson 0:c1654e25cc43 45 while(1) {
emilywilson 0:c1654e25cc43 46 // Part 1
emilywilson 1:f121b88d9c85 47 // myled = !pb;
emilywilson 0:c1654e25cc43 48
emilywilson 0:c1654e25cc43 49 // Part 2
emilywilson 4:6a7029bf4e1c 50 // builtinLED = p;
emilywilson 4:6a7029bf4e1c 51 // wait(0.5);
emilywilson 0:c1654e25cc43 52
emilywilson 0:c1654e25cc43 53 // Part 3
emilywilson 4:6a7029bf4e1c 54 RGBLed myRBGLed = RGBLed(redPin, greenPin, bluePin);
emilywilson 4:6a7029bf4e1c 55 float redVal = 0.0f;
emilywilson 4:6a7029bf4e1c 56 float greenVal = 0.0f;
emilywilson 4:6a7029bf4e1c 57 float blueVal = 0.0f;
emilywilson 4:6a7029bf4e1c 58
emilywilson 4:6a7029bf4e1c 59 if (ledSelect & 0x1) {
emilywilson 4:6a7029bf4e1c 60 redVal = 1.0 * p;
emilywilson 4:6a7029bf4e1c 61 }
emilywilson 4:6a7029bf4e1c 62 if (ledSelect & 0x2) {
emilywilson 4:6a7029bf4e1c 63 greenVal = 1.0 * p;
emilywilson 4:6a7029bf4e1c 64 }
emilywilson 4:6a7029bf4e1c 65 if (ledSelect & 0x4) {
emilywilson 4:6a7029bf4e1c 66 blueVal = 1.0 * p;
emilywilson 4:6a7029bf4e1c 67 }
emilywilson 0:c1654e25cc43 68
emilywilson 4:6a7029bf4e1c 69 // Part 4
emilywilson 1:f121b88d9c85 70 }
emilywilson 0:c1654e25cc43 71 }