From 488e8738885b41cebe544d8cabac2ab38651f00a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anian=20B=C3=BChler?= <anian.buehler@reutlingen-university.de> Date: Tue, 8 Feb 2022 15:39:24 +0100 Subject: [PATCH] added 2pin ultrasonic-sensor --- .../block/input/LGIUltrasonic2PinBlock.java | 35 +++++++++++++++++++ .../block/input/LGIUltrasonicBlock.java | 11 +++--- .../com/ardublock/block/ardublock.properties | 6 +++- .../com/ardublock/block/ardublock.xml | 21 +++++++++-- .../ardublock/block/ardublock_de.properties | 6 +++- .../block/ardublock_en_GB.properties | 5 ++- .../ardublock/block/block-mapping.properties | 1 + 7 files changed, 73 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/ardublock/translator/block/input/LGIUltrasonic2PinBlock.java diff --git a/src/main/java/com/ardublock/translator/block/input/LGIUltrasonic2PinBlock.java b/src/main/java/com/ardublock/translator/block/input/LGIUltrasonic2PinBlock.java new file mode 100644 index 0000000..55ce236 --- /dev/null +++ b/src/main/java/com/ardublock/translator/block/input/LGIUltrasonic2PinBlock.java @@ -0,0 +1,35 @@ +package com.ardublock.translator.block.input; + +import com.ardublock.translator.Translator; +import com.ardublock.translator.block.TranslatorBlock; +import com.ardublock.translator.block.exception.SocketNullException; +import com.ardublock.translator.block.exception.SubroutineNotDeclaredException; + +public class LGIUltrasonic2PinBlock extends TranslatorBlock +{ + public LGIUltrasonic2PinBlock(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label) + { + super(blockId, translator, codePrefix, codeSuffix, label); + } + + private final static String ultraSonic2PinFunction = "\nint ultraschallSensor2Pin(int triggerPin, int echoPin){\n long duration, cm; \n\n //starte Trigger \n digitalWrite(triggerPin, LOW); \n delayMicroseconds(2); \n digitalWrite(triggerPin, HIGH); \n delayMicroseconds(10); \n digitalWrite(triggerPin, LOW); \n\n //messe Echo-Laufzeit \n duration = pulseIn(echoPin, HIGH); \n\n //berechne Abstand \n cm = duration / 29.1 / 2; \n return cm;\n }\n"; + + public String toCode() throws SocketNullException, SubroutineNotDeclaredException + { + + TranslatorBlock tb_trigger = this.getRequiredTranslatorBlockAtSocket(0); + TranslatorBlock tb_echo = this.getRequiredTranslatorBlockAtSocket(1); + String triggerPin = tb_trigger.toCode().replaceAll("\\s*_.new\\b\\s*", ""); + String echoPin = tb_echo.toCode().replaceAll("\\s*_.new\\b\\s*", ""); + + translator.addSetupCommand("pinMode( " + triggerPin + " , INPUT); // Ultraschallsensor Trigger-Pin"); + translator.addSetupCommand("pinMode( " + echoPin + " , INPUT); // Ultraschallsensor Echo-Pin\n"); + + translator.addDefinitionCommand(ultraSonic2PinFunction); + + String ret = "ultraschallSensor2Pin(" + triggerPin + ", "+ echoPin + ")"; + + + return codePrefix + ret + codeSuffix; + } +} \ No newline at end of file diff --git a/src/main/java/com/ardublock/translator/block/input/LGIUltrasonicBlock.java b/src/main/java/com/ardublock/translator/block/input/LGIUltrasonicBlock.java index 516db04..60c8468 100644 --- a/src/main/java/com/ardublock/translator/block/input/LGIUltrasonicBlock.java +++ b/src/main/java/com/ardublock/translator/block/input/LGIUltrasonicBlock.java @@ -12,22 +12,21 @@ public class LGIUltrasonicBlock extends TranslatorBlock super(blockId, translator, codePrefix, codeSuffix, label); } - private final static String ultraSonicFunction = "\nint UltraschallSensor(int SensorPin){\n long duration, cm; \n pinMode(SensorPin, OUTPUT); \n digitalWrite(SensorPin, LOW); \n delayMicroseconds(2); \n digitalWrite(SensorPin, HIGH); \n delayMicroseconds(5); \n digitalWrite(SensorPin, LOW); \n pinMode(SensorPin, INPUT); \n duration = pulseIn(SensorPin, HIGH); \n cm = duration / 29 / 2; \n return cm;\n }\n"; + private final static String ultraSonicFunction = "\nint ultraschallSensor(int sensorPin){\n long duration, cm; \n\n //starte Trigger \n pinMode(sensorPin, OUTPUT); \n digitalWrite(sensorPin, LOW); \n delayMicroseconds(2); \n digitalWrite(sensorPin, HIGH); \n delayMicroseconds(5); \n digitalWrite(sensorPin, LOW); \n\n //messe Echo-Laufzeit \n pinMode(sensorPin, INPUT); \n duration = pulseIn(sensorPin, HIGH); \n\n //berechne Abstand \n cm = duration / 29.1 / 2; \n return cm;\n }\n"; public String toCode() throws SocketNullException, SubroutineNotDeclaredException { String SensorPin; - // String echoPin; + TranslatorBlock translatorBlock = this.getRequiredTranslatorBlockAtSocket(0); SensorPin = translatorBlock.toCode().replaceAll("\\s*_.new\\b\\s*", ""); - //translatorBlock = this.getRequiredTranslatorBlockAtSocket(1); - //echoPin = translatorBlock.toCode(); + - translator.addSetupCommand("\tdigitalWrite( " + SensorPin + " , LOW );\n"); + translator.addSetupCommand("digitalWrite(" + SensorPin + ", LOW );\n"); translator.addDefinitionCommand(ultraSonicFunction); - String ret = "\tUltraschallSensor( " + SensorPin + " )"; + String ret = "ultraschallSensor(" + SensorPin + ")"; return codePrefix + ret + codeSuffix; diff --git a/src/main/resources/com/ardublock/block/ardublock.properties b/src/main/resources/com/ardublock/block/ardublock.properties index 8e92310..64ea9e4 100644 --- a/src/main/resources/com/ardublock/block/ardublock.properties +++ b/src/main/resources/com/ardublock/block/ardublock.properties @@ -381,6 +381,8 @@ bg.pin-read-digital=digital pin bg.pin-read-digital-pullup=input pullup bg.pin-mode-input=pinMode INPUT bg.LGI_Ultrasonic=ultrasonic +bg.LGI_Ultrasonic2Pin=ultrasonic + bg.LGI_Qtouch_Init1=LGI_Qtouch_Init1 bg.LGI_Qtouch_Init2=LGI_Qtouch_Init2 @@ -409,6 +411,7 @@ bg.pin-read-digital.description=Read digital value (HIGH or LOW) from pin. bg.pin-read-digital-pullup.description=Set pin to digital input\nPin will report HIGH if unconnected. bg.pin-mode-input.description= Set Pin-Mode to INPUT bg.LGI_Ultrasonic.description=ultrasonic sensor +bg.LGI_Ultrasonic2Pin.description=ultrasonic sensor bg.LGI_Qtouch_Init1.description=LGI_Qtouch_Init1 bg.LGI_Qtouch_Init2.description=LGI_Qtouch_Init2 bg.LGI_Qtouch_Init3.description=LGI_Qtouch_Init3 @@ -435,7 +438,8 @@ bc.analogpin_number=#AnalogPin bc.dhtType=DHT bc.DHTtemp=temperature bc.DHThumid=humidity - +bc.triggerPin=trigger pin +bc.echoPin=echo pin #LOGIC #**************************** bd.logic=Logical Operators diff --git a/src/main/resources/com/ardublock/block/ardublock.xml b/src/main/resources/com/ardublock/block/ardublock.xml index 8fba12b..32ecfaa 100644 --- a/src/main/resources/com/ardublock/block/ardublock.xml +++ b/src/main/resources/com/ardublock/block/ardublock.xml @@ -961,13 +961,27 @@ </BlockGenus> <BlockGenus name="LGI_Ultrasonic" kind="data" color="44 165 226" initlabel="bg.LGI_Ultrasonic" editable-label="no" is-label-value="no" > <description> - <text>Read digital value from pin</text> + <text></text> </description> <BlockConnectors> + <BlockConnector connector-type="number" connector-kind="plug" position-type="single"/> <BlockConnector label="bc.pin_number" connector-type="number" connector-kind="socket" position-type="single"> <DefaultArg genus-name="number" label="2"/> </BlockConnector> - <BlockConnector label="1" connector-type="number" connector-kind="plug" position-type="single"/> + </BlockConnectors> + </BlockGenus> + <BlockGenus name="LGI_Ultrasonic2Pin" kind="data" color="44 165 226" initlabel="bg.LGI_Ultrasonic2Pin" editable-label="no" is-label-value="no" > + <description> + <text></text> + </description> + <BlockConnectors> + <BlockConnector connector-type="number" connector-kind="plug" position-type="single"/> + <BlockConnector label="bc.triggerPin" connector-type="number" connector-kind="socket" position-type="single"> + <DefaultArg genus-name="number" label="2"/> + </BlockConnector> + <BlockConnector label="bc.echoPin" connector-type="number" connector-kind="socket" position-type="single"> + <DefaultArg genus-name="number" label="3"/> + </BlockConnector> </BlockConnectors> </BlockGenus> <BlockGenus name="dht_sensor_setup" kind="command" color="44 165 226" initlabel="bg.dht_sensor_setup"> @@ -3241,7 +3255,8 @@ <BlockGenusMember>LGI_Qtouch_Button1_isTouched</BlockGenusMember> <BlockGenusMember>inputDivider3</BlockGenusMember> - <BlockGenusMember>LGI_Ultrasonic</BlockGenusMember> + <BlockGenusMember>LGI_Ultrasonic</BlockGenusMember> + <BlockGenusMember>LGI_Ultrasonic2Pin</BlockGenusMember> <BlockGenusMember>dht_sensor_setup</BlockGenusMember> <BlockGenusMember>dht_sensor_read_temp</BlockGenusMember> diff --git a/src/main/resources/com/ardublock/block/ardublock_de.properties b/src/main/resources/com/ardublock/block/ardublock_de.properties index 3be237a..d68d394 100644 --- a/src/main/resources/com/ardublock/block/ardublock_de.properties +++ b/src/main/resources/com/ardublock/block/ardublock_de.properties @@ -378,7 +378,8 @@ bg.pin-read-analog=analogRead bg.pin-read-digital=digitalRead bg.pin-read-digital-pullup=inputPullup bg.pin-mode-input=pinMode INPUT -bg.LGI_Ultrasonic=Wert Ultraschall Sensor +bg.LGI_Ultrasonic=lese Ultraschall Sensor +bg.LGI_Ultrasonic2Pin=lese Ultraschall Sensor bg.LGI_Qtouch_Init1=Setup fuer Q-Touch-Button1 bg.LGI_Qtouch_Init2=Setup fuer Q-Touch-Button2 @@ -407,6 +408,7 @@ bg.pin-read-digital.description=Liest den digitalen Wert vom Pin ein (HIGH or LO bg.pin-read-digital-pullup.description=Setzt den Pin auf Eingang mit einem Pullup-Widerstand\n Gibt HIGH zurück, wenn nichts angeschlossen ist bg.pin-mode-input.description= Setze Pin als Eingang (INPUT) bg.LGI_Ultrasonic.description=Lese Messwert vom Unltraschallsensor +bg.LGI_Ultrasonic2Pin.description=Lese Messwert vom Unltraschallsensor bg.LGI_Qtouch_Init1.description=Setup fuer Q-Touch-Button1 bg.LGI_Qtouch_Init2.description=Setup fuer Q-Touch-Button2 bg.LGI_Qtouch_Init3.description=Setup fuer Q-Touch-Button3 @@ -433,6 +435,8 @@ bc.analogpin_number=#AnalogPin bc.dhtType=DHT bc.DHTtemp=Temperatur bc.DHThumid=Luftfeuchtigkeit +bc.triggerPin=Trigger-Pin +bc.echoPin=Echo-Pin #LOGIC #**************************** diff --git a/src/main/resources/com/ardublock/block/ardublock_en_GB.properties b/src/main/resources/com/ardublock/block/ardublock_en_GB.properties index f6e9de1..e9f3a5c 100644 --- a/src/main/resources/com/ardublock/block/ardublock_en_GB.properties +++ b/src/main/resources/com/ardublock/block/ardublock_en_GB.properties @@ -380,6 +380,7 @@ bg.pin-read-digital=digitalRead bg.pin-read-digital-pullup=inputPullup bg.pin-mode-input=pinMode INPUT bg.LGI_Ultrasonic=lese Ultraschall-Sensor +bg.LGI_Ultrasonic2Pin=lese Ultraschall-Sensor bg.LGI_Qtouch_Init1=Setup fuer Q-Touch-Button1 bg.LGI_Qtouch_Init2=Setup fuer Q-Touch-Button2 @@ -408,6 +409,7 @@ bg.pin-read-digital.description=Liest den digitalen Wert vom Pin ein (HIGH or LO bg.pin-read-digital-pullup.description=Setzt den Pin auf Eingang mit einem Pullup-Widerstand\n Gibt HIGH zurück, wenn nichts angeschlossen ist bg.pin-mode-input.description= Setze Pin als Eingang (INPUT) bg.LGI_Ultrasonic.description=Lese Messwert vom Unltraschallsensor +bg.LGI_Ultrasonic2Pin.description=Lese Messwert vom Unltraschallsensor bg.LGI_Qtouch_Init1.description=Setup fuer Q-Touch-Button1 bg.LGI_Qtouch_Init2.description=Setup fuer Q-Touch-Button2 bg.LGI_Qtouch_Init3.description=Setup fuer Q-Touch-Button3 @@ -434,7 +436,8 @@ bc.analogpin_number=#AnalogPin bc.dhtType=DHT bc.DHTtemp=Temperatur bc.DHThumid=Luftfeuchtigkeit - +bc.triggerPin=Trigger-Pin +bc.echoPin=Echo-Pin #LOGIC #**************************** bd.logic=Log. Operatoren diff --git a/src/main/resources/com/ardublock/block/block-mapping.properties b/src/main/resources/com/ardublock/block/block-mapping.properties index e094f63..68a78f3 100644 --- a/src/main/resources/com/ardublock/block/block-mapping.properties +++ b/src/main/resources/com/ardublock/block/block-mapping.properties @@ -118,6 +118,7 @@ LGI_Qtouch_Slider_getOffset1=com.ardublock.translator.block.input.LGIQtouchSlide LGI_Qtouch_Slider_getOffset2=com.ardublock.translator.block.input.LGIQtouchSliderGetOffset2Block LGI_Qtouch_Slider_getOffset3=com.ardublock.translator.block.input.LGIQtouchSliderGetOffset3Block LGI_Ultrasonic=com.ardublock.translator.block.input.LGIUltrasonicBlock +LGI_Ultrasonic2Pin=com.ardublock.translator.block.input.LGIUltrasonic2PinBlock dht_sensor_setup=com.ardublock.translator.block.input.DHT11setup dht_sensor_read_temp=com.ardublock.translator.block.input.DHT11getTemperature dht_sensor_read_humid=com.ardublock.translator.block.input.DHT11getHumidity -- GitLab