板载智能+板载显示修改
This commit is contained in:
@@ -282,6 +282,10 @@ export const SCREEN_SHOW_CAM_GRAPH_SHOOT = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendDummyInput()
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_MICROBIT_Turn_on_display,"display"],
|
||||
[Blockly.Msg.MIXLY_MICROBIT_Turn_off_display,"display_stop"]
|
||||
]),"control")
|
||||
.appendField(Blockly.Msg.MIXlY_SCREEN_SHOW_CAM_SHOOT);
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
@@ -289,17 +293,6 @@ export const SCREEN_SHOW_CAM_GRAPH_SHOOT = {
|
||||
}
|
||||
};
|
||||
|
||||
export const STOP_SCREEN_DISPLAY = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXlY_STOP_SCREEN_DISPLAY);
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setInputsInline(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const AI_CAMERA_INIT = {
|
||||
init: function () {
|
||||
this.setColour(AI_LOCAL_GRAPH_HUE);
|
||||
@@ -311,7 +304,6 @@ export const AI_CAMERA_INIT = {
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_QR_CODE + Blockly.Msg.MIXLY_RECOGNITION, "CODE_DETECTION"],
|
||||
[Blockly.Msg.MIXLY_COLOR_RECOGNTITION, "COLOR_DETECTION"],
|
||||
[Blockly.Msg.MIXLY_EMOTION_DETEECTION, "MOTION_DETECTON"],
|
||||
[Blockly.Msg.MIXLY_CAT_FACE + Blockly.Msg.MIXLY_RECOGNITION, "CAT_FACE_DETECTION"],
|
||||
[Blockly.Msg.MIXLY_FACE_CLASSIFIER, "FACE_DETECTION"],
|
||||
[Blockly.Msg.MIXLY_AipFace, "FACE_RECOGNITION"]
|
||||
|
||||
@@ -299,6 +299,15 @@ export const display_shift = {
|
||||
.setCheck(Number);
|
||||
this.appendDummyInput('')
|
||||
.appendField(Blockly.Msg.DISPLAY_IMAGE_UNIT)
|
||||
var version = Boards.getSelectedBoardKey()
|
||||
if (version == 'micropython:esp32s3:mixgo_nova'||'micropython:esp32s3:mixgo_sant') {
|
||||
this.appendDummyInput()
|
||||
.appendField( Blockly.Msg.MIXLY_synchronize + ':')
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
|
||||
]),"sync");
|
||||
}
|
||||
var thisBlock = this;
|
||||
this.setTooltip(function () {
|
||||
var mode = thisBlock.getFieldValue('OP');
|
||||
@@ -387,6 +396,15 @@ export const display_clear = {
|
||||
this.setColour(DISPLAY_ONBOARD_HUE);
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_MICROBIT_Clear_display);
|
||||
var version = Boards.getSelectedBoardKey()
|
||||
if (version == 'micropython:esp32s3:mixgo_nova'||'micropython:esp32s3:mixgo_sant') {
|
||||
this.appendDummyInput()
|
||||
.appendField( Blockly.Msg.MIXLY_synchronize + ':')
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
|
||||
]),"sync");
|
||||
}
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setInputsInline(true);
|
||||
@@ -1241,6 +1259,14 @@ export const onboard_tft_display_shape_rect = {
|
||||
"name": "VAR",
|
||||
"type": "input_value",
|
||||
//"check": "Number"
|
||||
},
|
||||
{
|
||||
"name": "sync",
|
||||
"options": [
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
|
||||
],
|
||||
"type": "field_dropdown"
|
||||
}
|
||||
],
|
||||
"inputsInline": true,
|
||||
@@ -1288,6 +1314,14 @@ export const onboard_tft_display_hvline = {
|
||||
"name": "VAR",
|
||||
"type": "input_value",
|
||||
//"check": "Number"
|
||||
},
|
||||
{
|
||||
"name": "sync",
|
||||
"options": [
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
|
||||
],
|
||||
"type": "field_dropdown"
|
||||
}
|
||||
],
|
||||
"inputsInline": true,
|
||||
@@ -1331,6 +1365,14 @@ export const onboard_tft_display_line = {
|
||||
"name": "VAR",
|
||||
"type": "input_value",
|
||||
//"check": "Number"
|
||||
},
|
||||
{
|
||||
"name": "sync",
|
||||
"options": [
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
|
||||
],
|
||||
"type": "field_dropdown"
|
||||
}
|
||||
],
|
||||
"inputsInline": true,
|
||||
@@ -1374,6 +1416,15 @@ export const onboard_tft_bright_point = {
|
||||
.appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y);
|
||||
this.appendValueInput('VAR')
|
||||
.appendField(Blockly.Msg.HTML_COLOUR);
|
||||
var version = Boards.getSelectedBoardKey()
|
||||
if (version == 'micropython:esp32s3:mixgo_nova'||'micropython:esp32s3:mixgo_sant') {
|
||||
this.appendDummyInput()
|
||||
.appendField( Blockly.Msg.MIXLY_synchronize + ':')
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
|
||||
]),"sync");
|
||||
}
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setInputsInline(true);
|
||||
@@ -1385,7 +1436,16 @@ export const onboard_tft_fill = {
|
||||
init: function () {
|
||||
this.setColour(DISPLAY_ONBOARD_HUE);
|
||||
this.appendValueInput('VAR')
|
||||
.appendField(Blockly.Msg.MIXLY_SCREEN_FILL)
|
||||
.appendField(Blockly.Msg.MIXLY_SCREEN_FILL);
|
||||
var version = Boards.getSelectedBoardKey()
|
||||
if (version == 'micropython:esp32s3:mixgo_nova'||'micropython:esp32s3:mixgo_sant') {
|
||||
this.appendDummyInput()
|
||||
.appendField( Blockly.Msg.MIXLY_synchronize + ':')
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
|
||||
]),"sync");
|
||||
}
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setInputsInline(true);
|
||||
@@ -1510,6 +1570,14 @@ export const onboard_tft_display_shape_circle = {
|
||||
"name": "VAR",
|
||||
"type": "input_value",
|
||||
//"check": "Number"
|
||||
},
|
||||
{
|
||||
"name": "sync",
|
||||
"options": [
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
|
||||
],
|
||||
"type": "field_dropdown"
|
||||
}
|
||||
],
|
||||
"inputsInline": true,
|
||||
@@ -1554,6 +1622,38 @@ export const nova_draw_pointer = {
|
||||
this.setTooltip(Blockly.Msg.DRAW_POINTER_TOOLTIP);
|
||||
}
|
||||
};
|
||||
|
||||
export const onboard_tft_show_texts = {
|
||||
init: function () {
|
||||
this.setColour(DISPLAY_ONBOARD_HUE);
|
||||
this.appendValueInput('data')
|
||||
.appendField(Blockly.Msg.MIXLY_Display_long_text);
|
||||
this.appendValueInput("x")
|
||||
.setCheck(Number)
|
||||
.appendField('x');
|
||||
this.appendValueInput("y")
|
||||
.setCheck(Number)
|
||||
.appendField('y');
|
||||
this.appendValueInput("size")
|
||||
.setCheck(Number)
|
||||
.appendField(Blockly.Msg.MIXLY_MICROBIT_JS_NUMBER);
|
||||
this.appendValueInput('VAR')
|
||||
.appendField(Blockly.Msg.HTML_COLOUR);
|
||||
var version = Boards.getSelectedBoardKey()
|
||||
if (version == 'micropython:esp32s3:mixgo_nova'||'micropython:esp32s3:mixgo_sant') {
|
||||
this.appendDummyInput()
|
||||
.appendField( Blockly.Msg.MIXLY_synchronize + ':')
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
|
||||
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
|
||||
]),"sync");
|
||||
}
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setInputsInline(true);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @deprecated To be removed in the future
|
||||
*/
|
||||
|
||||
@@ -120,12 +120,8 @@ export const GET_PICTURE_DATA = function (_, generator) {
|
||||
}
|
||||
|
||||
export const SCREEN_SHOW_CAM_GRAPH_SHOOT = function (_, generator) {
|
||||
var code = 'cam.display()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const STOP_SCREEN_DISPLAY = function (_, generator) {
|
||||
var code = 'cam.display_stop()\n';
|
||||
var con = this.getFieldValue('control');
|
||||
var code = 'cam.'+ con +'()\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
@@ -167,11 +163,11 @@ export const GET_CAT_FACE_DETECTION_NUM = function (_, generator) {
|
||||
export const GET_CAT_FACE_DETECTION_LOCATION = function (_, generator) {
|
||||
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var num = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC);
|
||||
var code = sub + ".cat_detection(,'pos',"+ num +')';
|
||||
var code = sub + ".cat_detection('pos',"+ num +')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const GET__FACE_DETECTION_NUM = function (_, generator) {
|
||||
export const GET_FACE_DETECTION_NUM = function (_, generator) {
|
||||
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
|
||||
var code = sub + ".face_detection('len')";
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
|
||||
@@ -257,7 +257,8 @@ export const display_clear = function (block, generator) {
|
||||
var code = 'onboard_oled.fill(0)\n' + 'onboard_oled.show()\n';
|
||||
} else if (version == 'mixgo_nova'||'mixgo_sant') {
|
||||
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
|
||||
var code = 'onboard_tft.fill(0)\n';
|
||||
var s = this.getFieldValue('sync');
|
||||
var code = 'onboard_tft.fill(0,sync='+s+')\n';
|
||||
} else {
|
||||
generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix";
|
||||
var code = 'onboard_matrix.fill(0)\n' + 'onboard_matrix.show()\n';
|
||||
@@ -301,7 +302,8 @@ export const display_shift = function (a, generator) {
|
||||
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
|
||||
var op = a.getFieldValue("OP");
|
||||
var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC);
|
||||
var code = 'onboard_tft.' + op + '(' + value + ')\n';
|
||||
var s = this.getFieldValue('sync');
|
||||
var code = 'onboard_tft.' + op + '(' + value + ',sync='+ s +')\n';
|
||||
} else {
|
||||
generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix";
|
||||
var op = a.getFieldValue("OP");
|
||||
@@ -915,8 +917,9 @@ export const onboard_tft_display_shape_rect = function (block, generator) {
|
||||
var h = generator.valueToCode(block, 'h', generator.ORDER_ATOMIC);
|
||||
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
var shape = block.getFieldValue('shape');
|
||||
var s = this.getFieldValue('sync');
|
||||
if (color.slice(0, 2) == "0x") {
|
||||
var code = 'onboard_tft.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', ' + color + ')\n';
|
||||
var code = 'onboard_tft.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', ' + color + ',sync=' + s +')\n';
|
||||
} else {
|
||||
const rgbValues = color.match(/\d+/g);
|
||||
const r = parseInt(rgbValues[0]);
|
||||
@@ -924,7 +927,7 @@ export const onboard_tft_display_shape_rect = function (block, generator) {
|
||||
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 = 'onboard_tft.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', 0x' + rgb565.toString(16) + ')\n';
|
||||
var code = 'onboard_tft.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', 0x' + rgb565.toString(16) + ',sync=' + s +')\n';
|
||||
}
|
||||
return code;
|
||||
}
|
||||
@@ -937,8 +940,9 @@ export const onboard_tft_display_hvline = function (block, generator) { //水平
|
||||
var var_length = generator.valueToCode(block, 'length', generator.ORDER_ATOMIC);
|
||||
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
var hv = block.getFieldValue('dir_h_v');
|
||||
var s = this.getFieldValue('sync');
|
||||
if (color.slice(0, 2) == "0x") {
|
||||
var code = 'onboard_tft.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', ' + color + ')\n';
|
||||
var code = 'onboard_tft.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', ' + color + ',sync=' + s +')\n';
|
||||
} else {
|
||||
const rgbValues = color.match(/\d+/g);
|
||||
const r = parseInt(rgbValues[0]);
|
||||
@@ -946,7 +950,7 @@ export const onboard_tft_display_hvline = function (block, generator) { //水平
|
||||
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 = 'onboard_tft.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', 0x' + rgb565.toString(16) + ')\n';
|
||||
var code = 'onboard_tft.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', 0x' + rgb565.toString(16) + ',sync=' + s +')\n';
|
||||
}
|
||||
return code;
|
||||
}
|
||||
@@ -959,15 +963,16 @@ export const onboard_tft_display_line = function (block, generator) {
|
||||
var x2 = generator.valueToCode(block, 'x2', generator.ORDER_ATOMIC);
|
||||
var y2 = generator.valueToCode(block, 'y2', generator.ORDER_ATOMIC);
|
||||
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
var s = this.getFieldValue('sync');
|
||||
if (color.slice(0, 2) == "0x") {
|
||||
var code = 'onboard_tft.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', ' + color + ')\n';
|
||||
var code = 'onboard_tft.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', ' + color + ',sync=' + s +')\n';
|
||||
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 = 'onboard_tft.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', 0x' + rgb565.toString(16) + ')\n';
|
||||
var code = 'onboard_tft.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', 0x' + rgb565.toString(16) + ',sync=' + s +')\n';
|
||||
}
|
||||
return code;
|
||||
}
|
||||
@@ -987,8 +992,9 @@ export const onboard_tft_bright_point = function (_, generator) {
|
||||
var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);
|
||||
var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);
|
||||
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
var s = this.getFieldValue('sync');
|
||||
if (color.slice(0, 2) == "0x") {
|
||||
var code = 'onboard_tft.pixel(int(' + x + '), int(' + y + '), ' + color + ")\n";
|
||||
var code = 'onboard_tft.pixel(int(' + x + '), int(' + y + '), ' + color + ',sync='+ s + ")\n";
|
||||
} else {
|
||||
const rgbValues = color.match(/\d+/g);
|
||||
const r = parseInt(rgbValues[0]);
|
||||
@@ -996,7 +1002,7 @@ export const onboard_tft_bright_point = function (_, generator) {
|
||||
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 = 'onboard_tft.pixel(int(' + x + '), int(' + y + '), 0x' + rgb565.toString(16) + ")\n";
|
||||
var code = 'onboard_tft.pixel(int(' + x + '), int(' + y + '), 0x' + rgb565.toString(16) + ',sync='+ s + ")\n";
|
||||
}
|
||||
return code;
|
||||
}
|
||||
@@ -1005,8 +1011,9 @@ export const onboard_tft_fill = function (_, generator) {
|
||||
var version = Boards.getSelectedBoardKey().split(':')[2]
|
||||
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
|
||||
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT);
|
||||
var s = this.getFieldValue('sync');
|
||||
if (color.slice(0, 2) == "0x") {
|
||||
var code = 'onboard_tft.fill(' + color + ')\n';
|
||||
var code = 'onboard_tft.fill(' + color + ',sync=' + s +')\n';
|
||||
} else {
|
||||
const rgbValues = color.match(/\d+/g);
|
||||
const r = parseInt(rgbValues[0]);
|
||||
@@ -1014,7 +1021,7 @@ export const onboard_tft_fill = function (_, generator) {
|
||||
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 = 'onboard_tft.fill(0x' + rgb565.toString(16) + ')\n';
|
||||
var code = 'onboard_tft.fill(0x' + rgb565.toString(16) + ',sync=' + s + ')\n';
|
||||
}
|
||||
return code;
|
||||
}
|
||||
@@ -1095,8 +1102,9 @@ export const onboard_tft_display_shape_circle = function (block, generator) {
|
||||
var R = generator.valueToCode(block, 'r', generator.ORDER_ATOMIC);
|
||||
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
|
||||
var shape = block.getFieldValue('shape');
|
||||
var s = this.getFieldValue('sync');
|
||||
if (color.slice(0, 2) == "0x") {
|
||||
var code = 'onboard_tft.ellipse(' + x + ', ' + y + ', ' + R + ', ' + R + ', ' + color + ', ' + shape + ')\n';
|
||||
var code = 'onboard_tft.ellipse(' + x + ', ' + y + ', ' + R + ', ' + R + ', ' + color + ', ' + shape + ',sync=' + s +')\n';
|
||||
} else {
|
||||
const rgbValues = color.match(/\d+/g);
|
||||
const r = parseInt(rgbValues[0]);
|
||||
@@ -1104,7 +1112,7 @@ export const onboard_tft_display_shape_circle = function (block, generator) {
|
||||
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 = 'onboard_tft.ellipse(' + x + ', ' + y + ', ' + R + ', ' + R + ', 0x' + rgb565.toString(16) + ', ' + shape + ')\n';
|
||||
var code = 'onboard_tft.ellipse(' + x + ', ' + y + ', ' + R + ', ' + R + ', 0x' + rgb565.toString(16) + ', ' + shape + ',sync=' + s +')\n';
|
||||
}
|
||||
return code;
|
||||
}
|
||||
@@ -1143,6 +1151,29 @@ export const nova_draw_pointer = function (_, generator) {
|
||||
return code;
|
||||
}
|
||||
|
||||
export const onboard_tft_show_texts = function (_, generator) {
|
||||
var version = Boards.getSelectedBoardKey().split(':')[2];
|
||||
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
|
||||
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);
|
||||
var s = this.getFieldValue('sync');
|
||||
if (color.slice(0, 2) == "0x") {
|
||||
var code = "onboard_tft.texts(" + data + ', x=' + x + ', y=' + y + ', size=' + size + ', color='+ color +",sync=" + s +")\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 = "onboard_tft.texts(" + data + ', x=' + x + ', y=' + y + ', size=' + size + ', color=0x' + rgb565.toString(16) + ",sync=" + s + ")\n";
|
||||
}
|
||||
return code;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated To be removed in the future
|
||||
*/
|
||||
|
||||
@@ -1911,6 +1911,36 @@
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="onboard_tft_show_texts">
|
||||
<value name="data">
|
||||
<shadow type="text">
|
||||
<field name="TEXT">Mixly</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="x">
|
||||
<shadow type="math_number">
|
||||
<field name="NUM">0</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="y">
|
||||
<shadow type="math_number">
|
||||
<field name="NUM">0</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="size">
|
||||
<shadow type="math_number">
|
||||
<field name="NUM">1</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="VAR">
|
||||
<block type="display_color_seclet">
|
||||
<field name="COLOR">#ffffff</field>
|
||||
</block>
|
||||
<shadow type="tuple_create_with_text_return">
|
||||
<field name="TEXT">255,255,0</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="onboard_tft_show_image_xy_direct" m-show="micropython:esp32s3:mixgo_sant">
|
||||
<value name="x">
|
||||
<shadow type="math_number">
|
||||
@@ -2310,7 +2340,6 @@
|
||||
</block>
|
||||
<block type="GET_PICTURE_DATA"></block>
|
||||
<block type="SCREEN_SHOW_CAM_GRAPH_SHOOT"></block>
|
||||
<block type="STOP_SCREEN_DISPLAY"></block>
|
||||
<block type="AI_CAMERA_INIT">
|
||||
<value name="SUB">
|
||||
<shadow type="variables_get">
|
||||
|
||||
Reference in New Issue
Block a user