初始化提交
This commit is contained in:
@@ -0,0 +1,284 @@
|
||||
export const microbit_music_play_built_in = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_music'] = 'import music';
|
||||
var dropdown_melody = block.getFieldValue('melody');
|
||||
var pin = generator.valueToCode(block, 'PIN', generator.ORDER_ATOMIC);
|
||||
var checkbox_wait = block.getFieldValue('wait') == 'TRUE' ? 'True' : 'False';
|
||||
var checkbox_loop = block.getFieldValue('loop') == 'TRUE' ? 'True' : 'False';
|
||||
var code = 'music.play(music.' + dropdown_melody + ', pin=pin' + pin + ', wait=' + checkbox_wait + ', loop=' + checkbox_loop + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const microbit_music_play_built_in_easy = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_music'] = 'import music';
|
||||
var dropdown_melody = block.getFieldValue('melody');
|
||||
var pin = generator.valueToCode(block, 'PIN', generator.ORDER_ATOMIC);
|
||||
var code = 'music.play(music.' + dropdown_melody + ', pin=pin' + pin + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const microbit_music_pitch_delay = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_music'] = 'import music';
|
||||
generator.definitions_['import_math'] = 'import math';
|
||||
var number_pitch = generator.valueToCode(block, 'pitch', generator.ORDER_ATOMIC);
|
||||
var number_duration = generator.valueToCode(block, 'duration', generator.ORDER_ATOMIC);
|
||||
var pin = generator.valueToCode(block, 'PIN', generator.ORDER_ATOMIC);
|
||||
var checkbox_wait = block.getFieldValue('wait') == 'TRUE' ? 'True' : 'False';
|
||||
var code = 'music.pitch(round(' + number_pitch + '), round(' + number_duration + '), pin' + pin + ', wait = ' + checkbox_wait + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const microbit_music_pitch = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_music'] = 'import music';
|
||||
generator.definitions_['import_math'] = 'import math';
|
||||
var number_pitch = generator.valueToCode(block, 'pitch', generator.ORDER_ATOMIC);
|
||||
// var number_duration = generator.valueToCode(block, 'duration', generator.ORDER_ATOMIC);
|
||||
var pin = generator.valueToCode(block, 'PIN', generator.ORDER_ATOMIC);
|
||||
var code = 'music.pitch(round(' + number_pitch + '), pin=pin' + pin + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const microbit_music_play_list_of_notes = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_music'] = 'import music';
|
||||
var pin = generator.valueToCode(block, 'PIN', generator.ORDER_ATOMIC);
|
||||
var value_notes = generator.valueToCode(block, 'notes', generator.ORDER_ATOMIC) || '[]';
|
||||
var checkbox_wait = block.getFieldValue('wait') == 'TRUE' ? 'True' : 'False';
|
||||
var checkbox_loop = block.getFieldValue('loop') == 'TRUE' ? 'True' : 'False';
|
||||
var code = 'music.play(' + value_notes + ', pin=pin' + pin + ', wait=' + checkbox_wait + ', loop=' + checkbox_loop + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const microbit_music_reset = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_music'] = 'import music';
|
||||
var code = 'music.reset()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const microbit_music_stop = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_music'] = 'import music';
|
||||
var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var code = 'music.stop(pin' + pin + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const microbit_music_get_tempo = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_music'] = 'import music';
|
||||
var code = 'music.get_tempo()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const tone_set_tempo = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var bpm = generator.valueToCode(this, 'BPM', generator.ORDER_ASSIGNMENT);
|
||||
var ticks = generator.valueToCode(this, 'TICKS', generator.ORDER_ASSIGNMENT);
|
||||
var code = "music.set_tempo(ticks=" + ticks + ", bpm=" + bpm + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const speech_translate = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_speech'] = 'import speech';
|
||||
var text = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
var code = ["speech.translate(" + text + ")", generator.ORDER_ATOMIC];
|
||||
return code
|
||||
}
|
||||
|
||||
export const speech_say = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_speech'] = 'import speech';
|
||||
var mode = this.getFieldValue("MODE");
|
||||
var text = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
var pitch = generator.valueToCode(this, 'pitch', generator.ORDER_ATOMIC);
|
||||
var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);
|
||||
var mouth = generator.valueToCode(this, 'mouth', generator.ORDER_ATOMIC);
|
||||
var throat = generator.valueToCode(this, 'throat', generator.ORDER_ATOMIC);
|
||||
var code = "speech." + mode + "(" + text + ", pitch=" + pitch + ", speed=" + speed + ", mouth=" + mouth + ", throat=" + throat + ")\n";
|
||||
return code
|
||||
}
|
||||
|
||||
// export const speech_sing = function(){
|
||||
// generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
// generator.definitions_['import_speech'] = 'import speech';
|
||||
// var text = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
// var pitch = generator.valueToCode(this, 'pitch', generator.ORDER_ATOMIC);
|
||||
// var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);
|
||||
// var mouth = generator.valueToCode(this, 'mouth', generator.ORDER_ATOMIC);
|
||||
// var throat = generator.valueToCode(this, 'throat', generator.ORDER_ATOMIC);
|
||||
// var code = "speech.sing("+ text +", pitch="+pitch+", speed="+speed+", mouth="+mouth+", throat="+throat+")\n";
|
||||
// return code
|
||||
// }
|
||||
|
||||
// export const speech_prenounce = function(){
|
||||
// generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
// generator.definitions_['import_speech'] = 'import speech';
|
||||
// var text = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
// var pitch = generator.valueToCode(this, 'pitch', generator.ORDER_ATOMIC);
|
||||
// var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);
|
||||
// var mouth = generator.valueToCode(this, 'mouth', generator.ORDER_ATOMIC);
|
||||
// var throat = generator.valueToCode(this, 'throat', generator.ORDER_ATOMIC);
|
||||
// var code = "speech.pronounce("+ text +", pitch="+pitch+", speed="+speed+", mouth="+mouth+", throat="+throat+")\n";
|
||||
// return code
|
||||
// }
|
||||
|
||||
export const speech_say_easy = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_speech'] = 'import speech';
|
||||
var text = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
var code = "speech.say(" + text + ")\n";
|
||||
return code
|
||||
}
|
||||
|
||||
export const speech_sing_easy = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_speech'] = 'import speech';
|
||||
var text = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
var code = "speech.sing(" + text + ")\n";
|
||||
return code
|
||||
}
|
||||
|
||||
export const speech_pronounce_easy = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_speech'] = 'import speech';
|
||||
var text = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
var code = "speech.pronounce(" + text + ")\n";
|
||||
return code
|
||||
}
|
||||
|
||||
export const servo_move = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_Servolib'] = 'import Servo';
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var value_degree = generator.valueToCode(this, 'DEGREE', generator.ORDER_ATOMIC);
|
||||
if (!isNaN(parseInt(dropdown_pin)))
|
||||
var code = 'Servo.angle(pin' + dropdown_pin + ', ' + value_degree + ')\n';
|
||||
else
|
||||
var code = 'Servo.angle(' + dropdown_pin + ', ' + value_degree + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const bit_motor_control = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_motor_control'] = 'import motor_control';
|
||||
|
||||
var Motor = this.getFieldValue('Motor');
|
||||
var mode = this.getFieldValue('mode');
|
||||
var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);
|
||||
|
||||
var code = 'motor_control.MotorRun(' + Motor + ', ' + mode + '' + speed + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const display_rgb_init = function (_, generator) {
|
||||
var dropdown_rgbpin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var value_ledcount = generator.valueToCode(this, 'LEDCOUNT', generator.ORDER_ATOMIC);
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_neopixel'] = 'import neopixel';
|
||||
// generator.definitions_['include_display'] = '#include "Mixly.h"';
|
||||
generator.setups_['var_rgb_display' + dropdown_rgbpin] = 'np = neopixel.NeoPixel(pin' + dropdown_rgbpin + ', ' + value_ledcount + ')\n';
|
||||
// generator.setups_['setup_rgb_display_begin_' + dropdown_rgbpin] = 'rgb_display_' + dropdown_rgbpin + '.begin();';
|
||||
// generator.setups_['setup_rgb_display_setpin' + dropdown_rgbpin] = 'rgb_display_' + dropdown_rgbpin + '.setPin(' + dropdown_rgbpin + ');';
|
||||
return '';
|
||||
}
|
||||
|
||||
export const display_rgb = function (_, generator) {
|
||||
var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC);
|
||||
var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC);
|
||||
var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC);
|
||||
var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC);
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_neopixel'] = 'import neopixel';
|
||||
var code = 'np[' + value_led + '] = (' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const display_rgb2 = function (_, generator) {
|
||||
var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC);
|
||||
var colour_rgb_led_color = this.getFieldValue('RGB_LED_COLOR');
|
||||
var color = colour_rgb_led_color;
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_neopixel'] = 'import neopixel';
|
||||
var code = 'np[' + value_led + '] = (' + color + ')\n';
|
||||
code += 'np.show()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const display_rgb_show = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_neopixel'] = 'import neopixel';
|
||||
var code = 'np.show()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const MP3_INIT = function (_, generator) {
|
||||
var dropdown_pin1 = generator.valueToCode(this, 'RX', generator.ORDER_ATOMIC);
|
||||
var dropdown_pin2 = generator.valueToCode(this, 'TX', generator.ORDER_ATOMIC);
|
||||
if (!isNaN(parseInt(dropdown_pin1)))
|
||||
dropdown_pin1 = "pin" + dropdown_pin1;
|
||||
if (!isNaN(parseInt(dropdown_pin2)))
|
||||
dropdown_pin2 = "pin" + dropdown_pin2;
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_QJ00X_MP3'] = 'from MP3 import QJ00X_MP3';
|
||||
var code = 'mp3' + ' = ' + 'QJ00X_MP3(mp3_rx=' + dropdown_pin1 + ', mp3_tx=' + dropdown_pin2 + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// mp3 控制播放
|
||||
export const MP3_CONTROL = function (_, generator) {
|
||||
var CONTROL_TYPE = this.getFieldValue('CONTROL_TYPE');
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_QJ00X_MP3'] = 'from MP3 import QJ00X_MP3';
|
||||
var code = 'mp3' + '.' + CONTROL_TYPE + '()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// mp3 循环模式
|
||||
export const MP3_LOOP_MODE = function (_, generator) {
|
||||
var LOOP_MODE = this.getFieldValue('LOOP_MODE');
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_QJ00X_MP3'] = 'from MP3 import QJ00X_MP3';
|
||||
var code = 'mp3' + '.set_loop(' + LOOP_MODE + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// mp3 EQ模式
|
||||
export const MP3_EQ_MODE = function (_, generator) {
|
||||
var EQ_MODE = this.getFieldValue('EQ_MODE');
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_QJ00X_MP3'] = 'from MP3 import QJ00X_MP3';
|
||||
var code = 'mp3' + '.set_eq(' + EQ_MODE + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// mp3 设置音量
|
||||
export const MP3_VOL = function (_, generator) {
|
||||
var vol = generator.valueToCode(this, 'vol', generator.ORDER_ATOMIC);
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_QJ00X_MP3'] = 'from MP3 import QJ00X_MP3';
|
||||
var code = 'mp3' + '.set_vol(' + vol + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// mp3 播放第N首
|
||||
export const MP3_PLAY_NUM = function (_, generator) {
|
||||
var NUM = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_QJ00X_MP3'] = 'from MP3 import QJ00X_MP3';
|
||||
var code = 'mp3' + '.playFileByIndexNumber(' + NUM + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const MP3_PLAY_FOLDER = function (_, generator) {
|
||||
var FOLDER = generator.valueToCode(this, 'FOLDER', generator.ORDER_ATOMIC);
|
||||
var NUM = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_QJ00X_MP3'] = 'from MP3 import QJ00X_MP3';
|
||||
var code = 'mp3' + '.set_folder(' + FOLDER + ', ' + NUM + ')\n';
|
||||
return code;
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
export const radio_ons = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_radio'] = 'import radio';
|
||||
var type = this.getFieldValue('type');
|
||||
var code = 'radio.' + type + '()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const microbit_radio_on = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_radio'] = 'import radio';
|
||||
var code = 'radio.on()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const microbit_radio_off = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_radio'] = 'import radio';
|
||||
var code = 'radio.off()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const microbit_radio_config = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_radio'] = 'import radio';
|
||||
//var number_length = block.getFieldValue('length');
|
||||
var number_length = generator.valueToCode(this, "length", generator.ORDER_ATOMIC);
|
||||
var number_queue = generator.valueToCode(this, "queue", generator.ORDER_ATOMIC);
|
||||
var number_channel = generator.valueToCode(this, "channel", generator.ORDER_ATOMIC);
|
||||
var number_power = generator.valueToCode(this, "power", generator.ORDER_ATOMIC);
|
||||
var number_address = generator.valueToCode(this, "address", generator.ORDER_ATOMIC);
|
||||
var number_group = generator.valueToCode(this, "group", generator.ORDER_ATOMIC);
|
||||
var dropdown_data_rate = generator.valueToCode(this, "data_rate", generator.ORDER_ATOMIC);
|
||||
var code = 'radio.config(length=' + number_length + ', queue=' + number_queue + ', channel=' + number_channel + ', power=' + number_power + ', address=' + number_address + ', group=' + number_group + ', data_rate=radio.' + dropdown_data_rate + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const microbit_radio_reset = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_radio'] = 'import radio';
|
||||
var code = 'radio.reset()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const radio_send_string = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_radio'] = 'import radio';
|
||||
var type = this.getFieldValue('type');
|
||||
var number = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
|
||||
return "radio." + type + "(" + number + ")\n";
|
||||
}
|
||||
|
||||
export const radio_receive_string = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_radio'] = 'import radio';
|
||||
var type = this.getFieldValue('type');
|
||||
var code = "radio." + type + "()";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const microbit_radio_receive = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_radio'] = 'import radio';
|
||||
var code = 'radio.receive()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const i2c_init = function (_, generator) {
|
||||
var dropdown_pin1 = generator.valueToCode(this, 'RX', generator.ORDER_ATOMIC);
|
||||
var dropdown_pin2 = generator.valueToCode(this, 'TX', generator.ORDER_ATOMIC);
|
||||
var freq = generator.valueToCode(this, 'freq', generator.ORDER_ATOMIC);
|
||||
if (!isNaN(parseInt(dropdown_pin1)))
|
||||
dropdown_pin1 = "pin" + dropdown_pin1;
|
||||
if (!isNaN(parseInt(dropdown_pin2)))
|
||||
dropdown_pin2 = "pin" + dropdown_pin2;
|
||||
return "i2c.init(sda=" + dropdown_pin1 + ", scl=" + dropdown_pin2 + ", freq=" + freq + ")\n";
|
||||
}
|
||||
|
||||
export const i2c_read = function (_, generator) {
|
||||
var address = generator.valueToCode(this, 'address', generator.ORDER_ATOMIC);
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
|
||||
var is_repeated = this.getFieldValue('is_repeated');
|
||||
is_repeated = is_repeated.substring(0, 1).toUpperCase() + is_repeated.substring(1).toLowerCase();
|
||||
return ["i2c.read(" + address + ", " + data + ", " + is_repeated + ")", generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const i2c_write = function (_, generator) {
|
||||
var address = generator.valueToCode(this, 'address', generator.ORDER_ATOMIC);
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
|
||||
var is_repeated = this.getFieldValue('is_repeated');
|
||||
is_repeated = is_repeated.substring(0, 1).toUpperCase() + is_repeated.substring(1).toLowerCase();
|
||||
return "i2c.write(" + address + ", " + data + ", " + is_repeated + ")\n";
|
||||
}
|
||||
|
||||
export const spi_init = function (block) {
|
||||
var freq = block.getFieldValue('freq');
|
||||
var bits = block.getFieldValue('bits');
|
||||
var mode = block.getFieldValue('mode');
|
||||
var mosi = block.getFieldValue('mosi');
|
||||
var miso = block.getFieldValue('miso');
|
||||
var sck = block.getFieldValue('sck');
|
||||
return "spi.init(baudrate=" + freq + ", bits=" + bits + ", mode=" + mode + ", mosi=" + mosi + ", miso= " + miso + ", sclk=" + sck + ");\n";
|
||||
}
|
||||
|
||||
export const spi_write = function (_, generator) {
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
|
||||
return ["spi.write(" + data + ")", generator.ORDER_ATOMIC];
|
||||
}
|
||||
@@ -0,0 +1,279 @@
|
||||
export const microbit_display_clear = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var code = 'display.clear()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const monitor_get_pixel = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);
|
||||
var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);
|
||||
var code = 'display.get_pixel(int(' + value_x + '), int(' + value_y + '))';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const microbit_display_set_pixel = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);
|
||||
var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);
|
||||
var value_value = generator.valueToCode(block, 'value', generator.ORDER_ATOMIC);
|
||||
var code = 'display.set_pixel(int(' + value_x + '), int(' + value_y + '), ' + value_value + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const monitor_bright_point = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);
|
||||
var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);
|
||||
var brightness = generator.valueToCode(this, 'brightness', generator.ORDER_ASSIGNMENT);
|
||||
var code = 'display.set_pixel(int(' + x + '), int(' + y + '), ' + brightness + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const monitor_show_image_or_string = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
|
||||
var code = "display.show(" + data + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const monitor_scroll_string = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
|
||||
var code = "display.scroll(" + data + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const monitor_scroll_string_with_delay = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
|
||||
var delay = generator.valueToCode(this, 'delay', generator.ORDER_ASSIGNMENT);
|
||||
var code = "display.scroll(" + data + ", delay=" + delay + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const microbit_display_show_image = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var value_image = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var code = 'display.show(' + value_image + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const microbit_display_show_default_image = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var dropdown_image = block.getFieldValue('image');
|
||||
var value_image = 'Image.' + dropdown_image;
|
||||
var code = 'display.show(' + value_image + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const microbit_display_show_animation = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var value_images = generator.valueToCode(block, 'images', generator.ORDER_ATOMIC);
|
||||
var number_delay = generator.valueToCode(block, 'delay', generator.ORDER_ATOMIC);
|
||||
var checkbox_wait = block.getFieldValue('wait') == 'TRUE' ? 'True' : 'False';
|
||||
var checkbox_loop = block.getFieldValue('loop') == 'TRUE' ? 'True' : 'False';
|
||||
var checkbox_clear = block.getFieldValue('clear') == 'TRUE' ? 'True' : 'False';
|
||||
var code = 'display.show(' + value_images + ', delay=' + number_delay + ', wait=' + checkbox_wait + ', loop=' + checkbox_loop + ', clear=' + checkbox_clear + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const microbit_display_scroll = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var value_message = generator.valueToCode(block, 'message', generator.ORDER_ATOMIC);
|
||||
var code = 'display.scroll(' + value_message + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const microbit_display_on = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var mode = block.getFieldValue('on_off');
|
||||
var code = 'display.' + mode + '()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// export const microbit_display_off = function(block) {
|
||||
// generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
// var code = 'display.off()\n';
|
||||
// return code;
|
||||
// }
|
||||
|
||||
export const microbit_display_is_on = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var code = 'display.is_on()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const microbit_image_builtins = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var dropdown_image = block.getFieldValue('image');
|
||||
var code = 'Image.' + dropdown_image;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const microbit_image_copy = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var value_image = generator.valueToCode(block, 'image', generator.ORDER_ATOMIC);
|
||||
var code = value_image + '.copy()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const microbit_image_invert = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var value_image = generator.valueToCode(block, 'image', generator.ORDER_ATOMIC);
|
||||
var code = value_image + '.invert()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const microbit_image_create = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var colours = {
|
||||
"#000000": "0",
|
||||
"#440000": "1",
|
||||
"#660000": "2",
|
||||
"#880000": "3",
|
||||
"#aa0000": "4",
|
||||
"#bb0000": "5",
|
||||
"#cc0000": "6",
|
||||
"#dd0000": "7",
|
||||
"#ee0000": "8",
|
||||
"#ff0000": "9"
|
||||
}
|
||||
var colour_00 = colours[block.getFieldValue('00')];
|
||||
var colour_01 = colours[block.getFieldValue('01')];
|
||||
var colour_02 = colours[block.getFieldValue('02')];
|
||||
var colour_03 = colours[block.getFieldValue('03')];
|
||||
var colour_04 = colours[block.getFieldValue('04')];
|
||||
var colour_10 = colours[block.getFieldValue('10')];
|
||||
var colour_11 = colours[block.getFieldValue('11')];
|
||||
var colour_12 = colours[block.getFieldValue('12')];
|
||||
var colour_13 = colours[block.getFieldValue('13')];
|
||||
var colour_14 = colours[block.getFieldValue('14')];
|
||||
var colour_20 = colours[block.getFieldValue('20')];
|
||||
var colour_21 = colours[block.getFieldValue('21')];
|
||||
var colour_22 = colours[block.getFieldValue('22')];
|
||||
var colour_23 = colours[block.getFieldValue('23')];
|
||||
var colour_24 = colours[block.getFieldValue('24')];
|
||||
var colour_30 = colours[block.getFieldValue('30')];
|
||||
var colour_31 = colours[block.getFieldValue('31')];
|
||||
var colour_32 = colours[block.getFieldValue('32')];
|
||||
var colour_33 = colours[block.getFieldValue('33')];
|
||||
var colour_34 = colours[block.getFieldValue('34')];
|
||||
var colour_40 = colours[block.getFieldValue('40')];
|
||||
var colour_41 = colours[block.getFieldValue('41')];
|
||||
var colour_42 = colours[block.getFieldValue('42')];
|
||||
var colour_43 = colours[block.getFieldValue('43')];
|
||||
var colour_44 = colours[block.getFieldValue('44')];
|
||||
var code = 'Image("' + colour_00 + colour_01 + colour_02 + colour_03 + colour_04 + ':' + colour_10 + colour_11 + colour_12 + colour_13 + colour_14 + ':' + colour_20 + colour_21 + colour_22 + colour_23 + colour_24 + ':' + colour_30 + colour_31 + colour_32 + colour_33 + colour_34 + ':' + colour_40 + colour_41 + colour_42 + colour_43 + colour_44 + '")';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
|
||||
export const image_shift = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var op = block.getFieldValue("OP");
|
||||
var image = generator.valueToCode(block, 'img', generator.ORDER_ATOMIC);
|
||||
var value = generator.valueToCode(block, 'val', generator.ORDER_ATOMIC);
|
||||
var code = image + '.shift_' + op + '(' + value + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const image_arithmetic = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var op = block.getFieldValue("OP");
|
||||
var imga = generator.valueToCode(block, 'A', generator.ORDER_ATOMIC);
|
||||
var imgb = generator.valueToCode(block, 'B', generator.ORDER_ATOMIC);
|
||||
if (op == 'INTERSECTION') {
|
||||
var code = imga + '-(' + imga + '-' + imgb + ')';
|
||||
} else {
|
||||
var code = imga + op + imgb;
|
||||
}
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const microbit_display_scroll_string_animation = function (block, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var value_images = generator.valueToCode(block, 'images', generator.ORDER_ATOMIC) || 'hello';
|
||||
var number_delay = generator.valueToCode(block, 'delay', generator.ORDER_ATOMIC);
|
||||
var checkbox_wait = block.getFieldValue('wait') == 'TRUE' ? 'True' : 'False';
|
||||
var checkbox_loop = block.getFieldValue('loop') == 'TRUE' ? 'True' : 'False';
|
||||
var checkbox_clear = block.getFieldValue('clear') == 'TRUE' ? 'True' : 'False';
|
||||
var code = 'display.scroll' + '(' + value_images + ', delay=' + number_delay + ', wait=' + checkbox_wait + ', loop=' + checkbox_loop + ', clear=' + checkbox_clear + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// export const microbit_display_scroll_string = function(block) {
|
||||
// generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
// var value_images = generator.valueToCode(block, 'images', generator.ORDER_MEMBER) || 'hello';
|
||||
// var number_delay = generator.valueToCode(block, 'delay', generator.ORDER_ATOMIC);
|
||||
// var checkbox_wait = block.getFieldValue('wait') == 'TRUE' ? 'True' : 'False';
|
||||
// var checkbox_loop = block.getFieldValue('loop') == 'TRUE' ? 'True' : 'False';
|
||||
// var checkbox_clear = block.getFieldValue('clear') == 'TRUE' ? 'True' : 'False';
|
||||
// var code = 'display.show(' + value_images + ', delay=' + number_delay + ', wait=' + checkbox_wait + ', loop=' + checkbox_loop + ', clear=' + checkbox_clear + ')\n';
|
||||
// return code;
|
||||
// }
|
||||
|
||||
export const group_lcd_print = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_lcd1602'] = 'import lcd1602';
|
||||
var str1 = generator.valueToCode(this, 'TEXT', generator.ORDER_ASSIGNMENT);
|
||||
var str2 = generator.valueToCode(this, 'TEXT2', generator.ORDER_ASSIGNMENT);
|
||||
//generator.setups_['class_LCD1602'] = generator.CLASS_LCD1602_INIT;//python.js
|
||||
var code = 'mylcd.mixly_puts_two_lines(' + str1 + ', ' + str2 + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const group_lcd_init = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_lcd1602'] = 'import lcd1602';
|
||||
var device = generator.valueToCode(this, 'device', generator.ORDER_ASSIGNMENT) || '0x27';
|
||||
//generator.setups_['class_LCD1602'] = generator.CLASS_LCD1602_INIT;//python.js
|
||||
return 'mylcd = lcd1602.LCD1602(' + device + ')\n';
|
||||
}
|
||||
|
||||
export const group_lcd_print2 = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_lcd1602'] = 'import lcd1602';
|
||||
var str = generator.valueToCode(this, 'TEXT', generator.ORDER_ASSIGNMENT) || 'String("")';
|
||||
var row = generator.valueToCode(this, 'row', generator.ORDER_ASSIGNMENT) || '1';
|
||||
var column = generator.valueToCode(this, 'column', generator.ORDER_ASSIGNMENT) || '1';
|
||||
//generator.setups_['class_LCD1602'] = generator.CLASS_LCD1602_INIT;//python.js
|
||||
var code = 'mylcd.mixly_puts(' + str + ', ' + column + ', ' + row + ')\n'
|
||||
return code;
|
||||
}
|
||||
|
||||
export const group_lcd_power = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_lcd1602'] = 'import lcd1602';
|
||||
var dropdown_stat = this.getFieldValue('STAT');
|
||||
var code = 'mylcd.' + dropdown_stat + '\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const lp2i_u8g_draw_4strings = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_oled'] = 'import oled';
|
||||
var value_text_line1 = generator.valueToCode(this, 'Text_line1', generator.ORDER_ASSIGNMENT) || '\'\'';
|
||||
var value_text_line2 = generator.valueToCode(this, 'Text_line2', generator.ORDER_ASSIGNMENT) || '\'\'';
|
||||
var value_text_line3 = generator.valueToCode(this, 'Text_line3', generator.ORDER_ASSIGNMENT) || '\'\'';
|
||||
var value_text_line4 = generator.valueToCode(this, 'Text_line4', generator.ORDER_ASSIGNMENT) || '\'\'';
|
||||
//generator.setups_["class_OLED12864_I2C"] = generator.CLASS_OLED12864_I2C_INIT;
|
||||
return 'mixly_oled_text(' + value_text_line1 + ', ' + value_text_line2 + ', ' + value_text_line3 + ', ' + value_text_line4 + ')\n';
|
||||
}
|
||||
|
||||
export const display_image_size = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var data = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
var size = this.getFieldValue('OP');
|
||||
var code = ["Image." + size + "(" + data + ")", generator.ORDER_ATOMIC];
|
||||
return code;
|
||||
}
|
||||
|
||||
export const display_fill = function (_, generator) {
|
||||
var varName = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_oled'] = 'import oled';
|
||||
var key = this.getFieldValue('key');
|
||||
var code = varName + '.show_fill(' + key + ')\n';
|
||||
return code;
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
export const factory_from_import = function (_, generator) {
|
||||
var path = this.getFieldValue('path');
|
||||
var module = this.getFieldValue('module');
|
||||
generator.definitions_['import_' + path + '_' + module] = 'from ' + path + ' import ' + module;
|
||||
return '';
|
||||
}
|
||||
|
||||
export const factory_import = function (_, generator) {
|
||||
var module = this.getFieldValue('module');
|
||||
generator.definitions_['import_' + module] = 'import ' + module;
|
||||
return '';
|
||||
}
|
||||
|
||||
export const factory_function_noreturn = function (_, generator) {
|
||||
var NAME = this.getFieldValue('NAME');
|
||||
var code = new Array(this.itemCount_);
|
||||
for (var n = 0; n < this.itemCount_; n++) {
|
||||
code[n] = generator.valueToCode(this, 'ADD' + n,
|
||||
generator.ORDER_NONE) || '';
|
||||
}
|
||||
return NAME + '(' + code.join(', ') + ')\n';
|
||||
}
|
||||
|
||||
export const factory_function_return = function (_, generator) {
|
||||
var NAME = this.getFieldValue('NAME');
|
||||
var code = new Array(this.itemCount_);
|
||||
for (var n = 0; n < this.itemCount_; n++) {
|
||||
code[n] = generator.valueToCode(this, 'ADD' + n,
|
||||
generator.ORDER_NONE) || '';
|
||||
}
|
||||
return [NAME + '(' + code.join(', ') + ')', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const factory_declare = function (_, generator) {
|
||||
var TYPE = this.getFieldValue('TYPE');
|
||||
var NAME = this.getFieldValue('NAME');
|
||||
generator.setups_['var_' + TYPE + '_' + NAME] = NAME + ' = ' + TYPE + '()\n';
|
||||
return '';
|
||||
}
|
||||
|
||||
export const factory_callMethod_noreturn = function (_, generator) {
|
||||
var NAME = this.getFieldValue('NAME');
|
||||
var METHOD = this.getFieldValue('METHOD');
|
||||
var code = new Array(this.itemCount_);
|
||||
for (var n = 0; n < this.itemCount_; n++) {
|
||||
code[n] = generator.valueToCode(this, 'ADD' + n,
|
||||
generator.ORDER_NONE) || '';
|
||||
}
|
||||
return NAME + '.' + METHOD + '(' + code.join(', ') + ')\n';
|
||||
}
|
||||
|
||||
export const factory_callMethod_return = function (_, generator) {
|
||||
var NAME = this.getFieldValue('NAME');
|
||||
var METHOD = this.getFieldValue('METHOD');
|
||||
var code = new Array(this.itemCount_);
|
||||
for (var n = 0; n < this.itemCount_; n++) {
|
||||
code[n] = generator.valueToCode(this, 'ADD' + n,
|
||||
generator.ORDER_NONE) || '';
|
||||
}
|
||||
return [NAME + '.' + METHOD + '(' + code.join(', ') + ')', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const factory_block = function () {
|
||||
var VALUE = this.getFieldValue('VALUE');
|
||||
//if(!(VALUE.charAt(VALUE.length-1)==";")){
|
||||
//VALUE=VALUE+';';
|
||||
//}
|
||||
return VALUE + '\n';
|
||||
}
|
||||
|
||||
export const factory_block_return = function (_, generator) {
|
||||
var VALUE = this.getFieldValue('VALUE');
|
||||
return [VALUE, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const factory_block_with_textarea = function () {
|
||||
var VALUE = this.getFieldValue('VALUE');
|
||||
//if(!(VALUE.charAt(VALUE.length-1)==";")){
|
||||
//VALUE=VALUE+';';
|
||||
//}
|
||||
return VALUE + '\n';
|
||||
}
|
||||
|
||||
export const factory_block_return_with_textarea = function (_, generator) {
|
||||
var VALUE = this.getFieldValue('VALUE');
|
||||
return [VALUE, generator.ORDER_ATOMIC];
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
export const game_create_sprite = function (_, generator) {
|
||||
var x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC);
|
||||
var y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC);
|
||||
var code = 'game.createSprite(' + x + ', ' + y + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const game_move_by = function (_, generator) {
|
||||
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
|
||||
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
|
||||
var code = item + '.move(' + data + ');\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const game_delete_var = function (_, generator) {
|
||||
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
|
||||
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
|
||||
var code = item + '.delete();\n';
|
||||
Blockly.isDefiniedItem = 1;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const game_turn_by_direction = function (_, generator) {
|
||||
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
|
||||
var dir = this.getFieldValue('dir');
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
|
||||
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
|
||||
var code = item + '.turn(' + dir + ', ' + data + ');\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const game_change_by = function (_, generator) {
|
||||
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
|
||||
var change_key = this.getFieldValue('change_key');
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
|
||||
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
|
||||
var code = item + '.change(' + change_key + ', ' + data + ');\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const game_set_xy = function (_, generator) {
|
||||
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
|
||||
var change_key = this.getFieldValue('change_key');
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
|
||||
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
|
||||
var code = item + '.set(' + change_key + ', ' + data + ');\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const game_get_xy = function (_, generator) {
|
||||
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
|
||||
var change_key = this.getFieldValue('change_key');
|
||||
var code = item + '.get(' + change_key + ')';
|
||||
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const game_touch_another = function (_, generator) {
|
||||
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
|
||||
var another = generator.valueToCode(this, 'another', generator.ORDER_ATOMIC) || 'null';
|
||||
var code = item + '.isTouching(' + another + ')';
|
||||
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const game_touch_edge = function (_, generator) {
|
||||
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
|
||||
var code = item + '.isTouchingEdge()';
|
||||
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const game_on_edge_and_bounce = function (_, generator) {
|
||||
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
|
||||
var code = item + '.ifOnEdgeBounce();\n';
|
||||
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const game_change_score = function (_, generator) {
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
|
||||
var code = 'game.addScore(' + data + ');\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const game_set_score = function (_, generator) {
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
|
||||
var code = 'game.setScore(' + data + ');\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const game_start_countdown = function (_, generator) {
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
|
||||
var code = 'game.startCountdown(' + data + ');\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const game_get_score = function (_, generator) {
|
||||
return ["game.score()", generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const game_over = function () {
|
||||
return "game.gameOver();\n";
|
||||
}
|
||||
|
||||
export const game_resume = function () {
|
||||
return "game.resume();\n";
|
||||
}
|
||||
|
||||
export const game_pause = function () {
|
||||
return "game.pause();\n";
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
// ok
|
||||
export const inout_highlow = function (_, generator) {
|
||||
// Boolean values HIGH and LOW.
|
||||
var code = (this.getFieldValue('BOOL') == 'HIGH') ? '1' : '0';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
// ok
|
||||
export const inout_digital_write = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);
|
||||
var code = "";
|
||||
// code += 'pins.digitalWritePin(' + dropdown_pin + ',' + dropdown_stat + ')\n'
|
||||
code += 'pin'+ dropdown_pin +'.write_digital('+ dropdown_stat +')\n'
|
||||
return code;
|
||||
}
|
||||
|
||||
// ok
|
||||
export const inout_digital_read = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var code = "";
|
||||
code = 'pin' + dropdown_pin + '.read_digital()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
//ok
|
||||
export const inout_analog_write = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
//var dropdown_stat = this.getFieldValue('STAT');
|
||||
var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);
|
||||
//generator.setups_['setup_output'+dropdown_pin] = 'pinMode('+dropdown_pin+', OUTPUT);';
|
||||
var code = 'pin' + dropdown_pin + '.write_analog(' + value_num + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
//ok
|
||||
export const inout_analog_write_set = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);
|
||||
var key = this.getFieldValue('key');
|
||||
var code = 'pin' + dropdown_pin + '.set_analog_'+ key +'(' + value_num + ')\n';
|
||||
//var code = 'pin' + dropdown_pin + '.set_analog_period(' + value_num + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// ok
|
||||
export const inout_analog_read = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
//generator.setups_['setup_input_'+dropdown_pin] = 'pinMode('+dropdown_pin+', INPUT);';
|
||||
var code = 'pin' + dropdown_pin + '.read_analog()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
// ok
|
||||
export const sensor_pin_pressed = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var pin = generator.valueToCode(this, 'pin', generator.ORDER_ATOMIC);
|
||||
var code = 'pin'+ pin + '.is_touched()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
export const pins_digital = function (_, generator) {
|
||||
var code = this.getFieldValue('PIN');
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const pins_analog = pins_digital;
|
||||
export const pins_button = pins_digital;
|
||||
export const pins_pwm = pins_digital;
|
||||
export const pins_interrupt = pins_digital;
|
||||
export const pins_serial = pins_digital;
|
||||
export const pins_builtinimg = pins_digital;
|
||||
export const pins_imglist = pins_digital;
|
||||
export const pins_axis = pins_digital;
|
||||
export const pins_brightness = pins_digital;
|
||||
export const pins_tone_notes = pins_digital;
|
||||
export const pins_radio_power = pins_digital;
|
||||
export const pins_radio_datarate = pins_digital;
|
||||
@@ -0,0 +1,304 @@
|
||||
export const sensor_button_is_pressed = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC);
|
||||
var code = btn + '.is_pressed()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const sensor_button_was_pressed = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC);
|
||||
var code = btn + '.was_pressed()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const sensor_button_get_presses = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC);
|
||||
var code = btn + '.get_presses()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const controls_GestureLists = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var gesture = this.getFieldValue('gesture');
|
||||
// generator.definitions_['func_gesture' + gesture] = code;
|
||||
return ['"' + gesture + '"', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const controls_attachGestureInterrupt = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var gesture = this.getFieldValue('gesture');
|
||||
var branch = generator.statementToCode(this, 'DO');
|
||||
var d = branch || generator.PASS;
|
||||
var code = 'if accelerometer.is_gesture("' + gesture + '"):\n' + d;
|
||||
// generator.definitions_['func_gesture' + gesture] = code;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const sensor_current_gesture1 = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var gesture = this.getFieldValue('gesture');
|
||||
|
||||
var code = 'accelerometer.is_gesture("' + gesture + '")';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const sensor_current_gesture2 = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var gesture = this.getFieldValue('gesture');
|
||||
|
||||
var code = 'accelerometer.was_gesture("' + gesture + '")';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const controls_attachGestureInterrupt2 = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var gesture = this.getFieldValue('gesture');
|
||||
var branch = generator.statementToCode(this, 'DO');
|
||||
var d = branch || generator.PASS;
|
||||
var code = 'if accelerometer.was_gesture("' + gesture + '"):\n' + d;
|
||||
// generator.definitions_['func_gesture' + gesture] = code;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const sensor_get_gestures = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var gesture = this.getFieldValue('GES');
|
||||
var a;
|
||||
if (gesture == 'all') {
|
||||
a = 'accelerometer.get_gestures()';
|
||||
}
|
||||
else if (gesture == 'current') {
|
||||
a = 'accelerometer.current_gesture()';
|
||||
}
|
||||
return [a, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const sensor_current_gesture = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
return ['accelerometer.current_gesture()', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const sensor_get_acceleration = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var key = this.getFieldValue('key')
|
||||
var code = 'accelerometer.get_' + key + '()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const sensor_set_acceleration = function () {
|
||||
var key = this.getFieldValue('key')
|
||||
var code = 'input.setAccelerometerRange(' + key + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// undefined?!?!?!?!
|
||||
export const sensor_light_level = function (_, generator) {
|
||||
return ['input.lightLevel()', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const sensor_calibrate_compass = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
return 'compass.calibrate()\n';
|
||||
}
|
||||
|
||||
export const sensor_is_compass_calibrated = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
return ['compass.is_calibrated()', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const sensor_compass_heading = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
return ['compass.heading()', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const sensor_temperature = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
return ['temperature()', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const sensor_field_strength = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var compass = this.getFieldValue('compass');
|
||||
var code = 'compass.' + compass + '()'
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const sensor_rotation = function (_, generator) {
|
||||
var key = this.getFieldValue('key')
|
||||
var code = 'input.rotation(' + key + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const sensor_magnetic = function (_, generator) {
|
||||
var key = this.getFieldValue('key')
|
||||
var code = 'input.magneticForce(' + key + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const sensor_distance_hrsc04 = function (_, generator) {
|
||||
var Trig = this.getFieldValue('Trig');
|
||||
var Echo = this.getFieldValue('Echo');
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_ultrasonic'] = 'import ultrasonic';
|
||||
return ['ultrasonic.distance_cm(t_pin=pin' + Trig + ', e_pin=pin' + Echo + ')', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const sensor_distance_hrsc04_ = function (_, generator) {
|
||||
var Trig = this.getFieldValue('Trig');
|
||||
var Echo = this.getFieldValue('Echo');
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.setups_['class_hrsc04_'] =
|
||||
'class HCSR04:\n' +
|
||||
' def __init__(self, tpin=pin' + Trig + ', epin=pin' + Echo + ', spin=pin13):\n' +
|
||||
' self.trigger_pin = tpin\n' +
|
||||
' self.echo_pin = epin\n' +
|
||||
' self.sclk_pin = spin\n' +
|
||||
'\n' +
|
||||
' def distance_mm(self):\n' +
|
||||
' spi.init(baudrate=125000, sclk=self.sclk_pin,\n' +
|
||||
' mosi=self.trigger_pin, miso=self.echo_pin)\n' +
|
||||
' pre = 0\n' +
|
||||
' post = 0\n' +
|
||||
' k = -1\n' +
|
||||
' length = 500\n' +
|
||||
' resp = bytearray(length)\n' +
|
||||
' resp[0] = 0xFF\n' +
|
||||
' spi.write_readinto(resp, resp)\n' +
|
||||
' # find first non zero value\n' +
|
||||
' try:\n' +
|
||||
' i, value = next((ind, v) for ind, v in enumerate(resp) if v)\n' +
|
||||
' except StopIteration:\n' +
|
||||
' i = -1\n' +
|
||||
' if i > 0:\n' +
|
||||
' pre = bin(value).count("1")\n' +
|
||||
' # find first non full high value afterwards\n' +
|
||||
' try:\n' +
|
||||
' k, value = next((ind, v)\n' +
|
||||
' for ind, v in enumerate(resp[i:length - 2]) if resp[i + ind + 1] == 0)\n' +
|
||||
' post = bin(value).count("1") if k else 0\n' +
|
||||
' k = k + i\n' +
|
||||
' except StopIteration:\n' +
|
||||
' i = -1\n' +
|
||||
' dist= -1 if i < 0 else round((pre + (k - i) * 8. + post) * 8 * 0.172)\n' +
|
||||
' return dist\n' +
|
||||
'\n' +
|
||||
' def distance_cm(self):\n' +
|
||||
' return self.distance_mm() / 10.0\n' +
|
||||
'\n' +
|
||||
'sonar=HCSR04()\n' +
|
||||
'\n'
|
||||
return ['sonar.distance_cm()', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const DS1307_init = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_RTC'] = 'from RTC import *';
|
||||
//var RTCName = this.getFieldValue('RTCName');
|
||||
//generator.definitions_['include_Mixly'] = '#include "Mixly.h"';
|
||||
//generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT;
|
||||
//generator.definitions_['DS1307'+RTCName] = 'DS1307 ' + RTCName + '('+SDA+','+SCL+');';
|
||||
//return 'DS1307' + '('+SDA+','+SCL+')\n';
|
||||
}
|
||||
|
||||
export const RTC_get_time = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_RTC'] = 'from RTC import *';
|
||||
//var RTCName = this.getFieldValue('RTCName');
|
||||
var timeType = this.getFieldValue('TIME_TYPE');
|
||||
//generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT;
|
||||
|
||||
switch (timeType) {
|
||||
//
|
||||
case "Year":
|
||||
var code = 'ds.' + timeType + '()';
|
||||
return [code, generator.ORDER_ASSIGNMENT];
|
||||
case "Month":
|
||||
var code = 'ds.' + timeType + '()';
|
||||
return [code, generator.ORDER_ASSIGNMENT];
|
||||
case "Day":
|
||||
var code = 'ds.' + timeType + '()';
|
||||
return [code, generator.ORDER_ASSIGNMENT];
|
||||
case "Hour":
|
||||
var code = 'ds.' + timeType + '()';
|
||||
return [code, generator.ORDER_ASSIGNMENT];
|
||||
case "Minute":
|
||||
var code = 'ds.' + timeType + '()';
|
||||
return [code, generator.ORDER_ASSIGNMENT];
|
||||
case "Second":
|
||||
var code = 'ds.' + timeType + '()';
|
||||
return [code, generator.ORDER_ASSIGNMENT];
|
||||
case "Week":
|
||||
var code = 'ds.' + timeType + '()';
|
||||
return [code, generator.ORDER_ASSIGNMENT];
|
||||
case "Mix1":
|
||||
var code = 'ds.get_date()';
|
||||
return [code, generator.ORDER_ASSIGNMENT];
|
||||
case "Mix2":
|
||||
var code = 'ds.get_time()';
|
||||
return [code, generator.ORDER_ASSIGNMENT];
|
||||
}
|
||||
}
|
||||
|
||||
export const RTC_set_time = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_RTC'] = 'from RTC import *';
|
||||
//var RTCName = this.getFieldValue('RTCName');
|
||||
var hour = generator.valueToCode(this, "hour", generator.ORDER_ASSIGNMENT);
|
||||
var minute = generator.valueToCode(this, "minute", generator.ORDER_ASSIGNMENT);
|
||||
var second = generator.valueToCode(this, "second", generator.ORDER_ASSIGNMENT);
|
||||
//generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT;
|
||||
|
||||
var code = 'ds.set_time(' + hour + ', ' + minute + ', ' + second + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const RTC_set_date = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_RTC'] = 'from RTC import *';
|
||||
//var RTCName = this.getFieldValue('RTCName');
|
||||
var year = generator.valueToCode(this, "year", generator.ORDER_ASSIGNMENT);
|
||||
var month = generator.valueToCode(this, "month", generator.ORDER_ASSIGNMENT);
|
||||
var day = generator.valueToCode(this, "day", generator.ORDER_ASSIGNMENT);
|
||||
//generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT;
|
||||
var code = 'ds.set_date(' + year + ', ' + month + ', ' + day + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const sensor_compass_reset = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
return 'compass.clear_calibration()\n';
|
||||
}
|
||||
|
||||
export const sensor_light = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
return ['display.read_light_level()', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const sensor_hrsc04_init = function (_, generator) {
|
||||
var Trig = this.getFieldValue('Trig');
|
||||
var Echo = this.getFieldValue('Echo');
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_ultrasonic'] = 'from ultrasonic import *';
|
||||
return "sonar = HCSR04(tpin=pin" + Trig + ", epin=pin" + Echo + ")\n"
|
||||
}
|
||||
|
||||
export const TCS34725_Get_RGB = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_TCS'] = 'from TCS import *';
|
||||
|
||||
var RGB = this.getFieldValue('TCS34725_COLOR');
|
||||
return ["tcs.getRawRGBData(" + RGB + ")", generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const NTC_TEMP = function (_, generator) {
|
||||
var PIN = this.getFieldValue('PIN');
|
||||
var NominalResistance = generator.valueToCode(this, 'NominalResistance', generator.ORDER_ATOMIC);
|
||||
var betaCoefficient = generator.valueToCode(this, 'betaCoefficient', generator.ORDER_ATOMIC);
|
||||
var seriesResistor = generator.valueToCode(this, 'seriesResistor', generator.ORDER_ATOMIC);
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
generator.definitions_['import_ntc'] = 'import ntc';
|
||||
var code = 'ntc.read(pin' + PIN + ', ' + NominalResistance + ', ' + betaCoefficient + ', ' + seriesResistor + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
export const serial_print = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || '""'
|
||||
var code = "uart.write(str(" + content + "))\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const serial_println = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || '""'
|
||||
var code = "uart.write(str(" + content + ")+'\\r\\n')\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const serial_print_hex = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || '0';
|
||||
var code = "uart.write(str(hex(" + content + ")) + '\\r\\n')\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const serial_receive_data_event = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var char_marker = generator.valueToCode(this, 'char_marker', generator.ORDER_ATOMIC) || ';';
|
||||
var branch = generator.statementToCode(this, 'DO');
|
||||
|
||||
generator.definitions_['func_serial_receive_data_event_' + char_marker.charCodeAt(1)] = "serial.onDataReceived(" + char_marker + ", () => {\n" + branch + "}\n";
|
||||
}
|
||||
|
||||
export const serial_any = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var code = "uart.any()";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const serial_readstr = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var code = "uart.read()";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const serial_readline = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var code = "uart.readline()";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const serial_readstr_until = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var char_marker = this.getFieldValue('char_marker');
|
||||
var code = "serial.readUntil(" + char_marker + ")";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const serial_softserial = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var dropdown_pin1 = generator.valueToCode(this, 'RX', generator.ORDER_ATOMIC);
|
||||
var dropdown_pin2 = generator.valueToCode(this, 'TX', generator.ORDER_ATOMIC);
|
||||
if (!isNaN(parseInt(dropdown_pin1)))
|
||||
dropdown_pin1 = "pin" + dropdown_pin1;
|
||||
if (!isNaN(parseInt(dropdown_pin2)))
|
||||
dropdown_pin2 = "pin" + dropdown_pin2;
|
||||
var baudrate = this.getFieldValue('baudrate');
|
||||
return "uart.init(rx=" + dropdown_pin1 + ", tx=" + dropdown_pin2 + ", baudrate=" + baudrate + ")\n";
|
||||
}
|
||||
|
||||
export const serial_begin = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var baudrate = this.getFieldValue('baudrate');
|
||||
return "uart.init(baudrate=" + baudrate + ")\n";
|
||||
}
|
||||
|
||||
export const IO_input = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""';
|
||||
return ['input(' + str + ')', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const IO_print = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""';
|
||||
var code = "print(" + str + ")\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
export const IO_print_inline = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""';
|
||||
var code = "print(" + str + ',end ="")\n';
|
||||
return code;
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
import { Profile } from 'mixly';
|
||||
|
||||
export const system_run_in_background = function (_, generator) {
|
||||
var branch = generator.statementToCode(this, 'do');
|
||||
return 'control.inBackground(() => {\n' + branch + '})\n';
|
||||
}
|
||||
|
||||
export const system_reset = function () {
|
||||
return 'control.reset()\n';
|
||||
}
|
||||
|
||||
export const system_wait = function (_, generator) {
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC) || Profile.default.serial;
|
||||
return 'control.waitMicros(' + data + ')\n';
|
||||
}
|
||||
|
||||
export const system_raise_event = function (_, generator) {
|
||||
var source = generator.valueToCode(this, 'system_event_bus_source', generator.ORDER_ATOMIC) || Profile.default.serial;
|
||||
var value = generator.valueToCode(this, 'system_event_bus_value', generator.ORDER_ATOMIC) || Profile.default.serial;
|
||||
return 'control.raiseEvent(' + source + ', ' + value + ')\n';
|
||||
}
|
||||
|
||||
export const system_on_event = function (_, generator) {
|
||||
var source = generator.valueToCode(this, 'system_event_bus_source', generator.ORDER_ATOMIC) || Profile.default.serial;
|
||||
var value = generator.valueToCode(this, 'system_event_bus_value', generator.ORDER_ATOMIC) || Profile.default.serial;
|
||||
var branch = generator.statementToCode(this, 'do');
|
||||
return 'control.onEvent(' + source + ', ' + value + ', () => {\n' + branch + ')\n';
|
||||
}
|
||||
|
||||
export const system_timestamp = function (_, generator) {
|
||||
return ['control.eventTimestamp()', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const system_value = function (_, generator) {
|
||||
return ['control.eventValue()', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const system_event_bus_source = function (_, generator) {
|
||||
return [this.getFieldValue('key'), generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const system_event_bus_value = function (_, generator) {
|
||||
return [this.getFieldValue('key'), generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const system_device_name = function (_, generator) {
|
||||
return ['control.deviceName()', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const system_device_serial_number = function (_, generator) {
|
||||
return ['control.deviceSerialNumber()', generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
// ok
|
||||
export const base_delay = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var delay_time = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ATOMIC) || '1000'
|
||||
var code = 'sleep(' + delay_time + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// ok
|
||||
export const Panic_with_status_code = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var status_code = generator.valueToCode(this, 'STATUS_CODE', generator.ORDER_ATOMIC) || '1000'
|
||||
var code = 'panic(' + status_code + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// ok
|
||||
export const controls_millis = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
var code = 'running_time()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
// ok
|
||||
export const controls_end_program = function () {
|
||||
return 'while True:\n pass\n';
|
||||
}
|
||||
|
||||
// ok
|
||||
export const reset = function (_, generator) {
|
||||
generator.definitions_['import_microbit_*'] = 'from microbit import *';
|
||||
return 'reset()\n';
|
||||
}
|
||||
|
||||
export const controls_uname = function (_, generator) {
|
||||
generator.definitions_['import_os'] = 'import os';
|
||||
return ['os.uname()', generator.ORDER_ATOMIC];
|
||||
}
|
||||
Reference in New Issue
Block a user