279 lines
14 KiB
JavaScript
279 lines
14 KiB
JavaScript
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;
|
|
} |