mirror of
https://github.com/ocogeclub/ocoge.git
synced 2024-11-22 07:39:49 +00:00
56 lines
2.2 KiB
JavaScript
56 lines
2.2 KiB
JavaScript
/********* */
|
||
/** BME280 */
|
||
/********* */
|
||
Blockly.Blocks['ugj_bme280'] = {
|
||
init: function () {
|
||
this.appendDummyInput()
|
||
.appendField("BME280(アドレス")
|
||
.appendField(new Blockly.FieldDropdown([["0x76", "0x76"], ["0x77", "0x77"]]), "addr")
|
||
.appendField(")の計測値を取得");
|
||
this.setInputsInline(true);
|
||
this.setPreviousStatement(true, null);
|
||
this.setNextStatement(true, null);
|
||
this.setStyle('sensor_blocks');
|
||
this.setTooltip("環境センサーBME280で、気温(摂氏)、湿度(%)、気圧(hPa)を計測します。計測結果は計測値ブロックで参照します。");
|
||
this.setHelpUrl("");
|
||
}
|
||
};
|
||
Blockly.JavaScript['ugj_bme280'] = function (block) {
|
||
var dropdown_addr = block.getFieldValue('addr');
|
||
Blockly.JavaScript.provideFunction_(
|
||
'require_gpio', [`const _pi = require('@ocoge.club/` + apptool.gpio_backend + `');`]
|
||
);
|
||
let modpath = apptool.path.join(apptool.blocks_sensors_dir, 'bme280', 'BME280x.js');
|
||
Blockly.JavaScript.provideFunction_(
|
||
'require_bme280', [`const _bme280 = require('${modpath}');`]
|
||
);
|
||
var code = `const options = {
|
||
i2cBusNo: ${apptool.i2c_bus},
|
||
i2cAddress: ${dropdown_addr}
|
||
};
|
||
await _bme280.init(options);
|
||
let _thp = await _bme280.readSensorData();
|
||
let _bmedata = [];
|
||
_bmedata[0] = Math.round(_thp.temperature_C * 10) / 10;
|
||
_bmedata[1] = Math.round(_thp.humidity * 10) / 10;
|
||
_bmedata[2] = Math.round(_thp.pressure_hPa);
|
||
await _bme280.cancel();
|
||
`;
|
||
return code;
|
||
};
|
||
Blockly.Blocks['ugj_bme280_data'] = {
|
||
init: function () {
|
||
this.appendDummyInput()
|
||
.appendField(new Blockly.FieldDropdown([["気温", "0"], ["湿度", "1"], ["気圧", "2"]]), "thp");
|
||
this.setInputsInline(true);
|
||
this.setOutput(true, null);
|
||
this.setStyle('sensor_blocks');
|
||
this.setTooltip("BME280 の計測値を返します。");
|
||
this.setHelpUrl("");
|
||
}
|
||
};
|
||
Blockly.JavaScript['ugj_bme280_data'] = function (block) {
|
||
var dropdown_thp = block.getFieldValue('thp');
|
||
var code = `_bmedata[${dropdown_thp}]`;
|
||
return [code, Blockly.JavaScript.ORDER_ATOMIC];
|
||
}; |