@mixly/micropython
Version:
适用于mixly的micropython模块
724 lines (658 loc) • 37.5 kB
JavaScript
import { Boards } from 'mixly';
export const display_matrix_use_i2c_init = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC);
var key = this.getFieldValue("key");
var font = '';
if (['mpython', 'mixgo_pe', 'mixgo_nova'].indexOf(version) >= 0) {
font = '0x700000'
} else if (['mixgo_sant'].indexOf(version) >= 0) {
font = '0xE00000'
} else {
font = '0x3A0000'
}
var code;
if (key == '32x12 Matrix') {
generator.definitions_['import_matrix32x12'] = 'import matrix32x12';
code = v + ' = matrix32x12.Matrix(' + iv + ', font_address=' + font + ')\n';
} else if (key == '16x8 Matrix') {
generator.definitions_['import_matrix16x8'] = 'import matrix16x8';
code = v + ' = matrix16x8.Matrix(' + iv + ')\n';
}
return code;
}
export const display_matrix_extern_show_image = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var code = v + ".shows(" + data + ")\n";
return code;
}
export const display_matrix_extern_show_image_or_string_delay = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);
var op = this.getFieldValue('center');
var code = v + ".shows(" + data + ', space=' + space + ', center=' + op + ")\n";
return code;
}
export const display_matrix_extern_show_frame_string = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var code = v + ".frame(" + data + ")\n";
return code;
}
export const display_matrix_extern_show_frame_string_delay = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);
var code = v + ".frame(" + data + ', delay=' + time + ")\n";
return code;
}
export const display_matrix_extern_scroll_string = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var code = v + ".scroll(" + data + ")\n";
return code;
}
export const display_matrix_extern_scroll_string_delay = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);
var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);
var code = v + ".scroll(" + data + ', speed=' + time + ', space=' + space + ")\n";
return code;
}
export const display_matrix_extern_clear = function (block, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var code = v + '.fill(0)\n' + v + '.show()\n';
return code;
}
export const display_matrix_extern_shift = function (a, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var op = a.getFieldValue("OP");
var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC);
var code = v + '.' + op + '(' + value + ')\n';
return code;
}
export const display_matrix_extern_get_pixel = function (block, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);
var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);
var code = v + '.pixel(int(' + value_x + '), int(' + value_y + '))';
return [code, generator.ORDER_ATOMIC];
}
export const display_matrix_extern_bright_point = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);
var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);
var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);
var code = v + '.pixel(int(' + x + '), int(' + y + '), ' + dropdown_stat + ")\n" + v + '.show()\n';
return code;
}
export const display_matrix_extern_get_screen_pixel = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var code = v + '.get_brightness()';
return [code, generator.ORDER_ATOMIC];
}
export const display_matrix_extern_bright_screen = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);
var code = v + '.set_brightness(' + x + ')\n';
return code;
}
export const display_matrix_extern_image_builtins = function (block, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var dropdown_image = block.getFieldValue('image');
var code = v + '.' + dropdown_image;
return [code, generator.ORDER_ATOMIC];
}
export const matrix_extern_image_arithmetic = function (a, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var op = a.getFieldValue("OP");
var imga = generator.valueToCode(a, 'A', generator.ORDER_ATOMIC);
var imgb = generator.valueToCode(a, 'B', generator.ORDER_ATOMIC);
var code = v + '.map_' + op + '(' + imga + ', ' + imgb + ')';
return [code, generator.ORDER_ATOMIC];
}
export const matrix_extern_image_invert = function (a, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var imga = generator.valueToCode(a, 'A', generator.ORDER_ATOMIC);
var code = v + '.map_invert(' + imga + ')';
return [code, generator.ORDER_ATOMIC];
}
//oled
export const display_use_i2c_init = function (_, generator) {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_ssd1306'] = 'import ssd1306';
var i2csub = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC);
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var row = generator.valueToCode(this, 'row', generator.ORDER_ATOMIC);
var column = generator.valueToCode(this, 'column', generator.ORDER_ATOMIC);
var code = sub + " = ssd1306.SSD1306_I2C(" + row + ", " + column + ", " + i2csub + ")\n";
return code;
}
export const display_draw_4strings = function (_, generator) {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_ssd1306'] = 'import ssd1306';
var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
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) || '\'\'';
var code = varName + '.show_str(' + value_text_line1 + ', ' + value_text_line2 + ', ' + value_text_line3 + ', ' + value_text_line4 + ')\n'
return code;
}
export const display_line_arbitrarily = function (_, generator) {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_ssd1306'] = 'import ssd1306';
var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var location_x1 = generator.valueToCode(this, 'x1', generator.ORDER_ATOMIC);
var location_y1 = generator.valueToCode(this, 'y1', generator.ORDER_ATOMIC);
var location_x2 = generator.valueToCode(this, 'x2', generator.ORDER_ATOMIC);
var location_y2 = generator.valueToCode(this, 'y2', generator.ORDER_ATOMIC);
var code = varName + '.show_line(' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', 1)\n';
return code;
}
export const display_rect = function (_, generator) {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_ssd1306'] = 'import ssd1306';
var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var location_x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC);
var location_y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC);
var value_width = generator.valueToCode(this, 'width', generator.ORDER_ATOMIC);
var value_height = generator.valueToCode(this, 'height', generator.ORDER_ATOMIC);
var checkbox_fill = this.getFieldValue("fill") == 'TRUE' ? 'True' : 'False';
var size = this.getFieldValue('OP');
switch (checkbox_fill) {
case "True":
var code = varName + '.show_fill_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ', ' + size + ')\n';
return code;
case "False":
var code = varName + '.show_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ', ' + size + ')\n';
return code;
}
}
export const display_line = function (_, generator) {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_ssd1306'] = 'import ssd1306';
var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var location_x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC);
var location_y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC);
var value_length = generator.valueToCode(this, 'length', generator.ORDER_ATOMIC);
var value_direction = this.getFieldValue("direction");
var code = varName + '.show_' + value_direction + '(' + location_x + ', ' + location_y + ', ' + value_length + ', 1)\n';
return code;
}
export const display_onoff = function (_, generator) {
var code = (this.getFieldValue('ONOFF') == 'ON') ? '1' : '0';
return [code, generator.ORDER_ATOMIC];
}
export const image_shift = function (a, generator) {
generator.definitions_['import_matrix'] = 'import matrix';
var op = a.getFieldValue("OP");
var image = generator.valueToCode(a, 'img', generator.ORDER_ATOMIC);
var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC);
var code = image + '.shift_' + op + '(' + value + ')';
return [code, generator.ORDER_ATOMIC];
}
export const display_fill = function (_, generator) {
var varName = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
generator.definitions_['import_ssd1306'] = 'import ssd1306';
generator.definitions_['import_machine'] = 'import machine';
var key = this.getFieldValue('key');
var code = varName + '.show_fill(' + key + ')\n';
return code;
}
// export const switch = function (_, generator) {
// var code = this.getFieldValue('flag');
// return [code, generator.ORDER_ATOMIC];
// };
export const display_animate = function (_, generator) {
// Boolean values true and false.
var name = this.getFieldValue("ANIMATION");
var code = 'matrix.Image.' + name;
return [code, generator.ORDER_ATOMIC];
}
export const display_circle = function (_, generator) {
var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_ssd1306'] = 'import ssd1306';
var location_x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC);
var location_y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC);
var value_r = generator.valueToCode(this, 'r', generator.ORDER_ATOMIC);
var checkbox_fill = this.getFieldValue("fill") == 'TRUE' ? 'True' : 'False';
var size = this.getFieldValue('OP');
switch (checkbox_fill) {
case "True":
var code = varName + '.show_fill_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\n';
return code;
case "False":
var code = varName + '.show_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\n';
return code;
}
}
export const display_triangle = function (_, generator) {
var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_ssd1306'] = 'import ssd1306';
var location_x0 = generator.valueToCode(this, 'x0', generator.ORDER_ATOMIC);
var location_y0 = generator.valueToCode(this, 'y0', generator.ORDER_ATOMIC);
var location_x1 = generator.valueToCode(this, 'x1', generator.ORDER_ATOMIC);
var location_y1 = generator.valueToCode(this, 'y1', generator.ORDER_ATOMIC);
var location_x2 = generator.valueToCode(this, 'x2', generator.ORDER_ATOMIC);
var location_y2 = generator.valueToCode(this, 'y2', generator.ORDER_ATOMIC);
var checkbox_fill = this.getFieldValue("fill") == 'TRUE' ? 'True' : 'False';
var size = this.getFieldValue('OP');
switch (checkbox_fill) {
case "True":
var code = varName + '.show_fill_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\n';
return code;
case "False":
var code = varName + '.show_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\n';
return code;
}
}
export const display_oled_showBitmap = function (_, generator) {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_ssd1306'] = 'import ssd1306';
var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var location_x = generator.valueToCode(this, 'START_X', generator.ORDER_ATOMIC);
var location_y = generator.valueToCode(this, 'START_Y', generator.ORDER_ATOMIC);
var bmp = generator.valueToCode(this, 'bitmap_name', generator.ORDER_ATOMIC);
var w = generator.valueToCode(this, 'WIDTH', generator.ORDER_ATOMIC);
var h = generator.valueToCode(this, 'HEIGHT', generator.ORDER_ATOMIC);
var code = varName + '.show_bitmap(' + location_x + ', ' + location_y + ', ' + bmp + ',' + w + ',' + h + ')\n';
return code;
}
export const display_oled_drawPixel = function (_, generator) {
generator.definitions_['import_machine'] = 'import machine';
generator.definitions_['import_ssd1306'] = 'import ssd1306';
var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var location_x = generator.valueToCode(this, 'POS_X', generator.ORDER_ATOMIC);
var location_y = generator.valueToCode(this, 'POS_Y', generator.ORDER_ATOMIC);
var code = varName + '.show_pixel(' + location_x + ', ' + location_y + ')\n';
return code;
}
//tm1650
export const display_tm_use_i2c_init = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC);
var key = this.getFieldValue("key");
var code;
if (key == 'TM1650') {
generator.definitions_['import_tm1650'] = 'import tm1650';
code = v + ' = tm1650.' + key + "(" + iv + ')\n';
} else if (key == 'TM1637') {
generator.definitions_['import_tm1637'] = 'import tm1637';
code = v + ' = tm1637.' + key + "(" + iv + ')\n';
}
return code;
}
export const display_tm1650_power = function (_, generator) {
// var type = this.getFieldValue("TYPE");
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var stat = this.getFieldValue("STAT");
var code = v + '.' + stat + "()\n";
return code;
}
export const display_tm1650_show_num = function (_, generator) {
// var type = this.getFieldValue("TYPE");
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var val = generator.valueToCode(this, 'VALUE', generator.ORDER_ATOMIC);
var code = v + ".shownum(" + val + ")\n";
return code;
}
export const display_tm1650_show_dot = function (_, generator) {
// var type = this.getFieldValue("TYPE");
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var n = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC);
var stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);
var code = v + '.showDP(' + n + ", " + stat + ")\n";
return code;
}
export const display_tm1650_set_brightness = function (_, generator) {
// var type = this.getFieldValue("TYPE");
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var val = generator.valueToCode(this, 'VALUE', generator.ORDER_ATOMIC);
var code = v + ".intensity(" + val + ")\n";
return code;
}
export const tft_use_spi_init = function (_, generator) {
generator.definitions_['import_st7789'] = 'import st7789';
var version = Boards.getSelectedBoardKey().split(':')[2]
var font = '';
if (['mpython', 'mixgo_pe', 'mixgo_nova'].indexOf(version) >= 0) {
font = '0x700000'
} else if (['mixgo_sant'].indexOf(version) >= 0) {
font = '0xE00000'
} else {
font = '0x3A0000'
}
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var sv = generator.valueToCode(this, 'SPISUB', generator.ORDER_ATOMIC);
var pv = generator.valueToCode(this, 'PINCS', generator.ORDER_ATOMIC);
var dv = generator.valueToCode(this, 'PINDC', generator.ORDER_ATOMIC);
var w = generator.valueToCode(this, 'WIDTH', generator.ORDER_ATOMIC);
var h = generator.valueToCode(this, 'HEIGHT', generator.ORDER_ATOMIC);
var op = this.getFieldValue('rotate');
var code = v + ' = st7789.ST7789(' + sv + ', ' + w + ', ' + h + ', dc_pin=' + dv + ', cs_pin=' + pv + ', rotation=' + op + ', font_address=' + font + ')\n';
return code;
}
export const tft_show_image_xy = function (_, generator) {
generator.definitions_['import_st7789'] = 'import st7789';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);
var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);
var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
if (color.slice(0, 2) == "0x") {
var code = v + ".image(" + data + ', x=' + x + ', y=' + y + ', size=' + size + ', color=' + color + ")\n";
} else {
const rgbValues = color.match(/\d+/g);
const r = parseInt(rgbValues[0]);
const g = parseInt(rgbValues[1]);
const b = parseInt(rgbValues[2]);
var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0");
var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;
var code = v + ".image(" + data + ', x= ' + x + ',y=' + y + ', size=' + size + ', color=0x' + rgb565.toString(16) + ")\n";
}
return code;
}
export const display_color_seclet = function (_, generator) {
var colour = this.getFieldValue('COLOR');
var code = '0x' + colour.slice(1) + ''
var rgb565 = (code & 0xf80000) >> 8 | (code & 0xfc00) >> 5 | (code & 0xff) >> 3
return ['0x' + rgb565.toString(16), generator.ORDER_ATOMIC];
}
export const tft_show_image_or_string_delay = function (_, generator) {
generator.definitions_['import_st7789'] = 'import st7789';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);
var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);
var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);
var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var op = this.getFieldValue('center');
if (color.slice(0, 2) == "0x") {
var code = v + ".shows(" + data + ', x=' + x + ', y=' + y + ', size=' + size + ', space=' + space + ', center=' + op + ', color=' + color + ")\n";
} else {
const rgbValues = color.match(/\d+/g);
const r = parseInt(rgbValues[0]);
const g = parseInt(rgbValues[1]);
const b = parseInt(rgbValues[2]);
var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0");
var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;
var code = v + ".shows(" + data + ', x=' + x + ', y=' + y + ', size=' + size + ', space=' + space + ', center=' + op + ', color=0x' + rgb565.toString(16) + ")\n";
}
return code;
}
export const tft_show_frame_string_delay = function (_, generator) {
generator.definitions_['import_st7789'] = 'import st7789';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);
var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
if (color.slice(0, 2) == "0x") {
var code = v + ".frame(" + data + ', size=' + size + ', delay=' + time + ', color=' + color + ")\n";
} else {
const rgbValues = color.match(/\d+/g);
const r = parseInt(rgbValues[0]);
const g = parseInt(rgbValues[1]);
const b = parseInt(rgbValues[2]);
var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0");
var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;
var code = v + ".frame(" + data + ', size=' + size + ', delay=' + time + ', color=0x' + rgb565.toString(16) + ")\n";
}
return code;
}
export const tft_scroll_string_delay = function (_, generator) {
generator.definitions_['import_st7789'] = 'import st7789';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);
var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);
var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);
var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
if (color.slice(0, 2) == "0x") {
var code = v + ".scroll(" + data + ', y=' + y + ', size=' + size + ', speed=' + time + ', space=' + space + ', color=' + color + ")\n";
} else {
const rgbValues = color.match(/\d+/g);
const r = parseInt(rgbValues[0]);
const g = parseInt(rgbValues[1]);
const b = parseInt(rgbValues[2]);
var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0");
var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;
var code = v + ".scroll(" + data + ', y=' + y + ', size=' + size + ', speed=' + time + ', space=' + space + ', color=0x' + rgb565.toString(16) + ")\n";
}
return code;
}
export const tft_fill = function (_, generator) {
generator.definitions_['import_st7789'] = 'import st7789';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var key = this.getFieldValue('key');
var code = v + '.fill(st7789.' + key + ')\n';
return code;
}
export const tft_line_arbitrarily = function (_, generator) {
generator.definitions_['import_st7789'] = 'import st7789';
var varName = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var location_x1 = generator.valueToCode(this, 'x1', generator.ORDER_ATOMIC);
var location_y1 = generator.valueToCode(this, 'y1', generator.ORDER_ATOMIC);
var location_x2 = generator.valueToCode(this, 'x2', generator.ORDER_ATOMIC);
var location_y2 = generator.valueToCode(this, 'y2', generator.ORDER_ATOMIC);
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
if (color.slice(0, 2) == "0x") {
var code = varName + '.line(' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', color=' + color + ')\n';
} else {
const rgbValues = color.match(/\d+/g);
const r = parseInt(rgbValues[0]);
const g = parseInt(rgbValues[1]);
const b = parseInt(rgbValues[2]);
var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0");
var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;
var code = varName + '.line(' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', color=0x' + rgb565.toString(16) + ')\n';
}
return code;
}
export const display_lcd_use_i2c_init = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC);
var key = this.getFieldValue("key");
var addr = generator.valueToCode(this, 'ADDR', generator.ORDER_ATOMIC);
var code;
generator.definitions_['import_i2clcd'] = 'import i2clcd';
code = v + ' = i2clcd.LCD' + "(" + iv + ', lcd_width=' + key + ', i2c_addr=' + addr + ')\n';
return code;
}
export const lcd_show_image_or_string_delay = function (_, generator) {
generator.definitions_['import_i2clcd'] = 'import i2clcd';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);
var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);
var op = this.getFieldValue('center');
var code = v + ".shows(" + data + ', column=' + x + ', line=' + y + ',center = ' + op + ")\n";
return code;
}
export const lcd_print_string = function (_, generator) {
generator.definitions_['import_i2clcd'] = 'import i2clcd';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);
var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);
var delay = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);
var code = v + ".print(" + data + ', column=' + x + ', line=' + y + ', delay=' + delay + ")\n";
return code;
}
export const lcd_backlight = function (_, generator) {
generator.definitions_['import_i2clcd'] = 'import i2clcd';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var key = this.getFieldValue('key');
var code = v + '.backlight(' + key + ')\n';
return code;
}
export const lcd_clear = function (block, generator) {
generator.definitions_['import_i2clcd'] = 'import i2clcd';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var code = v + '.clear()\n';
return code;
}
export const display_oled_use_i2c_init = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC);
var addr = generator.valueToCode(this, 'ADDR', generator.ORDER_ATOMIC);
var m = this.getFieldValue("driver");
var version = Boards.getSelectedBoardKey().split(':')[2]
var font = '';
if (['mpython', 'mixgo_pe', 'mixgo_nova'].indexOf(version) >= 0) {
font = '0x700000'
} else if (['mixgo_sant'].indexOf(version) >= 0) {
font = '0xE00000'
} else {
font = '0x3A0000'
}
var code;
generator.definitions_['import_oled128x64'] = 'import oled128x64';
code = v + ' = oled128x64.OLED' + "(" + iv + ', address=' + addr + ', font_address=' + font + ', types=' + m + ')\n';
return code;
}
export const extern_oled_show_image = function (_, generator) {
generator.definitions_['import_oled128x64'] = 'import oled128x64';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var code = v + ".image(" + data + ")\n";
return code;
}
export const extern_oled_show_image_xy = function (_, generator) {
generator.definitions_['import_oled128x64'] = 'import oled128x64';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);
var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);
var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);
var code = v + ".image(" + data + ', x=' + x + ', y=' + y + ', size=' + size + ")\n";
return code;
}
export const extern_oled_show_string = function (_, generator) {
generator.definitions_['import_oled128x64'] = 'import oled128x64';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var code = v + ".shows(" + data + ")\n";
return code;
}
export const extern_oled_show_image_or_string_delay = function (_, generator) {
generator.definitions_['import_oled128x64'] = 'import oled128x64';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);
var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);
var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);
var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);
var op = this.getFieldValue('center');
var code = v + ".shows(" + data + ', x=' + x + ', y=' + y + ', size=' + size + ', space=' + space + ', center=' + op + ")\n";
return code;
}
export const extern_oled_show_frame_string = function (_, generator) {
generator.definitions_['import_oled128x64'] = 'import oled128x64';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var code = v + ".frame(" + data + ")\n";
return code;
}
export const extern_oled_show_frame_string_delay = function (_, generator) {
generator.definitions_['import_oled128x64'] = 'import oled128x64';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);
var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);
var code = v + ".frame(" + data + ', size=' + size + ', delay=' + time + ")\n";
return code;
}
export const extern_oled_scroll_string = function (_, generator) {
generator.definitions_['import_oled128x64'] = 'import oled128x64';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var code = v + ".scroll(" + data + ")\n";
return code;
}
export const extern_oled_scroll_string_delay = function (_, generator) {
generator.definitions_['import_oled128x64'] = 'import oled128x64';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);
var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);
var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);
var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);
var code = v + ".scroll(" + data + ', y=' + y + ', size=' + size + ', speed=' + time + ', space=' + space + ")\n";
return code;
}
export const extern_oled_clear = function (block, generator) {
generator.definitions_['import_oled128x64'] = 'import oled128x64';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var code = v + '.fill(0)\n' + v + '.show()\n';
return code;
}
export const extern_oled_shift = function (a, generator) {
generator.definitions_['import_oled128x64'] = 'import oled128x64';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var op = a.getFieldValue("OP");
var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC);
var code = v + '.' + op + '(' + value + ')\n';
return code;
}
export const extern_oled_get_pixel = function (block, generator) {
generator.definitions_['import_oled128x64'] = 'import oled128x64';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);
var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);
var code = v + '.pixel(int(' + value_x + '), int(' + value_y + '))';
return [code, generator.ORDER_ATOMIC];
}
export const extern_oled_bright_point = function (_, generator) {
generator.definitions_['import_oled128x64'] = 'import oled128x64';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);
var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);
var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);
var code = v + '.pixel(int(' + x + '), int(' + y + '), ' + dropdown_stat + ")\n" + v + '.show()\n';
return code;
}
export const extern_oled_shape_rect = function (block, generator) {
generator.definitions_['import_oled128x64'] = 'import oled128x64';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);
var y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);
var w = generator.valueToCode(block, 'w', generator.ORDER_ATOMIC);
var h = generator.valueToCode(block, 'h', generator.ORDER_ATOMIC);
var state = block.getFieldValue('state');
var shape = block.getFieldValue('shape');
var code = v + '.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', ' + state + ')\n' + v + '.show()\n';
return code;
}
export const extern_oled_hvline = function (block, generator) { //水平线
generator.definitions_['import_oled128x64'] = 'import oled128x64';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);
var y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);
var var_length = generator.valueToCode(block, 'length', generator.ORDER_ATOMIC);
var state = block.getFieldValue('state');
var hv = block.getFieldValue('dir_h_v');
var code = v + '.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', ' + state + ')\n' + v + '.show()\n';
return code;
}
export const extern_oled_line = function (block, generator) {
generator.definitions_['import_oled128x64'] = 'import oled128x64';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var x1 = generator.valueToCode(block, 'x1', generator.ORDER_ATOMIC);
var y1 = generator.valueToCode(block, 'y1', generator.ORDER_ATOMIC);
var x2 = generator.valueToCode(block, 'x2', generator.ORDER_ATOMIC);
var y2 = generator.valueToCode(block, 'y2', generator.ORDER_ATOMIC);
var state = block.getFieldValue('state');
var code = v + '.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', ' + state + ')\n' + v + '.show()\n';
return code;
}