parent
d4ad3ad915
commit
6f9e4bd79f
@ -514,3 +514,54 @@ Blockly.Blocks["sensebox_soundsensor_dfrobot"] = {
|
||||
this.setHelpUrl(Blockly.Msg.senseBox_soundsensor_dfrobot_helpurl);
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
* Infineon DPS310 Pressure Sensor
|
||||
*
|
||||
*/
|
||||
|
||||
Blockly.Blocks["sensebox_sensor_dps310"] = {
|
||||
init: function () {
|
||||
var dropdownOptions = [
|
||||
[Blockly.Msg.senseBox_pressure, "Pressure"],
|
||||
[Blockly.Msg.senseBox_temp, "Temperature"],
|
||||
[Blockly.Msg.senseBox_gps_alt, "Altitude"],
|
||||
];
|
||||
var dropdown = new Blockly.FieldDropdown(dropdownOptions, function (
|
||||
option
|
||||
) {
|
||||
var input =
|
||||
option === "Pressure" ||
|
||||
option === "Temperature" ||
|
||||
option === "Altitude";
|
||||
this.sourceBlock_.updateShape_(input);
|
||||
});
|
||||
this.appendDummyInput().appendField(Blockly.Msg.senseBox_sensor_dps310);
|
||||
this.appendDummyInput()
|
||||
.setAlign(Blockly.ALIGN_RIGHT)
|
||||
.appendField(Blockly.Msg.senseBox_value)
|
||||
.appendField(dropdown, "NAME");
|
||||
this.setColour(getColour().sensebox);
|
||||
this.setOutput(true, Types.DECIMAL.typeName);
|
||||
this.setTooltip(Blockly.Msg.senseBox_sensor_dps310_tooltip);
|
||||
this.setHelpUrl(Blockly.Msg.senseBox_sensor_dps310_helpurl);
|
||||
this.getField("NAME").setValidator(
|
||||
function (val) {
|
||||
this.updateShape_(val === "Altitude");
|
||||
}.bind(this)
|
||||
);
|
||||
},
|
||||
updateShape_(isAltitude) {
|
||||
if (isAltitude) {
|
||||
if (this.getInput("extraField") == null) {
|
||||
this.appendDummyInput("extraField")
|
||||
.setAlign(Blockly.ALIGN_RIGHT)
|
||||
.appendField(Blockly.Msg.senseBox_pressure_referencePressure)
|
||||
.appendField(new Blockly.FieldTextInput("1013"), "referencePressure")
|
||||
.appendField(Blockly.Msg.senseBox_pressure_referencePressure_dim);
|
||||
}
|
||||
} else {
|
||||
this.removeInput("extraField", true);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
@ -644,3 +644,42 @@ float getSoundValue(){
|
||||
var code = "getSoundValue()";
|
||||
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
||||
};
|
||||
|
||||
/**
|
||||
* Infineon DPS310 Pressure Sensor
|
||||
*
|
||||
*/
|
||||
|
||||
Blockly.Arduino.sensebox_sensor_dps310 = function () {
|
||||
var dropdown_name = this.getFieldValue("NAME");
|
||||
var code = "";
|
||||
var referencePressure = this.getFieldValue("referencePressure");
|
||||
Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include <senseBoxIO.h>";
|
||||
Blockly.Arduino.libraries_[
|
||||
"adafruit_dps310"
|
||||
] = `#include <Adafruit_DPS310.h>`;
|
||||
Blockly.Arduino.definitions_["define_dps"] = "Adafruit_DPS310 dps;";
|
||||
Blockly.Arduino.setupCode_["dps_begin"] = "dps.begin_I2C(0x76);";
|
||||
Blockly.Arduino.setupCode_["dps_configuration"] = `
|
||||
dps.configurePressure(DPS310_64HZ, DPS310_64SAMPLES);
|
||||
dps.configureTemperature(DPS310_64HZ, DPS310_64SAMPLES);
|
||||
`;
|
||||
Blockly.Arduino.loopCodeOnce_["dps_events"] =
|
||||
"sensors_event_t temp_event, pressure_event;";
|
||||
Blockly.Arduino.loopCodeOnce_["dps_getEvents"] =
|
||||
"dps.getEvents(&temp_event, &pressure_event);";
|
||||
switch (dropdown_name) {
|
||||
case "Temperature":
|
||||
code = "temp_event.temperature";
|
||||
break;
|
||||
case "Pressure":
|
||||
code = "pressure_event.pressure";
|
||||
break;
|
||||
case "Altitude":
|
||||
code = "dps.readAltitude(" + referencePressure + ")";
|
||||
break;
|
||||
default:
|
||||
code = "";
|
||||
}
|
||||
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
||||
};
|
||||
|
@ -11,11 +11,20 @@ export const SENSORS = {
|
||||
senseBox_pressure_sensor: "Luftdruck-/Temperatursensor (BMP280)",
|
||||
senseBox_pressure: "Luftdruck in hPa",
|
||||
senseBox_pressure_dimension: "Luftdruck in hPa",
|
||||
senseBox_pressure_tip:
|
||||
senseBox_pressure_tooltip:
|
||||
"Schließe den Sensor an einen der 5 **I2C-Anschlüsse** an. Der Sensor gibt dir den Messwert für den Luftdruck in hPa. Um die korrekte Höhe über NN zu berechnen benötigt der Sensor einen aktuellen Referenzwert.",
|
||||
senseBox_pressure_referencePressure: "Luftdruck auf NN",
|
||||
senseBox_pressure_referencePressure_dim: "hPa",
|
||||
senseBox_pressure_helpurl: "",
|
||||
senseBox_pressure_helpurl:
|
||||
"https://docs.sensebox.de/hardware/sensoren-luftdruck-temperatur/",
|
||||
|
||||
/**
|
||||
* DPS310
|
||||
*/
|
||||
senseBox_sensor_dps310: "Luftdruck-/Temperatursensor (DPS310)",
|
||||
senseBox_sensor_dps310_tooltip:
|
||||
"Schließe den Sensor an einen der 5 **I2C-Anschlüsse** an. Der Sensor gibt dir den Messwert für den Luftdruck in hPa. Um die korrekte Höhe über NN zu berechnen benötigt der Sensor einen aktuellen Referenzwert.",
|
||||
senseBox_sensor_dps310_helpurl: "",
|
||||
|
||||
/**
|
||||
* Mikro
|
||||
|
@ -11,12 +11,19 @@ export const SENSORS = {
|
||||
senseBox_pressure_sensor: "Airpressure/Temperature Sensor (BMP280)",
|
||||
senseBox_pressure: "Airpressure in hPa",
|
||||
senseBox_pressure_dimension: "Airpressure in hPa",
|
||||
senseBox_pressure_tip:
|
||||
senseBox_pressure_tooltip:
|
||||
"Connect the sensor to one of the 5 **I2C ports**. The sensor gives you the measured value for the air pressure in hPa. To calculate the correct altitude above sea level the sensor needs a current reference value.",
|
||||
senseBox_pressure_referencePressure: "Pressure at Sea Level",
|
||||
senseBox_pressure_referencePressure_dim: "hPa",
|
||||
senseBox_pressure_helpurl: "",
|
||||
|
||||
/**
|
||||
* DPS310
|
||||
*/
|
||||
senseBox_sensor_dps310: "Airpressure/Temperature Sensor (DPS310)",
|
||||
senseBox_sensor_dps310_tooltip:
|
||||
"Connect the sensor to one of the 5 **I2C ports**. The sensor gives you the measured value for the air pressure in hPa. To calculate the correct altitude above sea level the sensor needs a current reference value.",
|
||||
|
||||
/**
|
||||
* Mikro
|
||||
*/
|
||||
|
@ -65,6 +65,7 @@ class Toolbox extends React.Component {
|
||||
<Block type="sensebox_sensor_bmx055_accelerometer" />
|
||||
<Block type="sensebox_sensor_sds011" />
|
||||
<Block type="sensebox_sensor_pressure" />
|
||||
<Block type="sensebox_sensor_dps310" />
|
||||
<Block type="sensebox_sensor_bme680_bsec" />
|
||||
<Block type="sensebox_scd30" />
|
||||
<Block type="sensebox_gps" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user