UNPKG

@mixly/micropython

Version:
724 lines (658 loc) 37.5 kB
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; }