IoT 2018
Dependencies: mbed
Fork of microbit_blinky by
Diff: main.cpp
- Revision:
- 1:0b38b848a5f0
- Parent:
- 0:025387782f3e
- Child:
- 2:83f7d8e01b11
diff -r 025387782f3e -r 0b38b848a5f0 main.cpp --- a/main.cpp Wed Mar 02 18:01:16 2016 +0000 +++ b/main.cpp Thu Sep 20 09:17:38 2018 +0000 @@ -1,19 +1,35 @@ #include "mbed.h" -/* - * All the LEDs on the micro:bit are part of the LED Matrix, - * In order to get simple blinking behaviour, we set column 0 - * to be permanently at ground. If you want to use the LEDs as - * a screen, there is a display driver in the micro:bit 'DAL', - */ -DigitalOut col0(P0_4, 0); + +// Button A is on P0 bit 17 +// Pin labelled "0" on edge connector is in fact connected to P0_3 +volatile uint32_t * P0OUT = (uint32_t *)0x50000504; +volatile uint32_t * P0DIR = (uint32_t *)0x50000514; +volatile uint32_t * P0IN = (uint32_t *)0x50000510; +volatile uint32_t * P0CONF = (uint32_t *)(0x50000700); -DigitalOut myled(P0_13); - +void dly(volatile uint32_t len) +{ + // "volatile" modifier is necessary here + // to prevent the compiler from optimizing + // this software delay to nothing + while(len--); +} +int ButtonAPressed() +{ + // Button A pulls down so bit is zero when pressed. + if ((*P0IN & (1 << 17))==0) + return 1; + else + return 0; +} int main() { - while(1) { - myled = 1; - wait(0.2); - myled = 0; - wait(0.2); + + *P0DIR = (1 << 3); + P0CONF[17] = 0; // On power up, input buffer is not connected so must do this + while(1) { + if (ButtonAPressed()) + *P0OUT = (1 << 3); + else + *P0OUT = 0; } }