microbit-samples: Restructured repo for easier use

- each sample now has a separate folder, named main.cpp
 - added .yotta_ignore to prevent them all being linked together
 - updated docs accordingly
This commit is contained in:
Joe Finney 2016-07-08 17:52:23 +01:00
parent a9a4e43ffa
commit 24d01aa6f3
16 changed files with 86 additions and 111 deletions

1
.yotta_ignore Normal file
View File

@ -0,0 +1 @@
source/examples

View File

@ -2,9 +2,33 @@
A collection of example programs using the micro:bit runtime. A collection of example programs using the micro:bit runtime.
The source folder contains a selection of samples demonstrating the capabilities and usage of the runtime APIs. The source/examples folder contains a selection of samples demonstrating the capabilities and usage of the runtime APIs.
To select a sample, edit the `MicroBitSamples.h` file in the source folder and uncomment the line matching the To select a sample, simply copy the .cpp files from the relevant folder into the source/ folder.
sample you wish to use. Please be sure to note that only one sample is selected at a time.
e.g. to select the "invaders" example:
```
cp source/examples/invaders/* source
```
and then to compile your sample:
```
yt clean
yt build
```
The HEX file for you micro:bit with then be generated and stored in build\bbc-microbit-classic-gcc\source\microbit-samples-combined.hex
n.b. Any samples using the low level RADIO APIs (such as simple-radio-rx and simple-radio-tx) require the bluetooth capabilities of the
micro:bit to be disabled. To do this, simply copy the config.json file from the sample to the top level of your project. Don't forget to
remove this file again later if you then want to use Bluetooth! For example:
```
cp source/examples/simple-radio-rx/config.json .
```
## Overview ## Overview
@ -25,7 +49,7 @@ In addition to supporting development in C/C++, the runtime is also designed spe
## microbit-dal Configuration ## microbit-dal Configuration
To configure the DAL a number options can be modified in `MicroBitConfig.h`, a full list and explanation The DAL also contains a number of compile time options can be modified. A full list and explanation
can be found in our [documentation](http://lancaster-university.github.io/microbit-docs/advanced/#compile-time-options-with-microbitconfigh). can be found in our [documentation](http://lancaster-university.github.io/microbit-docs/advanced/#compile-time-options-with-microbitconfigh).
Alternately, `yotta` can be used to configure the dal regardless of module/folder structure, through providing a Alternately, `yotta` can be used to configure the dal regardless of module/folder structure, through providing a

View File

@ -1,67 +0,0 @@
/*
The MIT License (MIT)
Copyright (c) 2016 British Broadcasting Corporation.
This software is provided by Lancaster University by arrangement with the BBC.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/
#ifndef MICROBIT_SAMPLES_H
#define MICROBIT_SAMPLES_H
//
// Uncomment ONE of the following #defines to select which sample to build.
// Afterwards, save this file and build the project. The resulting HEX
// file will contain your chosen sample.
//
//
// Introductory examples using the uBit object.
//
#define MICROBIT_SAMPLE_HELLO_WORLD
//#define MICROBIT_SAMPLE_ACCELEROMETER_DEMO
//#define MICROBIT_SAMPLE_BUTTON_EVENTS
//#define MICROBIT_SAMPLE_SIMPLE_ANIMATION
//#define MICROBIT_SAMPLE_GREYSCALE
//#define MICROBIT_SAMPLE_LOGIC_GATES
//#define MICROBIT_SAMPLE_SNAKE
//#define MICROBIT_SAMPLE_INVADERS
//
// Examples using MicroBitRadio.
//
// n.b. you MUST disable the BLE stack to run these samples.
// Do this by setting "#define MICROBIT_BLE_ENABLED 0" in your MicroBitConfig.h file.
//
// For yotta based environments this file is located at:
// "yotta_modules/microbit-dal/inc/core/MicroBitConfig.h"
//
// For project compiling on mbed.org, it is located at:
// "microbit/microbit-dal/inc/core/MicroBitConfig.h"
//
//#define MICROBIT_SAMPLE_SIMPLE_RADIO_TX
//#define MICROBIT_SAMPLE_SIMPLE_RADIO_RX
#endif

View File

@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE.
*/ */
#include "MicroBit.h" #include "MicroBit.h"
#include "MicroBitSamples.h"
#ifdef MICROBIT_SAMPLE_ACCELEROMETER_DEMO
MicroBit uBit; MicroBit uBit;
@ -71,4 +68,3 @@ int main()
} }
} }
#endif

