program to experiment with microbit
main.cpp
- Committer:
- isaeldiaz@developer.mbed.org
- Date:
- 2016-09-08
- Revision:
- 1:464fc8833089
- Parent:
- 0:b630f8a79965
- Child:
- 2:9c5448e60f15
File content as of revision 1:464fc8833089:
#include "MicroBit.h" #include "MicrobitUltrasound.h" enum eDirection { COAST, FORWARD, REVERSE, BRAKE}; MicroBit uBit; MicrobitUltrasound sonar(MICROBIT_PIN_P1, MICROBIT_PIN_P2); //MicroBitPin P1 = MicroBitPin(MICROBIT_ID_IO_P1, MICROBIT_PIN_P1, PIN_CAPABILITY_DIGITAL); void driveMotors(eDirection dir) { switch(dir) { case FORWARD: uBit.display.scroll("FORWARD"); uBit.io.P0.setDigitalValue(1); uBit.io.P8.setDigitalValue(1); uBit.io.P12.setDigitalValue(0); uBit.io.P16.setDigitalValue(0); break; case REVERSE: uBit.display.scroll("REVERSE"); uBit.io.P0.setDigitalValue(0); uBit.io.P8.setDigitalValue(0); uBit.io.P12.setDigitalValue(1); uBit.io.P16.setDigitalValue(1); break; case BRAKE: uBit.display.scroll("BRAKE"); uBit.io.P0.setDigitalValue(1); uBit.io.P8.setDigitalValue(1); uBit.io.P12.setDigitalValue(1); uBit.io.P16.setDigitalValue(1); break; default: uBit.io.P0.setDigitalValue(0); uBit.io.P8.setDigitalValue(0); uBit.io.P12.setDigitalValue(0); uBit.io.P16.setDigitalValue(0); break; } } void onPulse(MicroBitEvent e) { int duration = e.timestamp; uBit.serial.printf("%d, ", duration); } int main() { // Initialise the micro:bit runtime. uBit.init(); uBit.serial.printf("Initializing\n"); uBit.display.scroll("SONAR"); //uBit.messageBus.listen(MICROBIT_ID_IO_P1, MICROBIT_PIN_EVT_PULSE_LO, onPulse, MESSAGE_BUS_LISTENER_IMMEDIATE); uBit.messageBus.listen(MICROBIT_ID_ULTRASOUND, MICROBIT_ULTRASOUND_EVT_ECHO_PULSE_LO, onPulse, MESSAGE_BUS_LISTENER_IMMEDIATE); sonar.start(); while(1){ uBit.sleep(2000); } // If main exits, there may still be other fibers running or registered event handlers etc. // Simply release this fiber, which will mean we enter the scheduler. Worse case, we then // sit in the idle task forever, in a power efficient sleep. release_fiber(); }