Hello, is someone here to help me combining some code to mbed?
I have a javascript-code and an mbed-code, but I don't know how it works.
Here are the two codes:
micro:bit - Javascript-code
let TimerForStandby = 0
let BTConnected = false
bluetooth.onBluetoothConnected(() => {
BTConnected = true
led.setBrightness(64)
basic.showIcon(IconNames.Yes)
basic.pause(800)
bluetooth.uartWriteString("AppOK")
while (BTConnected) {
basic.showIcon(IconNames.Yes)
}
})
function Repeater() {
while (TimerForStandby < 2 && !(BTConnected)) {
led.setBrightness(5)
for (let i = 0; i < 10; i++) {
basic.showIcon(IconNames.Happy)
basic.pause(5000)
basic.showIcon(IconNames.SmallDiamond)
basic.pause(1000)
}
TimerForStandby = TimerForStandby + 1
}
while (TimerForStandby > 0 && !(BTConnected)) {
led.setBrightness(3)
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
basic.pause(1000)
basic.showLeds(`
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
`)
basic.pause(1000)
}
}
bluetooth.onBluetoothDisconnected(() => {
TimerForStandby = 0
BTConnected = false
led.setBrightness(128)
for (let i = 0; i < 5; i++) {
basic.showIcon(IconNames.No)
basic.pause(100)
basic.showLeds(`
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
`)
}
basic.pause(200)
basic.showIcon(IconNames.Sad)
basic.pause(1000)
Repeater()
})
bluetooth.startAccelerometerService()
bluetooth.startUartService()
TimerForStandby = 0
led.setBrightness(128)
basic.showString("Test-Message")
basic.pause(300)
led.setBrightness(64)
basic.showIcon(IconNames.Happy)
mbed-code:
/* mbed Microcontroller Library
- Copyright (c) 2006-2014 ARM Limited
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- /
- include "mbed.h"
- include "BLE.h"
- include "BatteryService.h"
DigitalOut led1(LED1, 1);
Ticker t;
BatteryService *batteryService = NULL;
uint8_t batteryLevel = 50;
void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *disconnectionParams)
{
printf("Disconnected handle %u!\n\r", disconnectionParams->handle);
printf("Restarting the advertising process\n\r");
BLE::Instance(BLE::DEFAULT_INSTANCE).gap().startAdvertising(); restart advertising
}
void blink(void)
{
led1 = !led1;
}
void bleInitComplete(BLE::InitializationCompleteCallbackContext *params)
{
BLE &ble = params->ble;
ble_error_t error = params->error;
Gap& gap = ble.gap();
if (error != BLE_ERROR_NONE) {
return;
}
gap.onDisconnection(disconnectionCallback);
batteryService = new BatteryService(ble, batteryLevel);
/* setup advertising */
gap.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE);
gap.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
gap.setAdvertisingInterval(1000); /* 1000ms; in multiples of 0.625ms. */
gap.startAdvertising();
}
int main(void)
{
t.attach(blink, 1.0f);
printf("Initialising the nRF51822\n\r");
BLE& ble = BLE::Instance(BLE::DEFAULT_INSTANCE);
ble.init(bleInitComplete);
/* SpinWait for initialization to complete. This is necessary because the
- BLE object is used in the main loop below. */
while (ble.hasInitialized() == false) { /* spin loop */ }
while (true) {
ble.waitForEvent(); this will return upon any system event (such as an interrupt or a ticker wakeup)
the magic battery processing
batteryLevel++;
if (batteryLevel > 100) {
batteryLevel = 20;
}
batteryService->updateBatteryLevel(batteryLevel);
}
}
Hello, is someone here to help me combining some code to mbed? I have a javascript-code and an mbed-code, but I don't know how it works. Here are the two codes:
micro:bit - Javascript-code
let TimerForStandby = 0 let BTConnected = false bluetooth.onBluetoothConnected(() => { BTConnected = true led.setBrightness(64) basic.showIcon(IconNames.Yes) basic.pause(800) bluetooth.uartWriteString("AppOK") while (BTConnected) { basic.showIcon(IconNames.Yes) } }) function Repeater() { while (TimerForStandby < 2 && !(BTConnected)) { led.setBrightness(5) for (let i = 0; i < 10; i++) { basic.showIcon(IconNames.Happy) basic.pause(5000) basic.showIcon(IconNames.SmallDiamond) basic.pause(1000) } TimerForStandby = TimerForStandby + 1 } while (TimerForStandby > 0 && !(BTConnected)) { led.setBrightness(3) basic.showLeds(` . . . . . . . . . . . . # . . . . . . . . . . . . `) basic.pause(1000) basic.showLeds(` . . . . . . . . . . . . . . . . . . . . . . . . . `) basic.pause(1000) } } bluetooth.onBluetoothDisconnected(() => { TimerForStandby = 0 BTConnected = false led.setBrightness(128) for (let i = 0; i < 5; i++) { basic.showIcon(IconNames.No) basic.pause(100) basic.showLeds(` . . . . . . . . . . . . . . . . . . . . . . . . . `) } basic.pause(200) basic.showIcon(IconNames.Sad) basic.pause(1000) Repeater() }) bluetooth.startAccelerometerService() bluetooth.startUartService() TimerForStandby = 0 led.setBrightness(128) basic.showString("Test-Message") basic.pause(300) led.setBrightness(64) basic.showIcon(IconNames.Happy)
mbed-code: /* mbed Microcontroller Library
DigitalOut led1(LED1, 1); Ticker t; BatteryService *batteryService = NULL; uint8_t batteryLevel = 50;
void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *disconnectionParams) { printf("Disconnected handle %u!\n\r", disconnectionParams->handle); printf("Restarting the advertising process\n\r"); BLE::Instance(BLE::DEFAULT_INSTANCE).gap().startAdvertising(); restart advertising }
void blink(void) { led1 = !led1; }
void bleInitComplete(BLE::InitializationCompleteCallbackContext *params) { BLE &ble = params->ble; ble_error_t error = params->error; Gap& gap = ble.gap();
if (error != BLE_ERROR_NONE) { return; }
gap.onDisconnection(disconnectionCallback);
batteryService = new BatteryService(ble, batteryLevel);
/* setup advertising */ gap.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE); gap.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); gap.setAdvertisingInterval(1000); /* 1000ms; in multiples of 0.625ms. */ gap.startAdvertising(); }
int main(void) { t.attach(blink, 1.0f);
printf("Initialising the nRF51822\n\r");
BLE& ble = BLE::Instance(BLE::DEFAULT_INSTANCE); ble.init(bleInitComplete);
/* SpinWait for initialization to complete. This is necessary because the
while (true) { ble.waitForEvent(); this will return upon any system event (such as an interrupt or a ticker wakeup)
the magic battery processing batteryLevel++; if (batteryLevel > 100) { batteryLevel = 20; }
batteryService->updateBatteryLevel(batteryLevel); } }