program to experiment with microbit

Committer:
isaeldiaz@developer.mbed.org
Date:
Thu Sep 08 15:38:58 2016 +0200
Revision:
1:464fc8833089
Parent:
0:b630f8a79965
Child:
2:9c5448e60f15
introducing MicrobitUltrasound instance in program

Who changed what in which revision?

UserRevisionLine numberNew contents of line
isaeldiaz 0:b630f8a79965 1
isaeldiaz 0:b630f8a79965 2 #include "MicroBit.h"
isaeldiaz@developer.mbed.org 1:464fc8833089 3 #include "MicrobitUltrasound.h"
isaeldiaz 0:b630f8a79965 4
isaeldiaz 0:b630f8a79965 5 enum eDirection { COAST, FORWARD, REVERSE, BRAKE};
isaeldiaz 0:b630f8a79965 6 MicroBit uBit;
isaeldiaz 0:b630f8a79965 7
isaeldiaz@developer.mbed.org 1:464fc8833089 8 MicrobitUltrasound sonar(MICROBIT_PIN_P1, MICROBIT_PIN_P2);
isaeldiaz 0:b630f8a79965 9
isaeldiaz@developer.mbed.org 1:464fc8833089 10 //MicroBitPin P1 = MicroBitPin(MICROBIT_ID_IO_P1, MICROBIT_PIN_P1, PIN_CAPABILITY_DIGITAL);
isaeldiaz 0:b630f8a79965 11
isaeldiaz 0:b630f8a79965 12
isaeldiaz 0:b630f8a79965 13 void driveMotors(eDirection dir)
isaeldiaz 0:b630f8a79965 14 {
isaeldiaz 0:b630f8a79965 15 switch(dir)
isaeldiaz 0:b630f8a79965 16 {
isaeldiaz 0:b630f8a79965 17 case FORWARD:
isaeldiaz 0:b630f8a79965 18 uBit.display.scroll("FORWARD");
isaeldiaz 0:b630f8a79965 19 uBit.io.P0.setDigitalValue(1);
isaeldiaz 0:b630f8a79965 20 uBit.io.P8.setDigitalValue(1);
isaeldiaz 0:b630f8a79965 21 uBit.io.P12.setDigitalValue(0);
isaeldiaz 0:b630f8a79965 22 uBit.io.P16.setDigitalValue(0);
isaeldiaz 0:b630f8a79965 23 break;
isaeldiaz 0:b630f8a79965 24 case REVERSE:
isaeldiaz 0:b630f8a79965 25 uBit.display.scroll("REVERSE");
isaeldiaz 0:b630f8a79965 26 uBit.io.P0.setDigitalValue(0);
isaeldiaz 0:b630f8a79965 27 uBit.io.P8.setDigitalValue(0);
isaeldiaz 0:b630f8a79965 28 uBit.io.P12.setDigitalValue(1);
isaeldiaz 0:b630f8a79965 29 uBit.io.P16.setDigitalValue(1);
isaeldiaz 0:b630f8a79965 30 break;
isaeldiaz 0:b630f8a79965 31 case BRAKE:
isaeldiaz 0:b630f8a79965 32 uBit.display.scroll("BRAKE");
isaeldiaz 0:b630f8a79965 33 uBit.io.P0.setDigitalValue(1);
isaeldiaz 0:b630f8a79965 34 uBit.io.P8.setDigitalValue(1);
isaeldiaz 0:b630f8a79965 35 uBit.io.P12.setDigitalValue(1);
isaeldiaz 0:b630f8a79965 36 uBit.io.P16.setDigitalValue(1);
isaeldiaz 0:b630f8a79965 37 break;
isaeldiaz 0:b630f8a79965 38 default:
isaeldiaz 0:b630f8a79965 39 uBit.io.P0.setDigitalValue(0);
isaeldiaz 0:b630f8a79965 40 uBit.io.P8.setDigitalValue(0);
isaeldiaz 0:b630f8a79965 41 uBit.io.P12.setDigitalValue(0);
isaeldiaz 0:b630f8a79965 42 uBit.io.P16.setDigitalValue(0);
isaeldiaz 0:b630f8a79965 43 break;
isaeldiaz 0:b630f8a79965 44 }
isaeldiaz 0:b630f8a79965 45
isaeldiaz 0:b630f8a79965 46 }
isaeldiaz 0:b630f8a79965 47
isaeldiaz 0:b630f8a79965 48 void onPulse(MicroBitEvent e)
isaeldiaz 0:b630f8a79965 49 {
isaeldiaz 0:b630f8a79965 50 int duration = e.timestamp;
isaeldiaz 0:b630f8a79965 51 uBit.serial.printf("%d, ", duration);
isaeldiaz 0:b630f8a79965 52 }
isaeldiaz 0:b630f8a79965 53
isaeldiaz 0:b630f8a79965 54
isaeldiaz 0:b630f8a79965 55 int main()
isaeldiaz 0:b630f8a79965 56 {
isaeldiaz 0:b630f8a79965 57 // Initialise the micro:bit runtime.
isaeldiaz 0:b630f8a79965 58 uBit.init();
isaeldiaz 0:b630f8a79965 59 uBit.serial.printf("Initializing\n");
isaeldiaz 0:b630f8a79965 60 uBit.display.scroll("SONAR");
isaeldiaz 0:b630f8a79965 61
isaeldiaz@developer.mbed.org 1:464fc8833089 62 //uBit.messageBus.listen(MICROBIT_ID_IO_P1, MICROBIT_PIN_EVT_PULSE_LO, onPulse, MESSAGE_BUS_LISTENER_IMMEDIATE);
isaeldiaz@developer.mbed.org 1:464fc8833089 63 uBit.messageBus.listen(MICROBIT_ID_ULTRASOUND, MICROBIT_ULTRASOUND_EVT_ECHO_PULSE_LO, onPulse, MESSAGE_BUS_LISTENER_IMMEDIATE);
isaeldiaz@developer.mbed.org 1:464fc8833089 64 sonar.start();
isaeldiaz 0:b630f8a79965 65 while(1){
isaeldiaz 0:b630f8a79965 66 uBit.sleep(2000);
isaeldiaz 0:b630f8a79965 67 }
isaeldiaz 0:b630f8a79965 68
isaeldiaz 0:b630f8a79965 69
isaeldiaz 0:b630f8a79965 70 // If main exits, there may still be other fibers running or registered event handlers etc.
isaeldiaz 0:b630f8a79965 71 // Simply release this fiber, which will mean we enter the scheduler. Worse case, we then
isaeldiaz 0:b630f8a79965 72 // sit in the idle task forever, in a power efficient sleep.
isaeldiaz 0:b630f8a79965 73 release_fiber();
isaeldiaz 0:b630f8a79965 74 }