4180 lab 1

Dependencies:   mbed MCP23S17 PinDetect USBDevice

Committer:
emilywilson
Date:
Wed Jan 15 18:38:18 2020 +0000
Revision:
3:d84f4a501915
Parent:
2:7570a8526148
Child:
4:6a7029bf4e1c
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 pb1.mode(PullUp);
emilywilson 0:c1654e25cc43 41 pb2.mode(PullUp);
emilywilson 1:f121b88d9c85 42 wait(0.1);
emilywilson 0:c1654e25cc43 43
emilywilson 1:f121b88d9c85 44 builtinLED = p;
emilywilson 0:c1654e25cc43 45
emilywilson 0:c1654e25cc43 46 // Part 3
emilywilson 0:c1654e25cc43 47 // RGBLed myRBGLed = RGBLed(redPin, greenPin, bluePin);
emilywilson 0:c1654e25cc43 48 // float redVal = 0.0f;
emilywilson 0:c1654e25cc43 49 // float greenVal = 0.0f;
emilywilson 0:c1654e25cc43 50 // float blueVal = 0.0f;
emilywilson 0:c1654e25cc43 51 //
emilywilson 0:c1654e25cc43 52 // pb1.mode(PullUp)
emilywilson 0:c1654e25cc43 53 // pb2.mode(PullUp)
emilywilson 0:c1654e25cc43 54 // wait(0.1)
emilywilson 0:c1654e25cc43 55 //
emilywilson 0:c1654e25cc43 56 // // Possibly try attach_asserted
emilywilson 0:c1654e25cc43 57 // pb1.attach_deasserted(&pb1_hit_callback);
emilywilson 0:c1654e25cc43 58 // pb2.attach_deasserted(&pb2_hit_callback);
emilywilson 0:c1654e25cc43 59 // pb1.setSampleFrequency();
emilywilson 0:c1654e25cc43 60 // pb2.setSampleFrequency();
emilywilson 0:c1654e25cc43 61 //
emilywilson 0:c1654e25cc43 62 // if (ledSelect & 0x1) {
emilywilson 0:c1654e25cc43 63 // redVal = 1.0 * p;
emilywilson 0:c1654e25cc43 64 // }
emilywilson 0:c1654e25cc43 65 // if (ledSelect & 0x2) {
emilywilson 0:c1654e25cc43 66 // greenVal = 1.0 * p;
emilywilson 0:c1654e25cc43 67 // }
emilywilson 0:c1654e25cc43 68 // if (ledselect & 0x4) {
emilywilson 0:c1654e25cc43 69 // blueVal = 1.0 * p;
emilywilson 0:c1654e25cc43 70 // }
emilywilson 0:c1654e25cc43 71 // }
emilywilson 0:c1654e25cc43 72
emilywilson 0:c1654e25cc43 73 // Part 4
emilywilson 1:f121b88d9c85 74 }
emilywilson 0:c1654e25cc43 75 }