Files
mixly3/boards/default_src/micropython_nrf51822_microbit/generators/display.js
2024-07-19 10:16:00 +08:00

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;
}