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();
}