@mixly/arduino-avr
Version:
适用于mixly的arduino avr模块
1,136 lines (1,080 loc) • 43.1 kB
JavaScript
import * as Blockly from 'blockly/core';
import { Profile } from 'mixly';
const SENSOR_HUE = 40;
export const gps_init = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_GPS_INIT)
this.appendValueInput("RX", Number)
.appendField("RX#")
.setCheck(Number);
this.appendValueInput("TX", Number)
.appendField("TX#")
.setCheck(Number);
this.appendValueInput("CONTENT", Number)
.appendField(Blockly.Msg.MIXLY_SERIAL_BEGIN)
.setCheck(Number);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_GPS_INIT);
}
};
export const gps_data_available = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_GPS_DATA_AVAILABLE);
this.setOutput(true, Boolean);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_GPS_DATA_AVAILABLE);
}
};
export const gps_data_encode = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_GPS_DATA_ENCODE);
this.setOutput(true, Boolean);
}
};
export const gps_xxx_isValid = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput()
.appendField("GPS")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_GPS_LOCATION, "location"],
[Blockly.Msg.MIXLY_GPS_DATE, "date"],
[Blockly.Msg.MIXLY_GPS_TIME, "time"]
]), "WHAT")
.appendField(Blockly.Msg.MIXLY_GPS_ISVALID);
this.setOutput(true, Boolean);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_GPS_DATA_VAILD);
}
};
export const gps_getData_xxx = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_GPS_GET)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_GPS_LOCATION_LAT, "location.lat"],
[Blockly.Msg.MIXLY_GPS_LOCATION_LNG, "location.lng"],
[Blockly.Msg.MIXLY_GPS_DATE_YEAR, "date.year"],
[Blockly.Msg.MIXLY_GPS_DATE_MONTH, "date.month"],
[Blockly.Msg.MIXLY_GPS_DATE_DAY, "date.day"],
[Blockly.Msg.MIXLY_GPS_TIME_HOUR, "time.hour"],
[Blockly.Msg.MIXLY_GPS_TIME_MINUTE, "time.minute"],
[Blockly.Msg.MIXLY_GPS_TIME_SECOND, "time.second"],
[Blockly.Msg.MIXLY_GPS_TIME_CENTISECOND, "time.centisecond"]
]), "WHAT");
this.setOutput(true, Number);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_GPS_GETDATA.replace('%1', this.getFieldValue('WHAT')));
}
};
export const chaoshengbo2 = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_CHAOSHENGBO);
this.appendDummyInput("")
.appendField('Trig#')
.appendField(new Blockly.FieldDropdown(Profile.default.digital), "Trig")
.appendField('Echo#')
.appendField(new Blockly.FieldDropdown(Profile.default.digital), "Echo");
this.setInputsInline(true);
this.setOutput(true, Number);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_CHAOSHENGBO);
// this.setFieldValue("2","Trig");
// this.setFieldValue("4","Echo");
}
};
//DHT11温湿度传感器
export const DHT = {
init: function () {
var WHAT = [[Blockly.Msg.MIXLY_GETTEMPERATUE, 'temperature'], [Blockly.Msg.MIXLY_GETHUMIDITY, 'humidity']];
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField(new Blockly.FieldDropdown([['DHT11', '11'], ['DHT21', '21'], ['DHT22', '22']]), 'TYPE')
.appendField(Blockly.Msg.MIXLY_PIN)
.appendField(new Blockly.FieldDropdown(Profile.default.digital), "PIN")
.appendField(new Blockly.FieldDropdown(WHAT), "WHAT");
this.setOutput(true, Number);
var thisBlock = this;
this.setTooltip(function () {
var op = thisBlock.getFieldValue('WHAT');
var TOOLTIPS = {
'temperature': Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_GET_TEM,
'humidity': Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_GET_HUM
};
return TOOLTIPS[op];
});
}
};
//lm35温度传感器
export const LM35 = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField("LM35" + Blockly.Msg.MIXLY_TEMP);
this.appendValueInput("PIN", Number)
.appendField(Blockly.Msg.MIXLY_PIN)
.setCheck(Number);
this.setInputsInline(true);
this.setOutput(true, Number);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_LM35);
}
};
//DS18B20温度传感器
export const ds18b20 = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_DS18B20)
.appendField(new Blockly.FieldDropdown(Profile.default.digital), "PIN")
.appendField(Blockly.Msg.MIXLY_GETTEMPERATUE)
.appendField(new Blockly.FieldDropdown(ds18b20.UNIT), "UNIT");
this.setOutput(true, Number);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_DS18);
},
UNIT: [
[Blockly.Msg.MIXLY_DS18B20_C, '0'],
[Blockly.Msg.MIXLY_DS18B20_F, '1']
]
};
//初始化MLX90614红外测温传感器
export const mlx90614_init = {
init: function () {
this.appendValueInput("mlx90614_address")
.setCheck(null)
.appendField(Blockly.Msg.MIXLY_SETUP + " MLX90614" + Blockly.Msg.MLX90614_TYPE)
.appendField(Blockly.Msg.MIXLY_LCD_ADDRESS);
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(40);
this.setTooltip("");
this.setHelpUrl("");
}
};
//MLX90614获取数据
export const mlx90614_get_data = {
init: function () {
this.appendDummyInput()
.appendField("MLX90614" + Blockly.Msg.MLX90614_TYPE)
.appendField(Blockly.Msg.MIXLY_GET)
.appendField(new Blockly.FieldDropdown(mlx90614_get_data.DATA_TYPE), "mlx90614_data");
this.setInputsInline(true);
this.setOutput(true, null);
this.setColour(40);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_MLX90614_GET_DATA);
this.setHelpUrl("");
},
DATA_TYPE: [
[Blockly.Msg.MLX90614_TARGET_OBJECT_TEMP + "(℃)", "readObjectTempC"],
[Blockly.Msg.MLX90614_TARGET_OBJECT_TEMP + "(℉)", "readObjectTempF"],
[Blockly.Msg.MLX90614_AMBIENT_TEMP + "(℃)", "readAmbientTempC"],
[Blockly.Msg.MLX90614_AMBIENT_TEMP + "(℉)", "readAmbientTempF"]
]
};
//DF称重模块
export const weightSensor = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField("Hx711")
.appendField(Blockly.Msg.MIXLY_WEIGHTSENSOR);
this.appendDummyInput("")
.appendField('Dout#')
.appendField(new Blockly.FieldDropdown(Profile.default.digital), "DOUT")
.appendField('SCK#')
.appendField(new Blockly.FieldDropdown(Profile.default.digital), "SCK");
this.appendValueInput("scale")
.setCheck(Number)
.appendField(Blockly.Msg.HX711_scale);
this.setInputsInline(true);
this.setOutput(true, Number);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_WEIGHTSENSOR);
// this.setFieldValue("2","DOUT");
// this.setFieldValue("4","SCK");
}
};
//DS1302 RTC
export const DS1302_init = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_DS1302_INITPIN);
//.appendField(new Blockly.FieldTextInput('myRTC'), 'RTCName');
this.appendValueInput("RST", Number)
.appendField("RST#")
.setCheck(Number);
this.appendValueInput("DAT")
.appendField("DAT#")
.setCheck(Number);
this.appendValueInput("CLK")
.appendField("CLK#")
.setCheck(Number);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_DS1302_INIT);
}
};
//DS1307 RTC
export const DS1307_init = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_RTCINIT);
this.appendDummyInput("")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(new Blockly.FieldDropdown(DS1307_init.RTC_TYPE), 'RTCType');
this.appendDummyInput("")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_PIN);
//.appendField(new Blockly.FieldTextInput('myRTC'), 'RTCName');
this.appendValueInput("SDA")
.appendField("SDA#")
.setCheck(Number);
this.appendValueInput("SCL")
.appendField("SCL#")
.setCheck(Number);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_DS1307_INIT);
},
RTC_TYPE: [['DS1307', 'RtcDS1307'], ['DS3231', 'RtcDS3231']]
};
//传感器-实时时钟块_获取时间
export const RTC_get_time = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField("RTC" + Blockly.Msg.MIXLY_RTCGETTIME);
this.appendDummyInput("")
.setAlign(Blockly.inputs.Align.RIGHT);
//.appendField(new Blockly.FieldTextInput('myRTC'), 'RTCName');
this.appendDummyInput("")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(new Blockly.FieldDropdown(RTC_get_time.RTC_TIME_TYPE), "TIME_TYPE");
this.setInputsInline(true);
this.setOutput(true, Number);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_RTC_GETTIME.replace('%1', this.getFieldValue("TIME_TYPE")));
},
RTC_TIME_TYPE: [
[Blockly.Msg.MIXLY_YEAR, "Year"],
[Blockly.Msg.MIXLY_MONTH, "Month"],
[Blockly.Msg.MIXLY_DAY, "Day"],
[Blockly.Msg.MIXLY_HOUR, "Hour"],
[Blockly.Msg.MIXLY_MINUTE, "Minute"],
[Blockly.Msg.MIXLY_SECOND, "Second"],
[Blockly.Msg.MIXLY_WEEK, "DayOfWeek"]
]
};
// //传感器-实时时钟块_设置时间
export const RTC_time = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendValueInput("hour")
.setCheck(Number);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_HOUR);
this.appendValueInput("minute")
.setCheck(Number);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_MINUTE);
this.appendValueInput("second")
.setCheck(Number);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_SECOND);
this.setInputsInline(true);
this.setOutput(true, null);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_RTC_SETTIME);
}
};
export const RTC_date = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendValueInput("year")
.setCheck(Number);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_YEAR);
this.appendValueInput("month")
.setCheck(Number);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_MONTH);
this.appendValueInput("day")
.setCheck(Number);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_DAY);
this.setInputsInline(true);
this.setOutput(true, null);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_RTC_SETTIME);
}
};
//设置时间
export const RTC_set_time = {
init: function () {
this.appendDummyInput()
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField("RTC" + Blockly.Msg.MIXLY_RTCSETTIME);
this.appendValueInput("date")
.appendField(Blockly.Msg.MIXLY_GPS_DATE);
this.appendValueInput("time")
.appendField(Blockly.Msg.MIXLY_GPS_TIME);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(SENSOR_HUE);
this.setTooltip("");
this.setHelpUrl("");
}
};
//获取烧录时间和日期
export const get_system_date_time = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_GET + " " + Blockly.Msg.MIXLY_SYSTEM)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_GPS_DATE, "DATE"],
[Blockly.Msg.MIXLY_GPS_TIME, "TIME"]
]), "type");
this.setInputsInline(false);
this.setOutput(true, null);
this.setColour(40);
this.setTooltip("");
this.setHelpUrl("");
}
};
//传感器-实时时钟块_设置日期
export const RTC_set_date = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_RTCSETDATE);
// .appendField(new Blockly.FieldTextInput('myRTC'), 'RTCName');
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_RTC_SETDATE);
}
};
export const SHT20 = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField("SHT20" + Blockly.Msg.MIXLY_DHT11_T_H);
this.appendDummyInput("")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(new Blockly.FieldDropdown(SHT20.SHT20_TYPE), "SHT20_TYPE");
this.setInputsInline(true);
this.setOutput(true);
this.setTooltip();
},
SHT20_TYPE: [
[Blockly.Msg.MIXLY_TEMPERATURE, "sht20.readTemperature()"],
[Blockly.Msg.MIXLY_Humidity, "sht20.readHumidity()"],
]
};
//传感器-重力感应块-获取数据
export const ADXL345 = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_ADXL345);
this.appendDummyInput("")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(new Blockly.FieldDropdown(ADXL345.ADXL345_GETAB), "ADXL345_PIN");
this.setInputsInline(true);
this.setOutput(true);
this.setTooltip();
},
ADXL345_GETAB: [
[Blockly.Msg.MixGo_MPU9250_AX, "accel.getAccelerationX()"],
[Blockly.Msg.MixGo_MPU9250_AY, "accel.getAccelerationY()"],
[Blockly.Msg.MixGo_MPU9250_AZ, "accel.getAccelerationZ()"],
[Blockly.Msg.MixGo_MPU9250_AX + "(g)", "accel.getAccelerationX()/256.0"],
[Blockly.Msg.MixGo_MPU9250_AY + "(g)", "accel.getAccelerationY()/256.0"],
[Blockly.Msg.MixGo_MPU9250_AZ + "(g)", "accel.getAccelerationZ()/256.0"],
]
};
var LIS3DHTR_GETDATA = [
[Blockly.Msg.MixGo_MPU9250_AX, "LIS.getAccelerationX()"],
[Blockly.Msg.MixGo_MPU9250_AY, "LIS.getAccelerationY()"],
[Blockly.Msg.MixGo_MPU9250_AZ, "LIS.getAccelerationZ()"],
[Blockly.Msg.MIXLY_TEMPERATURE, "LIS.getTemperature()"],
];
export const LIS3DHTR = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField('LIS3DHTR' + Blockly.Msg.MixGo_MPU9250);
this.appendDummyInput("")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(new Blockly.FieldDropdown(LIS3DHTR_GETDATA), "LIS3DHTR_GETDATA");
this.setInputsInline(true);
this.setOutput(true);
this.setTooltip();
}
};
export const ADXL345_setOffset = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_SETTING)
.appendField('ADXL345')
.appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_OFFSET);
this.appendValueInput("OFFSET")
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_DISPLAY_MATRIX_X, "setOffsetX"],
[Blockly.Msg.MIXLY_DISPLAY_MATRIX_Y, "setOffsetY"],
[Blockly.Msg.MIXLY_Z_AXIS, "setOffsetZ"]
]), "MIXEPI_ADXL345_OFFSET");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
}
};
//传感器-MPU6050-获取数据
export const MPU6050 = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_MPU6050);
this.appendDummyInput("")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_Accel_X, "getAccX()"],
[Blockly.Msg.MIXLY_Accel_Y, "getAccY()"],
[Blockly.Msg.MIXLY_Accel_Z, "getAccZ()"],
[Blockly.Msg.MIXLY_Gyro_X, "getAngleX()"],
[Blockly.Msg.MIXLY_Gyro_Y, "getAngleY()"],
[Blockly.Msg.MIXLY_Gyro_Z, "getAngleZ()"],
[Blockly.Msg.MIXLY_readTempC, "getTemp()"]
]), "MPU6050_TYPE");
this.setInputsInline(true);
this.setOutput(true);
}
};
//传感器-MPU6050-更新数据
export const MPU6050_update = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_MPU6050 + Blockly.Msg.MIXLY_update_data);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
}
};
const Encoder_NO = [
[Blockly.Msg.MIXLY_ENCODER + 1, "1"],
[Blockly.Msg.MIXLY_ENCODER + 2, "2"],
[Blockly.Msg.MIXLY_ENCODER + 3, "3"],
[Blockly.Msg.MIXLY_ENCODER + 4, "4"]
];
//旋转编码器定义
export const encoder_init = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_SETUP)
.appendField(Blockly.Msg.MIXLY_ENCODER);
this.appendDummyInput()
.appendField(new Blockly.FieldDropdown(Encoder_NO), "Encoder_NO");
this.appendDummyInput("")
.appendField('DT')
.appendField(new Blockly
.FieldDropdown(Profile.default.digital), "DT")
.appendField('CLK')
.appendField(new Blockly
.FieldDropdown(Profile.default.digital), "CLK");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
this.setTooltip("");
this.setHelpUrl("");
// this.setFieldValue("2","DT");
// this.setFieldValue("4","CLK");
}
};
//旋转编码器赋值
export const encoder_write = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput()
.appendField(new Blockly.FieldDropdown(Encoder_NO), "Encoder_NO");
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_VALUE2);
this.appendValueInput("value")
.setCheck(Number);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip("");
this.setHelpUrl("");
this.setInputsInline(true);
}
};
//旋转编码器读值
export const encoder_read = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput()
.appendField(new Blockly.FieldDropdown(Encoder_NO), "Encoder_NO");
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_SERIAL_READ);
this.setOutput(true, Number);
this.setTooltip("");
this.setHelpUrl("");
this.setInputsInline(true);
}
};
//旋转编码器定义
export const encoder_init1 = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_SETUP)
.appendField(Blockly.Msg.MIXLY_ENCODER);
this.appendDummyInput()
.appendField(new Blockly.FieldDropdown(Encoder_NO), "Encoder_NO");
this.appendDummyInput("")
.appendField('DT')
.appendField(new Blockly
.FieldDropdown(Profile.default.digital), "DT")
.appendField('CLK')
.appendField(new Blockly
.FieldDropdown(Profile.default.digital), "CLK");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
this.setTooltip("");
this.setHelpUrl("");
// this.setFieldValue("2","DT");
// this.setFieldValue("4","CLK");
}
};
//旋转编码器赋值
export const encoder_write1 = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput()
.appendField(new Blockly.FieldDropdown(Encoder_NO), "Encoder_NO");
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_VALUE2);
this.appendValueInput("value")
.setCheck(Number);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip("");
this.setHelpUrl("");
this.setInputsInline(true);
}
};
//旋转编码器读值
export const encoder_read1 = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput()
.appendField(new Blockly.FieldDropdown(Encoder_NO), "Encoder_NO");
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_SERIAL_READ);
this.setOutput(true, Number);
this.setTooltip("");
this.setHelpUrl("");
this.setInputsInline(true);
}
};
// 旋转编码器定义
export const sensor_encoder_init = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_SETUP)
.appendField(new Blockly.FieldDropdown(Encoder_NO), "TYPE")
.appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE)
.appendField(new Blockly.FieldDropdown([["1", "2"], ["2", "4"]]), "mode");
this.appendValueInput("CLK")
.setCheck(null)
.appendField("CLK#");
this.appendValueInput("DT")
.setCheck(null)
.appendField("DT#");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(SENSOR_HUE);
this.setTooltip("");
this.setHelpUrl("");
}
};
// 旋转编码器读取
export const sensor_encoder_get = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldDropdown(Encoder_NO), "TYPE")
.appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_GPS_LOCATION, "getPosition"],
[Blockly.Msg.MIXLY_MICROBIT_Direction, "getDirection"],
[Blockly.Msg.MIXLY_INCREMENT, "getIncrement"],
[Blockly.Msg.MIXLY_UPPERBOUND, "getUpperBound"],
[Blockly.Msg.MIXLY_LOWERBOUND, "getLowerBound"]
]), "OPERATE_TYPE");
this.setInputsInline(true);
this.setOutput(true, null);
this.setColour(SENSOR_HUE);
this.setTooltip("");
this.setHelpUrl("");
}
};
// 旋转编码器设置
export const sensor_encoder_set = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldDropdown(Encoder_NO), "TYPE");
this.appendValueInput("DATA")
.setCheck(null)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_GPS_LOCATION, "resetPosition"],
[Blockly.Msg.MIXLY_INCREMENT, "setIncrement"],
[Blockly.Msg.MIXLY_UPPERBOUND, "setUpperBound"],
[Blockly.Msg.MIXLY_LOWERBOUND, "setLowerBound"]
]), "OPERATE_TYPE")
.appendField(Blockly.Msg.MIXLY_STAT);
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(SENSOR_HUE);
this.setTooltip("");
this.setHelpUrl("");
}
};
// 旋转编码器事件
export const sensor_encoder_handle = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldDropdown(Encoder_NO), "TYPE")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_ENCODER_CHANGED, "setChangedHandler"],
[Blockly.Msg.MIXLY_ENCODER_LEFT_ROTATION, "setLeftRotationHandler"],
[Blockly.Msg.MIXLY_ENCODER_RIGHT_ROTATION, "setRightRotationHandler"],
[Blockly.Msg.MIXLY_ENCODER_UPPER_OVERFLOW, "setUpperOverflowHandler"],
[Blockly.Msg.MIXLY_ENCODER_LOWER_OVERFLOW, "setLowerOverflowHandler"]
]), "OPERATE_TYPE");
this.appendStatementInput("DO")
.setCheck(null)
.appendField(Blockly.Msg.MIXLY_MSTIMER2_DO);
this.setInputsInline(true);
this.setColour(SENSOR_HUE);
this.setTooltip("");
this.setHelpUrl("");
}
};
//BME280读取
export const BME280_READ = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_SERIAL_READ)
.appendField(new Blockly.FieldDropdown([["BME280", "bme"], ["BMP280", "bmp"]]), 'TYPE');
this.appendValueInput("address")
.appendField(Blockly.Msg.MIXLY_LCD_ADDRESS);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_GET)
.appendField(new Blockly.FieldDependentDropdown(
"TYPE", this.BMX280_VALUE_TYPE, this.BMX280_VALUE_TYPE['bme']), 'BME_TYPE'
);
this.setOutput(true, null);
this.setInputsInline(true);
this.setTooltip("");
this.setHelpUrl("");
},
BMX280_VALUE_TYPE: {
bme: [
[Blockly.Msg.blynk_IOT_IR_TEMP, "readTemperature()"],
[Blockly.Msg.MIXLY_Humidity, "readHumidity()"],
[Blockly.Msg.MIXLY_Altitude, "readPressure()"],
[Blockly.Msg.MIXLY_HEIGHT, "readAltitude(SEALEVELPRESSURE_HPA)"]
],
bmp: [
[Blockly.Msg.blynk_IOT_IR_TEMP, "readTemperature()"],
[Blockly.Msg.MIXLY_Altitude, "readPressure()"],
[Blockly.Msg.MIXLY_HEIGHT, "readAltitude(SEALEVELPRESSURE_HPA)"]
]
}
};
//PS2
export const PS2_init = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.PS2);
this.appendDummyInput("")
.appendField('DAT#')
.appendField(new Blockly.FieldDropdown(Profile.default.digital), "PS2_DAT")
.appendField('CMD#')
.appendField(new Blockly.FieldDropdown(Profile.default.digital), "PS2_CMD")
.appendField('SEL#')
.appendField(new Blockly.FieldDropdown(Profile.default.digital), "PS2_SEL")
.appendField('CLK#')
.appendField(new Blockly.FieldDropdown(Profile.default.digital), "PS2_CLK");
this.appendDummyInput("")
.appendField(Blockly.Msg.PS2_setRumble)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_ON, "true"],
[Blockly.Msg.MIXLY_OFF, "false"]
]), "rumble");
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setFieldValue("2", "PS2_DAT");
this.setFieldValue("4", "PS2_CMD");
this.setFieldValue("5", "PS2_SEL");
this.setFieldValue("12", "PS2_CLK");
}
};
export const PS2_update = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.PS2 + Blockly.Msg.MIXLY_update_data);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
}
};
//
export const PS2_Button = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.PS2_BUTTON)
.appendField(new Blockly.FieldDropdown(PS2_Button.PSBUTTON), "psbt")
.appendField(Blockly.Msg.MIXLY_PULSEIN_STAT)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_BUTTON_HOLD, "Button"],
[Blockly.Msg.MIXLY_BUTTON_PRESSED, "ButtonPressed"],
[Blockly.Msg.MIXLY_BUTTON_RELEASED, "ButtonReleased"],
[Blockly.Msg.MIXLY_CHANGE, "NewButtonState"]
]), "btstate");
this.setOutput(true, Boolean);
this.setTooltip('');
},
PSBUTTON: [
[Blockly.Msg.PS2_TRIANGLE, "PSB_GREEN"],
[Blockly.Msg.PS2_CIRCLE, "PSB_RED"],
[Blockly.Msg.PS2_CROSS, "PSB_BLUE"],
[Blockly.Msg.PS2_SQUARE, "PSB_PINK"],
[Blockly.Msg.PS2_L1, "PSB_L1"],
[Blockly.Msg.PS2_L2, "PSB_L2"],
// ["PSB_L3","PSB_L3"],
[Blockly.Msg.PS2_R1, "PSB_R1"],
[Blockly.Msg.PS2_R2, "PSB_R2"],
// ["PSB_R3","PSB_R3"],
[Blockly.Msg.PS2_UP, "PSB_PAD_UP"],
[Blockly.Msg.PS2_RIGHT, "PSB_PAD_RIGHT"],
[Blockly.Msg.PS2_DOWN, "PSB_PAD_DOWN"],
[Blockly.Msg.PS2_LEFT, "PSB_PAD_LEFT"],
[Blockly.Msg.PS2_SELECT, "PSB_SELECT"],
[Blockly.Msg.PS2_START, "PSB_START"]
]
};
export const PS2_stk = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.PS2_stick)
.appendField(new Blockly.FieldDropdown(PS2_stk.PSSTK), "psstk");
this.setOutput(true, Number);
this.setTooltip('');
},
PSSTK: [
[Blockly.Msg.PS2_RX, "PSS_RX"],
[Blockly.Msg.PS2_RY, "PSS_RY"],
[Blockly.Msg.PS2_LX, "PSS_LX"],
[Blockly.Msg.PS2_LY, "PSS_LY"],
]
};
export const TCS34725_Get_RGB = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.TCS34725_Get_RGB)
.appendField(new Blockly.FieldDropdown(TCS34725_Get_RGB.DF_TCS34725_COLOR), "DF_TCS34725_COLOR");
this.setInputsInline(true);
this.setOutput(true);
},
DF_TCS34725_COLOR: [
[Blockly.Msg.COLOUR_RGB_RED, "tcs34725.getRedToGamma()"],
[Blockly.Msg.COLOUR_RGB_GREEN, "tcs34725.getGreenToGamma()"],
[Blockly.Msg.COLOUR_RGB_BLUE, "tcs34725.getBlueToGamma()"],
]
};
//初始化TCS230颜色传感器
export const tcs230_init = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_SETUP + " TCS230");
this.appendValueInput("tcs230_s0")
.setCheck(null)
.appendField("S0");
this.appendValueInput("tcs230_s1")
.setCheck(null)
.appendField("S1");
this.appendValueInput("tcs230_s2")
.setCheck(null)
.appendField("S2");
this.appendValueInput("tcs230_s3")
.setCheck(null)
.appendField("S3");
this.appendValueInput("tcs230_led")
.setCheck(null)
.appendField("LED");
this.appendValueInput("tcs230_out")
.setCheck(null)
.appendField("OUT");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(SENSOR_HUE);
this.setTooltip("");
this.setHelpUrl("");
}
};
//TCS230颜色传感器 获取RGB值
export const tcs230_Get_RGB = {
init: function () {
this.appendDummyInput()
.appendField("TCS230")
.appendField(Blockly.Msg.MIXLY_GET)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.COLOUR_RGB_RED, "R"],
[Blockly.Msg.COLOUR_RGB_GREEN, "G"],
[Blockly.Msg.COLOUR_RGB_BLUE, "B"]
]), "tcs230_color");
this.setInputsInline(true);
this.setOutput(true, null);
this.setColour(SENSOR_HUE);
this.setTooltip("");
this.setHelpUrl("");
}
};
export const Arduino_keypad_4_4_start = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput()
.setAlign(Blockly.inputs.Align.CENTRE)
.appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_Keypad);
this.appendDummyInput()
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(new Blockly.FieldTextInput("KEYPAD_4_4"), "keypad_name");
this.appendValueInput("keypad_row")
.setCheck(null)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.DATAFRAME_RAW + Blockly.Msg.MIXLY_PIN);
this.appendValueInput("keypad_col")
.setCheck(null)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.DATAFRAME_COLUMN + Blockly.Msg.MIXLY_PIN);
this.appendValueInput("keypad_type")
.setCheck(null)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_Keypad_define);
this.setNextStatement(true, null);
this.setPreviousStatement(true);
this.setTooltip("");
this.setHelpUrl("");
}
};
export const keypad_row_data = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendValueInput("keypad_row_1", Number)
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField("1#");
this.appendValueInput("keypad_row_2", Number)
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField("2#");
this.appendValueInput("keypad_row_3", Number)
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField("3#");
this.appendValueInput("keypad_row_4", Number)
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField("4#");
this.setInputsInline(true);
this.setOutput(true, null);
this.setTooltip("");
this.setHelpUrl("");
}
};
export const keypad_col_data = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendValueInput("keypad_col_1", Number)
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField("1#");
this.appendValueInput("keypad_col_2", Number)
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField("2#");
this.appendValueInput("keypad_col_3", Number)
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField("3#");
this.appendValueInput("keypad_col_4", Number)
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField("4#");
this.setInputsInline(true);
this.setOutput(true, null);
this.setTooltip("");
this.setHelpUrl("");
}
};
export const keypad_type_data = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput()
.setAlign(Blockly.inputs.Align.CENTRE)
.appendField(new Blockly.FieldTextInput("1"), "keypad_1_1")
.appendField(new Blockly.FieldTextInput("2"), "keypad_1_2")
.appendField(new Blockly.FieldTextInput("3"), "keypad_1_3")
.appendField(new Blockly.FieldTextInput("A"), "keypad_1_4");
this.appendDummyInput()
.setAlign(Blockly.inputs.Align.CENTRE)
.appendField(new Blockly.FieldTextInput("4"), "keypad_2_1")
.appendField(new Blockly.FieldTextInput("5"), "keypad_2_2")
.appendField(new Blockly.FieldTextInput("6"), "keypad_2_3")
.appendField(new Blockly.FieldTextInput("B"), "keypad_2_4");
this.appendDummyInput()
.setAlign(Blockly.inputs.Align.CENTRE)
.appendField(new Blockly.FieldTextInput("7"), "keypad_3_1")
.appendField(new Blockly.FieldTextInput("8"), "keypad_3_2")
.appendField(new Blockly.FieldTextInput("9"), "keypad_3_3")
.appendField(new Blockly.FieldTextInput("C"), "keypad_3_4");
this.appendDummyInput()
.setAlign(Blockly.inputs.Align.CENTRE)
.appendField(new Blockly.FieldTextInput("*"), "keypad_4_1")
.appendField(new Blockly.FieldTextInput("0"), "keypad_4_2")
.appendField(new Blockly.FieldTextInput("#"), "keypad_4_3")
.appendField(new Blockly.FieldTextInput("D"), "keypad_4_4");
this.setOutput(true, null);
this.setTooltip("");
this.setHelpUrl("");
}
};
export const get_keypad_num = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldTextInput("KEYPAD_4_4"), "keypad_name")
.appendField(Blockly.Msg.MIXLY_Keypad_GETKEY);
this.setInputsInline(true);
this.setOutput(true, null);
this.setColour(SENSOR_HUE);
this.setTooltip("");
this.setHelpUrl("");
}
};
export const arduino_keypad_event = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_Keypad)
.appendField(new Blockly.FieldTextInput("KEYPAD_4_4"), "keypad_name");
this.appendValueInput("keypad_event_input")
.setCheck(null)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_Keypad_EVENT);
this.appendDummyInput()
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL)
.appendField(new Blockly.FieldTextInput("1000"), "keypad_start_event_delay")
.appendField(Blockly.Msg.MIXLY_MILLIS);
this.appendStatementInput("keypad_event_data")
.setCheck(null)
.appendField(Blockly.Msg.MIXLY_DO);
this.setInputsInline(false);
this.setTooltip("");
this.setHelpUrl("");
}
};
//传感器_重力感应块_获取9轴数据
export const mixgo_MPU9250 = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField("MPU9250" + Blockly.Msg.MixGo_MPU9250);
this.appendDummyInput("")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(new Blockly.FieldDropdown(mixgo_MPU9250.MixGo_MPU9250_GETAB), "MixGo_MPU9250_GETAB");
this.setInputsInline(true);
this.setOutput(true);
this.setTooltip("");
this.setHelpUrl('');
},
MixGo_MPU9250_GETAB: [
[Blockly.Msg.MixGo_MPU9250_AX, "a"],
[Blockly.Msg.MixGo_MPU9250_AY, "b"],
[Blockly.Msg.MixGo_MPU9250_AZ, "c"],
[Blockly.Msg.MixGo_MPU9250_GX, "d"],
[Blockly.Msg.MixGo_MPU9250_GY, "e"],
[Blockly.Msg.MixGo_MPU9250_GZ, "f"],
[Blockly.Msg.MixGo_MPU9250_MX, "g"],
[Blockly.Msg.MixGo_MPU9250_MY, "h"],
[Blockly.Msg.MixGo_MPU9250_MZ, "i"]
]
};
//NTC电阻
export const NTC_TEMP = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField("NTC")
.appendField(Blockly.Msg.MIXLY_TEMP);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_PIN)
.appendField(new Blockly.FieldDropdown(Profile.default.digital), "PIN");
this.appendValueInput("NominalResistance")
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_NominalResistance);
this.appendValueInput("betaCoefficient")
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_betaCoefficient);
this.appendValueInput("seriesResistor")
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_seriesResistor);
this.setInputsInline(false);
this.setOutput(true, Number);
this.setTooltip();
}
};
//AHT20/21温湿度传感器
export const AHT20_21 = {
init: function () {
this.setColour(SENSOR_HUE);
this.appendDummyInput("")
.appendField("AHT20/21" + Blockly.Msg.MIXLY_TEM_HUM)
this.appendDummyInput("")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_TEMPERATURE, "AHT21.GetTemperature()"],
[Blockly.Msg.MIXLY_Humidity, "AHT21.GetHumidity()"],
[Blockly.Msg.MIXLY_DewPoint, "AHT21.GetDewPoint()"]
]), "AHT21_TYPE");
this.setInputsInline(true);
this.setOutput(true);
this.setTooltip();
}
};