demo

Dependencies:   microbit

Committer:
leejinRMX
Date:
Fri Nov 04 18:30:46 2022 +0000
Revision:
8:7a9e3f1df593
demo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
leejinRMX 8:7a9e3f1df593 1 /*
leejinRMX 8:7a9e3f1df593 2 The MIT License (MIT)
leejinRMX 8:7a9e3f1df593 3
leejinRMX 8:7a9e3f1df593 4 Copyright (c) 2016 British Broadcasting Corporation.
leejinRMX 8:7a9e3f1df593 5 This software is provided by Lancaster University by arrangement with the BBC.
leejinRMX 8:7a9e3f1df593 6
leejinRMX 8:7a9e3f1df593 7 Permission is hereby granted, free of charge, to any person obtaining a
leejinRMX 8:7a9e3f1df593 8 copy of this software and associated documentation files (the "Software"),
leejinRMX 8:7a9e3f1df593 9 to deal in the Software without restriction, including without limitation
leejinRMX 8:7a9e3f1df593 10 the rights to use, copy, modify, merge, publish, distribute, sublicense,
leejinRMX 8:7a9e3f1df593 11 and/or sell copies of the Software, and to permit persons to whom the
leejinRMX 8:7a9e3f1df593 12 Software is furnished to do so, subject to the following conditions:
leejinRMX 8:7a9e3f1df593 13
leejinRMX 8:7a9e3f1df593 14 The above copyright notice and this permission notice shall be included in
leejinRMX 8:7a9e3f1df593 15 all copies or substantial portions of the Software.
leejinRMX 8:7a9e3f1df593 16
leejinRMX 8:7a9e3f1df593 17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
leejinRMX 8:7a9e3f1df593 18 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
leejinRMX 8:7a9e3f1df593 19 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
leejinRMX 8:7a9e3f1df593 20 THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
leejinRMX 8:7a9e3f1df593 21 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
leejinRMX 8:7a9e3f1df593 22 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
leejinRMX 8:7a9e3f1df593 23 DEALINGS IN THE SOFTWARE.
leejinRMX 8:7a9e3f1df593 24 */
leejinRMX 8:7a9e3f1df593 25
leejinRMX 8:7a9e3f1df593 26 #include "MicroBit.h"
leejinRMX 8:7a9e3f1df593 27 #include "MicroBitSamples.h"
leejinRMX 8:7a9e3f1df593 28
leejinRMX 8:7a9e3f1df593 29 #ifdef MICROBIT_SAMPLE_BT_SYNC
leejinRMX 8:7a9e3f1df593 30
leejinRMX 8:7a9e3f1df593 31 MicroBit uBit;
leejinRMX 8:7a9e3f1df593 32
leejinRMX 8:7a9e3f1df593 33 uint16_t value;
leejinRMX 8:7a9e3f1df593 34
leejinRMX 8:7a9e3f1df593 35 void increment()
leejinRMX 8:7a9e3f1df593 36 {
leejinRMX 8:7a9e3f1df593 37 if (value < 57) {
leejinRMX 8:7a9e3f1df593 38 value = value + 1;
leejinRMX 8:7a9e3f1df593 39 // Indicate that a new sample is available
leejinRMX 8:7a9e3f1df593 40 MicroBitEvent e(MICROBIT_ID_VALUE, MICROBIT_VALUE_EVT_UPDATE);
leejinRMX 8:7a9e3f1df593 41 }
leejinRMX 8:7a9e3f1df593 42
leejinRMX 8:7a9e3f1df593 43 #if CONFIG_ENABLED(MICROBIT_DBG)
leejinRMX 8:7a9e3f1df593 44 if(SERIAL_DEBUG) SERIAL_DEBUG->printf("++\r\n");
leejinRMX 8:7a9e3f1df593 45 #endif
leejinRMX 8:7a9e3f1df593 46 }
leejinRMX 8:7a9e3f1df593 47
leejinRMX 8:7a9e3f1df593 48 void decrement()
leejinRMX 8:7a9e3f1df593 49 {
leejinRMX 8:7a9e3f1df593 50 if (value > 48) {
leejinRMX 8:7a9e3f1df593 51 value = value - 1;
leejinRMX 8:7a9e3f1df593 52 // Indicate that a new sample is available
leejinRMX 8:7a9e3f1df593 53 MicroBitEvent e(MICROBIT_ID_VALUE, MICROBIT_VALUE_EVT_UPDATE);
leejinRMX 8:7a9e3f1df593 54 }
leejinRMX 8:7a9e3f1df593 55
leejinRMX 8:7a9e3f1df593 56 #if CONFIG_ENABLED(MICROBIT_DBG)
leejinRMX 8:7a9e3f1df593 57 if(SERIAL_DEBUG) SERIAL_DEBUG->printf("--\r\n");
leejinRMX 8:7a9e3f1df593 58 #endif
leejinRMX 8:7a9e3f1df593 59 }
leejinRMX 8:7a9e3f1df593 60
leejinRMX 8:7a9e3f1df593 61 void onValueChanged(MicroBitEvent e)
leejinRMX 8:7a9e3f1df593 62 {
leejinRMX 8:7a9e3f1df593 63 #if CONFIG_ENABLED(MICROBIT_DBG)
leejinRMX 8:7a9e3f1df593 64 if(SERIAL_DEBUG) SERIAL_DEBUG->printf("valueChanged\r\n");
leejinRMX 8:7a9e3f1df593 65 #endif
leejinRMX 8:7a9e3f1df593 66 uBit.display.printChar(value);
leejinRMX 8:7a9e3f1df593 67 }
leejinRMX 8:7a9e3f1df593 68
leejinRMX 8:7a9e3f1df593 69 int main()
leejinRMX 8:7a9e3f1df593 70 {
leejinRMX 8:7a9e3f1df593 71 // Initialise the micro:bit runtime.
leejinRMX 8:7a9e3f1df593 72 uBit.init();
leejinRMX 8:7a9e3f1df593 73
leejinRMX 8:7a9e3f1df593 74 MicroBitSerial serial(USBTX, USBRX);
leejinRMX 8:7a9e3f1df593 75
leejinRMX 8:7a9e3f1df593 76 #if CONFIG_ENABLED(MICROBIT_DBG)
leejinRMX 8:7a9e3f1df593 77 if(SERIAL_DEBUG) SERIAL_DEBUG->printf("Init...\r\n");
leejinRMX 8:7a9e3f1df593 78 #endif
leejinRMX 8:7a9e3f1df593 79
leejinRMX 8:7a9e3f1df593 80 value = 48;
leejinRMX 8:7a9e3f1df593 81
leejinRMX 8:7a9e3f1df593 82 new MicroBitValueService(*uBit.ble, &value);
leejinRMX 8:7a9e3f1df593 83
leejinRMX 8:7a9e3f1df593 84
leejinRMX 8:7a9e3f1df593 85 #if CONFIG_ENABLED(MICROBIT_DBG)
leejinRMX 8:7a9e3f1df593 86 if(SERIAL_DEBUG) SERIAL_DEBUG->printf("Started!\r\n");
leejinRMX 8:7a9e3f1df593 87 #endif
leejinRMX 8:7a9e3f1df593 88
leejinRMX 8:7a9e3f1df593 89 uBit.display.scroll("Hi Bernard Controls! from GFI :)");
leejinRMX 8:7a9e3f1df593 90
leejinRMX 8:7a9e3f1df593 91 while(1) {
leejinRMX 8:7a9e3f1df593 92 if (uBit.buttonA.isPressed()) {
leejinRMX 8:7a9e3f1df593 93 decrement();
leejinRMX 8:7a9e3f1df593 94 } else if (uBit.buttonB.isPressed()) {
leejinRMX 8:7a9e3f1df593 95 increment();
leejinRMX 8:7a9e3f1df593 96 }
leejinRMX 8:7a9e3f1df593 97 uBit.display.printChar(value);
leejinRMX 8:7a9e3f1df593 98 uBit.sleep(100);
leejinRMX 8:7a9e3f1df593 99 }
leejinRMX 8:7a9e3f1df593 100 }
leejinRMX 8:7a9e3f1df593 101
leejinRMX 8:7a9e3f1df593 102 #endif