Files
mixly3/boards/default_src/arduino_esp32/blocks/inout.js
2024-07-19 10:16:00 +08:00

125 lines
4.6 KiB
JavaScript

import * as Blockly from 'blockly/core';
import { Profile } from 'mixly';
import { inout_analog_write } from '@mixly/arduino-avr/blocks/inout';
const BASE_HUE = 20//'#ae3838';//40;
export const ledcSetup = {
init: function () {
this.setColour(BASE_HUE);
this.appendValueInput('CHANNEL')
.setCheck(Number)
.appendField("ledc" + Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_CHANNEL);
this.appendValueInput("FREQ", Number)
.appendField(Blockly.Msg.MIXLY_FREQUENCY)
.setCheck(Number);
this.appendValueInput('PWM_RESOLUTION')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_RESOLUTION);
this.appendDummyInput("")
.appendField("bit");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip();
}
};
export const ledcAttachPin = {
init: function () {
this.setColour(BASE_HUE);
this.appendValueInput("PIN", Number)
.appendField("ledc" + Blockly.Msg.MIXLY_ATTATCH + Blockly.Msg.MIXLY_PIN)
.setCheck(Number);
this.appendValueInput('CHANNEL')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_CHANNEL);
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip();
}
};
export const ledcDetachPin = {
init: function () {
this.setColour(BASE_HUE);
this.appendValueInput("PIN", Number)
.appendField("ledc" + Blockly.Msg.MIXLY_DETACH + Blockly.Msg.MIXLY_PIN)
.setCheck(Number);
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip();
}
};
export const ledcWrite = inout_analog_write;
export const inout_touchRead = {
init: function () {
this.setColour(BASE_HUE);
this.appendValueInput("PIN", Number)
.appendField(Blockly.Msg.MIXLY_ESP32_TOUCH)
.appendField(Blockly.Msg.MIXLY_PIN);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_ESP32_MACHINE_VALUE)
this.setOutput(true, Number);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_PIN_PRESSED_TOOLTIP);
}
};
export const touchAttachInterrupt = {
init: function () {
this.setColour(BASE_HUE);
this.appendValueInput("PIN", Number)
.appendField(Blockly.Msg.MIXLY_TOUCHATTACHINTERRUPT_PIN)
.setCheck(Number);
this.appendValueInput("threshold", Number)
.appendField(Blockly.Msg.MIXLY_ESP32_THRESHOLD)
.setCheck(Number);
this.appendDummyInput("");
this.appendStatementInput('DO')
.appendField(Blockly.Msg.MIXLY_DO);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_ATTACHINTERRUPT);
}
};
export const inout_esp32_dac = {
init: function () {
this.appendValueInput("value")
.setCheck(null)
.appendField(Blockly.Msg.inout_esp32_dac)
.appendField(new Blockly.FieldDropdown(Profile.default.dac), "PIN")
.appendField(Blockly.Msg.MIXLY_VALUE2);
this.appendDummyInput();
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(20);
this.setTooltip(Blockly.Msg.inout_esp32_dac_HELP);
this.setHelpUrl("");
}
};
export const esp32_led_pwm = {
init: function () {
this.appendValueInput("PIN")
.setCheck(null)
.appendField(Blockly.Msg.MICROBIT_ACTUATOR_ticks)
.appendField(new Blockly.FieldTextInput("8"), "resolution")
.appendField(Blockly.Msg.MIXLY_FREQUENCY)
.appendField(new Blockly.FieldTextInput("5000"), "freq")
.appendField(Blockly.Msg.MIXLY_CHANNEL)
.appendField(new Blockly.FieldDropdown([["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"], ["8", "8"], ["9", "9"], ["10", "10"], ["11", "11"], ["12", "12"], ["13", "13"], ["14", "14"], ["15", "15"]]), "ledChannel")
.appendField(Blockly.Msg.MIXLY_ANALOGWRITE_PIN);
this.appendValueInput("val")
.setCheck(null)
.appendField(Blockly.Msg.MIXLY_VALUE2);
this.appendDummyInput();
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(20);
this.setTooltip("");
this.setHelpUrl("");
}
};