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