4180 lab 1

Dependencies:   mbed MCP23S17 PinDetect USBDevice

Committer:
emilywilson
Date:
Wed Jan 15 18:37:58 2020 +0000
Revision:
2:7570a8526148
Parent:
1:f121b88d9c85
Child:
3:d84f4a501915
pb interrupts;

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 1:f121b88d9c85 6 DigitalOut 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 0:c1654e25cc43 11 //BusIn ledSelect(p8, p9, p10);
emilywilson 0:c1654e25cc43 12 //
emilywilson 0:c1654e25cc43 13 //PinName redPin = p11;
emilywilson 0:c1654e25cc43 14 //PinName greenPin = p12;
emilywilson 0:c1654e25cc43 15 //PinName bluePin = p13;
emilywilson 0:c1654e25cc43 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 0:c1654e25cc43 35 while(1) {
emilywilson 0:c1654e25cc43 36 // Part 1
emilywilson 1:f121b88d9c85 37 // myled = !pb;
emilywilson 0:c1654e25cc43 38
emilywilson 0:c1654e25cc43 39 // Part 2
emilywilson 0:c1654e25cc43 40 float p = 1.0f;
emilywilson 0:c1654e25cc43 41 pb1.mode(PullUp);
emilywilson 0:c1654e25cc43 42 pb2.mode(PullUp);
emilywilson 1:f121b88d9c85 43 wait(0.1);
emilywilson 0:c1654e25cc43 44
emilywilson 0:c1654e25cc43 45 if (pb1) {
emilywilson 0:c1654e25cc43 46 if (p > 0) {
emilywilson 0:c1654e25cc43 47 p -= 0.1;
emilywilson 0:c1654e25cc43 48 }
emilywilson 0:c1654e25cc43 49 } else if (pb2) {
emilywilson 0:c1654e25cc43 50 if (p < 1) {
emilywilson 0:c1654e25cc43 51 p += 0.1;
emilywilson 0:c1654e25cc43 52 }
emilywilson 0:c1654e25cc43 53 }
emilywilson 1:f121b88d9c85 54 builtinLED = p;
emilywilson 0:c1654e25cc43 55
emilywilson 0:c1654e25cc43 56 // Part 3
emilywilson 0:c1654e25cc43 57 // RGBLed myRBGLed = RGBLed(redPin, greenPin, bluePin);
emilywilson 0:c1654e25cc43 58 // float redVal = 0.0f;
emilywilson 0:c1654e25cc43 59 // float greenVal = 0.0f;
emilywilson 0:c1654e25cc43 60 // float blueVal = 0.0f;
emilywilson 0:c1654e25cc43 61 //
emilywilson 0:c1654e25cc43 62 // pb1.mode(PullUp)
emilywilson 0:c1654e25cc43 63 // pb2.mode(PullUp)
emilywilson 0:c1654e25cc43 64 // wait(0.1)
emilywilson 0:c1654e25cc43 65 //
emilywilson 0:c1654e25cc43 66 // // Possibly try attach_asserted
emilywilson 0:c1654e25cc43 67 // pb1.attach_deasserted(&pb1_hit_callback);
emilywilson 0:c1654e25cc43 68 // pb2.attach_deasserted(&pb2_hit_callback);
emilywilson 0:c1654e25cc43 69 // pb1.setSampleFrequency();
emilywilson 0:c1654e25cc43 70 // pb2.setSampleFrequency();
emilywilson 0:c1654e25cc43 71 //
emilywilson 0:c1654e25cc43 72 // if (ledSelect & 0x1) {
emilywilson 0:c1654e25cc43 73 // redVal = 1.0 * p;
emilywilson 0:c1654e25cc43 74 // }
emilywilson 0:c1654e25cc43 75 // if (ledSelect & 0x2) {
emilywilson 0:c1654e25cc43 76 // greenVal = 1.0 * p;
emilywilson 0:c1654e25cc43 77 // }
emilywilson 0:c1654e25cc43 78 // if (ledselect & 0x4) {
emilywilson 0:c1654e25cc43 79 // blueVal = 1.0 * p;
emilywilson 0:c1654e25cc43 80 // }
emilywilson 0:c1654e25cc43 81 // }
emilywilson 0:c1654e25cc43 82
emilywilson 0:c1654e25cc43 83 // Part 4
emilywilson 1:f121b88d9c85 84 }
emilywilson 0:c1654e25cc43 85 }