View File

@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE.
*/ */
#include "MicroBit.h" #include "MicroBit.h"
#include "MicroBitSamples.h"
#ifdef MICROBIT_SAMPLE_BUTTON_EVENTS
MicroBit uBit; MicroBit uBit;
@ -101,4 +98,3 @@ int main()
uBit.sleep(10000); uBit.sleep(10000);
} }
#endif

View File

@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE.
*/ */
#include "MicroBit.h" #include "MicroBit.h"
#include "MicroBitSamples.h"
#ifdef MICROBIT_SAMPLE_GREYSCALE
MicroBit uBit; MicroBit uBit;
@ -55,4 +52,3 @@ int main()
uBit.sleep(10000); uBit.sleep(10000);
} }
#endif

View File

@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE.
*/ */
#include "MicroBit.h" #include "MicroBit.h"
#include "MicroBitSamples.h"
#ifdef MICROBIT_SAMPLE_HELLO_WORLD
MicroBit uBit; MicroBit uBit;
@ -44,4 +41,3 @@ int main()
release_fiber(); release_fiber();
} }
#endif

View File

@ -37,13 +37,10 @@ DEALINGS IN THE SOFTWARE.
// //
#include "MicroBit.h" #include "MicroBit.h"
#include "MicroBitSamples.h"
#define GAME_ON 0 #define GAME_ON 0
#define GAME_OVER 1 #define GAME_OVER 1
#ifdef MICROBIT_SAMPLE_INVADERS
struct Point struct Point
{ {
int x; int x;
@ -293,4 +290,3 @@ int main()
spaceInvaders(); spaceInvaders();
} }
#endif

View File

@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE.
*/ */
#include "MicroBit.h" #include "MicroBit.h"
#include "MicroBitSamples.h"
#ifdef MICROBIT_SAMPLE_LOGIC_GATES
#define LOGIC_MODE_NOT 1 #define LOGIC_MODE_NOT 1
#define LOGIC_MODE_AND 2 #define LOGIC_MODE_AND 2
@ -165,4 +162,3 @@ int main()
} }
} }
#endif

View File

@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE.
*/ */
#include "MicroBit.h" #include "MicroBit.h"
#include "MicroBitSamples.h"
#ifdef MICROBIT_SAMPLE_SIMPLE_ANIMATION
MicroBit uBit; MicroBit uBit;
@ -42,4 +39,3 @@ int main()
uBit.display.scroll(img, 80, -1); uBit.display.scroll(img, 80, -1);
} }
#endif

View File

@ -0,0 +1,7 @@
{
"microbit-dal":{
"bluetooth":{
"enabled": 0
}
}
}

View File

@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE.
*/ */
#include "MicroBit.h" #include "MicroBit.h"
#include "MicroBitSamples.h"
#ifdef MICROBIT_SAMPLE_SIMPLE_RADIO_RX
MicroBit uBit; MicroBit uBit;
@ -53,4 +50,3 @@ int main()
uBit.sleep(1000); uBit.sleep(1000);
} }
#endif

View File

@ -0,0 +1,7 @@
{
"microbit-dal":{
"bluetooth":{
"enabled": 0
}
}
}

View File

@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE.
*/ */
#include "MicroBit.h" #include "MicroBit.h"
#include "MicroBitSamples.h"
#ifdef MICROBIT_SAMPLE_SIMPLE_RADIO_TX
MicroBit uBit; MicroBit uBit;
@ -49,4 +46,3 @@ int main()
} }
#endif

View File

@ -24,9 +24,6 @@ DEALINGS IN THE SOFTWARE.
*/ */
#include "MicroBit.h" #include "MicroBit.h"
#include "MicroBitSamples.h"
#ifdef MICROBIT_SAMPLE_SNAKE
#define SNAKE_EMPTY 0 #define SNAKE_EMPTY 0
#define SNAKE_UP 1 #define SNAKE_UP 1
@ -203,4 +200,3 @@ int main()
snake(); snake();
} }
#endif

43
source/main.cpp Normal file
View File

@ -0,0 +1,43 @@
/*
The MIT License (MIT)
Copyright (c) 2016 British Broadcasting Corporation.
This software is provided by Lancaster University by arrangement with the BBC.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/
#include "MicroBit.h"
MicroBit uBit;
int main()
{
// Initialise the micro:bit runtime.
uBit.init();
// Insert your code here!
uBit.display.scroll("HELLO WORLD! :)");
// 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();
}