Ver01072023
This commit is contained in:
parent
20652daf92
commit
65184855e2
88
src/components/Blockly/blocks/CleVerLab.js
Normal file
88
src/components/Blockly/blocks/CleVerLab.js
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
import Blockly from "blockly";
|
||||||
|
import { getColour } from "../helpers/colour";
|
||||||
|
import * as Types from "../helpers/types";
|
||||||
|
import { selectedBoard } from "../helpers/board";
|
||||||
|
import { FieldGridDropdown } from "@blockly/field-grid-dropdown";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DS18B20 Temperatursonde
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
Blockly.Blocks["CleVerLab_dummy1"] = {
|
||||||
|
init: function () {
|
||||||
|
this.setColour(getColour().cleverlab);
|
||||||
|
this.appendDummyInput()
|
||||||
|
.appendField("tut nichts")
|
||||||
|
this.setOutput(true, Types.NUMBER.typeName);
|
||||||
|
this.data = {name: "empty"};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Blockly.Blocks["CleVerLab_temperature"] = {
|
||||||
|
init: function () {
|
||||||
|
this.setColour(getColour().cleverlab);
|
||||||
|
this.appendDummyInput()
|
||||||
|
.appendField("Temperatur")
|
||||||
|
.appendField("Digital Port:")
|
||||||
|
.appendField(new Blockly.FieldDropdown(selectedBoard().digitalPorts), "DigitalPin");
|
||||||
|
this.setOutput(true, Types.NUMBER.typeName);
|
||||||
|
this.data = {name: "ds18b20"};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* PH Wert
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
Blockly.Blocks["CleVerLab_pH"] = {
|
||||||
|
init: function () {
|
||||||
|
|
||||||
|
this.setColour(getColour().cleverlab);
|
||||||
|
this.appendDummyInput()
|
||||||
|
.appendField("pH Wert")
|
||||||
|
.appendField("Digital Port:")
|
||||||
|
.appendField(new Blockly.FieldDropdown(selectedBoard().digitalPins), "DigitalPin");
|
||||||
|
this.setOutput(true, Types.NUMBER.typeName);
|
||||||
|
this.data = {name: "phoderso"};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
Blockly.Blocks["CleVerLab_cali1"] = {
|
||||||
|
init: function () {
|
||||||
|
this.appendDummyInput()
|
||||||
|
.appendField("Kalibriere pH Sensor");
|
||||||
|
this.appendValueInput("VAR1", "Number")
|
||||||
|
.appendField("Referenzlösung pH 4.00 =")
|
||||||
|
.setAlign(Blockly.ALIGN_RIGHT);
|
||||||
|
this.appendValueInput("VAR2", "Number2")
|
||||||
|
.appendField("Referenzlösung pH 7.00 =")
|
||||||
|
.setAlign(Blockly.ALIGN_RIGHT);
|
||||||
|
this.setPreviousStatement(true, null);
|
||||||
|
this.setNextStatement(true, null);
|
||||||
|
this.setColour(getColour().cleverlab);
|
||||||
|
this.setOutput(true, Types.NUMBER.typeName);
|
||||||
|
this.data = {name: "dsasda"};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pump
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
Blockly.Blocks['CleVerLab_pump'] = {
|
||||||
|
init: function() {
|
||||||
|
this.setColour(getColour().cleverlab);
|
||||||
|
var dropdown = new Blockly.FieldDropdown([
|
||||||
|
[ 'START','HIGH'],
|
||||||
|
[ 'STOPP','LOW']
|
||||||
|
]);
|
||||||
|
this.appendDummyInput()
|
||||||
|
.appendField(dropdown, "Mode")
|
||||||
|
.appendField(" Pumpe ")
|
||||||
|
.appendField(new Blockly.FieldDropdown(selectedBoard().digitalPins), "DigitalPin");
|
||||||
|
this.setPreviousStatement(true, null);
|
||||||
|
this.setNextStatement(true, null);
|
||||||
|
//this.setOutput(true, "Number");
|
||||||
|
this.setTooltip('');
|
||||||
|
this.setHelpUrl('');
|
||||||
|
}
|
||||||
|
};
|
@ -26,5 +26,6 @@ import "./variables";
|
|||||||
import "./lists";
|
import "./lists";
|
||||||
import "./watchdog";
|
import "./watchdog";
|
||||||
import "./webserver";
|
import "./webserver";
|
||||||
|
import "./CleVerLab"
|
||||||
|
|
||||||
import "../helpers/types";
|
import "../helpers/types";
|
||||||
|
61
src/components/Blockly/generator/CleVerLab.js
Normal file
61
src/components/Blockly/generator/CleVerLab.js
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
import Blockly from "blockly";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* starte/stoppe Pumpe
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
Blockly.Arduino.CleVerLab_pump = function (block) {
|
||||||
|
var pin = block.getFieldValue('DigitalPin');
|
||||||
|
var state = block.getFieldValue("Mode");
|
||||||
|
Blockly['Arduino'].setupCode_['pinMode'] = 'pinMode(' + pin + ', OUTPUT);';
|
||||||
|
var code = 'digitalWrite(' + pin + ', ' + state + ');\n';
|
||||||
|
return code;
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* PH wert
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
Blockly.Arduino.CleVerLab_temperature = function () {
|
||||||
|
var dropdown_pin = this.getFieldValue("DigitalPort");
|
||||||
|
Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include <senseBoxIO.h>";
|
||||||
|
Blockly.Arduino.libraries_["library_oneWire"] =
|
||||||
|
"#include <OneWire.h> // http://librarymanager/All#OneWire";
|
||||||
|
Blockly.Arduino.libraries_["library_oneDallasTemperature"] =
|
||||||
|
"#include <DallasTemperature.h> // http://librarymanager/All#DallasTemperature";
|
||||||
|
Blockly.Arduino.definitions_["define_OneWire"] =
|
||||||
|
"#define ONE_WIRE_BUS " +
|
||||||
|
dropdown_pin +
|
||||||
|
"\nOneWire oneWire(ONE_WIRE_BUS);\nDallasTemperature sensors(&oneWire);";
|
||||||
|
Blockly.Arduino.setupCode_["sensebox_oneWireSetup"] = "sensors.begin();";
|
||||||
|
Blockly.Arduino.codeFunctions_["sensebox_requestTemp"] =
|
||||||
|
"float getWaterTemp(){\nsensors.requestTemperatures();\nsensors.getTempCByIndex(0);\n}";
|
||||||
|
var code = "getWaterTemp()";
|
||||||
|
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
||||||
|
};
|
||||||
|
Blockly.Arduino.CleVerLab_pH = function () {
|
||||||
|
var dropdown_pin = this.getFieldValue("DigitalPin");
|
||||||
|
Blockly.Arduino.definitions_["define_pHgetter"] =
|
||||||
|
"#define SensorPin " + dropdown_pin +"\n#define samplingInterval 20\n#define printInterval 800\n#define ArrayLenth 40 //times of collection\nint pHArray[ArrayLenth]; //Store the average value of the sensor feedback\nint pHArrayIndex=0;\nfloat slope = 1.00;\nfloat b =0.00;";
|
||||||
|
Blockly.Arduino.codeFunctions_["sensebox_requestpH"] =
|
||||||
|
"float getpH(){\nstatic unsigned long samplingTime = millis();\nstatic unsigned long printTime = millis();\nstatic float pHValue,voltage;\n//nif(millis()-samplingTime > samplingInterval){\n//pHArray[pHArrayIndex++]=analogRead(SensorPin);\nfor (int i = 1; i <= 10; i += 1) {\nvoltage = voltage + analogRead(SensorPin);\n}\n voltage = (voltage / 10)*5.0/1024; \nsamplingTime=millis();\n\nreturn pHValue = 3.5*voltage*slope+b;\n}\n";
|
||||||
|
Blockly.Arduino.codeFunctions_["avergearraypH"] =
|
||||||
|
"double avergearray(int* arr, int number) {\n int i;\n int max, min;\n double avg;\n long amount = 0;\n if (number <= 0) {\n return 0;\n }\n if (number < 5) {\n for (i = 0; i < number; i++) {\n amount += arr[i];\n }\n avg = amount / number;\n return avg;\n }\n else {\n if (arr[0] < arr[1]) {\n min = arr[0];\n max = arr[1];\n }\n else {\n min = arr[1];\n max = arr[0];\n }\n for (i = 2; i < number; i++) {\n if (arr[i] < min) {\n amount += min;\n min = arr[i];\n }\n else {\n if (arr[i] > max) {\n amount += max;\n max = arr[i];\n }\n else {\n amount += arr[i];\n }\n }\n }\n avg = (double)amount / (number - 2);\n }\n return avg;\n}";
|
||||||
|
var code = "getpH()";
|
||||||
|
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
||||||
|
};
|
||||||
|
|
||||||
|
Blockly.Arduino.CleVerLab_cali1 = function () {
|
||||||
|
var var1 = Blockly.Arduino.valueToCode(this, 'VAR1', Blockly.Arduino.ORDER_ATOMIC) || "4.00";
|
||||||
|
var var2 = Blockly.Arduino.valueToCode(this, 'VAR2', Blockly.Arduino.ORDER_ATOMIC) || "7.00";
|
||||||
|
//var var1 = this.getFieldValue("VAR1");
|
||||||
|
//var var2 = this.getFieldValue("VAR2");
|
||||||
|
Blockly.Arduino.definitions_["define_pHKali"] = "#define pH4 4.00\n#define pH7 7.00\nfloat pH4is = "+ var1+";\nfloat pH7is = "+ var2 +";";
|
||||||
|
Blockly.Arduino.setupCode_["asdsadsa"] ="slope = (2.00-(4.00/3.50))/(pH7is/3.50 - pH4is/3.50);\n b = 7 - (pH7is * slope);";
|
||||||
|
var code = "0";
|
||||||
|
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -27,3 +27,4 @@ import "./variables";
|
|||||||
import "./lists";
|
import "./lists";
|
||||||
import "./watchdog";
|
import "./watchdog";
|
||||||
import "./webserver";
|
import "./webserver";
|
||||||
|
import "./CleVerLab"
|
@ -7,7 +7,6 @@ import * as Blockly from "blockly/core";
|
|||||||
* @return {string} Completed code.
|
* @return {string} Completed code.
|
||||||
*/
|
*/
|
||||||
Blockly.Arduino["arduino_functions"] = function (block) {
|
Blockly.Arduino["arduino_functions"] = function (block) {
|
||||||
Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include <senseBoxIO.h>";
|
|
||||||
// Edited version of Blockly.Generator.prototype.statementToCode
|
// Edited version of Blockly.Generator.prototype.statementToCode
|
||||||
function statementToCodeNoTab(block, name) {
|
function statementToCodeNoTab(block, name) {
|
||||||
var targetBlock = block.getInputTargetBlock(name);
|
var targetBlock = block.getInputTargetBlock(name);
|
||||||
|
@ -231,15 +231,15 @@ Blockly.Arduino.sensebox_sensor_bme680_bsec = function () {
|
|||||||
Blockly.Arduino.functionNames_["checkIaqSensorStatus"] = `
|
Blockly.Arduino.functionNames_["checkIaqSensorStatus"] = `
|
||||||
void checkIaqSensorStatus(void)
|
void checkIaqSensorStatus(void)
|
||||||
{
|
{
|
||||||
if (iaqSensor.bsecStatus != BSEC_OK) {
|
if (iaqSensor.status != BSEC_OK) {
|
||||||
if (iaqSensor.bsecStatus < BSEC_OK) {
|
if (iaqSensor.status < BSEC_OK) {
|
||||||
for (;;)
|
for (;;)
|
||||||
errLeds(); /* Halt in case of failure */
|
errLeds(); /* Halt in case of failure */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iaqSensor.bme68xStatus != BME68X_OK) {
|
if (iaqSensor.bme680Status != BME680_OK) {
|
||||||
if (iaqSensor.bme68xStatus < BME68X_OK) {
|
if (iaqSensor.bme680Status < BME680_OK) {
|
||||||
for (;;)
|
for (;;)
|
||||||
errLeds(); /* Halt in case of failure */
|
errLeds(); /* Halt in case of failure */
|
||||||
}
|
}
|
||||||
@ -258,29 +258,25 @@ Blockly.Arduino.sensebox_sensor_bme680_bsec = function () {
|
|||||||
//Setup Code
|
//Setup Code
|
||||||
Blockly.Arduino.setupCode_["Wire.begin"] = "Wire.begin();";
|
Blockly.Arduino.setupCode_["Wire.begin"] = "Wire.begin();";
|
||||||
Blockly.Arduino.setupCode_["iaqSensor.begin"] =
|
Blockly.Arduino.setupCode_["iaqSensor.begin"] =
|
||||||
"iaqSensor.begin(BME68X_I2C_ADDR_LOW, Wire);";
|
"iaqSensor.begin(BME680_I2C_ADDR_PRIMARY, Wire);";
|
||||||
Blockly.Arduino.setupCode_["checkIaqSensorStatus"] =
|
Blockly.Arduino.setupCode_["checkIaqSensorStatus"] =
|
||||||
"checkIaqSensorStatus();";
|
"checkIaqSensorStatus();";
|
||||||
Blockly.Arduino.setupCode_["bsec_sensorlist"] = `
|
Blockly.Arduino.setupCode_["bsec_sensorlist"] = `
|
||||||
bsec_virtual_sensor_t sensorList[13] = {
|
bsec_virtual_sensor_t sensorList[10] = {
|
||||||
BSEC_OUTPUT_IAQ,
|
|
||||||
BSEC_OUTPUT_STATIC_IAQ,
|
|
||||||
BSEC_OUTPUT_CO2_EQUIVALENT,
|
|
||||||
BSEC_OUTPUT_BREATH_VOC_EQUIVALENT,
|
|
||||||
BSEC_OUTPUT_RAW_TEMPERATURE,
|
BSEC_OUTPUT_RAW_TEMPERATURE,
|
||||||
BSEC_OUTPUT_RAW_PRESSURE,
|
BSEC_OUTPUT_RAW_PRESSURE,
|
||||||
BSEC_OUTPUT_RAW_HUMIDITY,
|
BSEC_OUTPUT_RAW_HUMIDITY,
|
||||||
BSEC_OUTPUT_RAW_GAS,
|
BSEC_OUTPUT_RAW_GAS,
|
||||||
BSEC_OUTPUT_STABILIZATION_STATUS,
|
BSEC_OUTPUT_IAQ,
|
||||||
BSEC_OUTPUT_RUN_IN_STATUS,
|
BSEC_OUTPUT_STATIC_IAQ,
|
||||||
|
BSEC_OUTPUT_CO2_EQUIVALENT,
|
||||||
|
BSEC_OUTPUT_BREATH_VOC_EQUIVALENT,
|
||||||
BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE,
|
BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE,
|
||||||
BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY,
|
BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY,
|
||||||
BSEC_OUTPUT_GAS_PERCENTAGE
|
|
||||||
};
|
};
|
||||||
|
|
||||||
`;
|
`;
|
||||||
Blockly.Arduino.setupCode_["iaqSensorUpdateSubscription"] =
|
Blockly.Arduino.setupCode_["iaqSensorUpdateSubscription"] =
|
||||||
"iaqSensor.updateSubscription(sensorList, 13, BSEC_SAMPLE_RATE_LP);\ncheckIaqSensorStatus();";
|
"iaqSensor.updateSubscription(sensorList, 10, BSEC_SAMPLE_RATE_LP);\ncheckIaqSensorStatus();";
|
||||||
//Loop Code
|
//Loop Code
|
||||||
Blockly.Arduino.loopCodeOnce_["iaqloop"] = `
|
Blockly.Arduino.loopCodeOnce_["iaqloop"] = `
|
||||||
if (iaqSensor.run()) {
|
if (iaqSensor.run()) {
|
||||||
|
@ -15,6 +15,7 @@ const colours = {
|
|||||||
webserver: 40,
|
webserver: 40,
|
||||||
phyphox: 25,
|
phyphox: 25,
|
||||||
motors: 190,
|
motors: 190,
|
||||||
|
cleverlab: 185 ,
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getColour = () => {
|
export const getColour = () => {
|
||||||
|
3
src/components/Blockly/msg/en/CleVerLab.js
Normal file
3
src/components/Blockly/msg/en/CleVerLab.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
export const CLEVERLAB = {
|
||||||
|
|
||||||
|
}
|
@ -633,6 +633,11 @@ class Toolbox extends React.Component {
|
|||||||
colour={getColour().procedures}
|
colour={getColour().procedures}
|
||||||
custom="PROCEDURE"
|
custom="PROCEDURE"
|
||||||
></Category>
|
></Category>
|
||||||
|
<Category name="CleVerLab" colour={getColour().cleverlab}>
|
||||||
|
<Block type="CleVerLab_pH" />
|
||||||
|
<Block type="CleVerLab_pump" />
|
||||||
|
<Block type="CleVerLab_cali1" />
|
||||||
|
</Category>
|
||||||
<Category name={Blockly.Msg.toolbox_advanced} colour={getColour().io}>
|
<Category name={Blockly.Msg.toolbox_advanced} colour={getColour().io}>
|
||||||
<Category
|
<Category
|
||||||
name={Blockly.Msg.toolbox_serial}
|
name={Blockly.Msg.toolbox_serial}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user