Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 52 additions & 2 deletions src/extensions/microbitMore/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -1693,8 +1693,15 @@ class MbitMoreBlocks {
description: 'label for shaken gesture in gesture picker for microbit more extension'
}),
value: MbitMoreGestureName.SHAKE
},
{
text: formatMessage({
id: 'mbitMore.gesturesMenu.moved',
default: 'moved',
description: 'label for moved gesture in gesture picker for microbit more extension'
}),
value: 'MOVED'
}

];
}

Expand Down Expand Up @@ -2291,6 +2298,21 @@ class MbitMoreBlocks {
}
}
},
{
opcode: 'display',
text: formatMessage({
id: 'mbitMore.display',
default: 'display [TEXT]',
description: 'display text on the micro:bit display'
}),
blockType: BlockType.COMMAND,
arguments: {
TEXT: {
type: ArgumentType.STRING,
defaultValue: 'Hello!'
}
}
},
{
opcode: 'displayText',
text: formatMessage({
Expand Down Expand Up @@ -2850,6 +2872,12 @@ class MbitMoreBlocks {
}, this.runtime.currentStepTime);
}
const gestureName = args.GESTURE;
if (gestureName === 'MOVED') {
return Object.entries(this._peripheral.gestureEvents).some(([name, timestamp]) => {
if (!this.prevGestureEvents[name]) return true;
return timestamp !== this.prevGestureEvents[name];
});
}
const lastTimestamp =
this._peripheral.getGestureEventTimestamp(gestureName);
if (lastTimestamp === null) return false;
Expand Down Expand Up @@ -2896,7 +2924,29 @@ class MbitMoreBlocks {
}

/**
* Display text on the 5x5 LED matrix.
* Display text on the 5x5 LED matrix with fixed delay.
* @param {object} args - the block's arguments.
* @param {string} args.TEXT - the text to display.
* @param {object} util - utility object provided by the runtime.
* @return {?Promise} - a Promise that resolves after a tick or undefined if yield.
*/
display (args, util) {
const text = Cast.toString(args.TEXT);
const delay = 120;
const resultPromise = this._peripheral.displayText(text, delay, util);
if (resultPromise) {
return resultPromise.then(() => {
// wait for display done.
// 5x5 LED matrix can display 1 character in a time.
// It takes (delay * (textLength + 5)) ms to display all characters.
const textLength = Math.min(18, text.length);
return new Promise(resolve => setTimeout(resolve, delay * (textLength + 5)));
});
}
}

/**
* Display text on the 5x5 LED matrix with delay.
* Displayable character is ascii and non-ascii is replaced to '?'.
* @param {object} args - the block's arguments.
* @param {string} args.TEXT - The contents to display.
Expand Down
12 changes: 8 additions & 4 deletions src/extensions/microbitMore/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@
"mbitMore.buttonEventMenu.click": "クリックされた",
"mbitMore.buttonEventMenu.longClick": "ロングクリックされた",
"mbitMore.buttonEventMenu.doubleClick": "ダブルクリックされた",
"mbitMore.isButtonPressed": "ボタン [NAME] が押されている",
"mbitMore.isButtonPressed": "ボタン [NAME] が押された",
"mbitMore.whenTouchEvent": "ピン [NAME] が [EVENT] とき",
"mbitMore.isPinTouched": "ピン [NAME] がタッチされている",
"mbitMore.touchIDMenu.logo": "ロゴ",
Expand All @@ -120,7 +120,9 @@
"mbitMore.gesturesMenu.g6": "6Gかかった",
"mbitMore.gesturesMenu.g8": "8Gかかった",
"mbitMore.gesturesMenu.shake": "ゆさぶられた",
"mbitMore.displayMatrix": "パターン [MATRIX] を表示する",
"mbitMore.gesturesMenu.moved": "動いた",
"mbitMore.displayMatrix": "[MATRIX] を表示する",
"mbitMore.display": "[TEXT] を表示する",
"mbitMore.displayText": "文字 [TEXT] を [DELAY] ミリ秒間隔で流す",
"mbitMore.clearDisplay": "画面を消す",
"mbitMore.isPinHigh": "ピン [PIN] がハイである",
Expand Down Expand Up @@ -186,7 +188,7 @@
"mbitMore.buttonEventMenu.click": "クリックされた",
"mbitMore.buttonEventMenu.longClick": "ロングクリックされた",
"mbitMore.buttonEventMenu.doubleClick": "ダブルクリックされた",
"mbitMore.isButtonPressed": "[NAME] ボタンがおされている",
"mbitMore.isButtonPressed": "[NAME] ボタンがおされた",
"mbitMore.whenTouchEvent": "ピン [NAME] が [EVENT] とき",
"mbitMore.isPinTouched": "ピン [NAME] がタッチされている",
"mbitMore.touchIDMenu.logo": "ロゴ",
Expand All @@ -208,7 +210,9 @@
"mbitMore.gesturesMenu.g6": "6Gかかった",
"mbitMore.gesturesMenu.g8": "8Gかかった",
"mbitMore.gesturesMenu.shake": "ゆさぶられた",
"mbitMore.displayMatrix": "パターン [MATRIX] をひょうじする",
"mbitMore.gesturesMenu.moved": "うごいた",
"mbitMore.displayMatrix": "[MATRIX] をひょうじする",
"mbitMore.display": "[TEXT] をひょうじする",
"mbitMore.displayText": "もじ [TEXT] を [DELAY] ミリびょうかんかくでながす",
"mbitMore.clearDisplay": "がめんをけす",
"mbitMore.isPinHigh": "ピン [PIN] がハイである",
Expand Down
Loading