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 0000000000000000000000000000000000000000..55ce2362524d8675c8fef2b5f97823f4b03deeb0 --- /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 516db0477513a4d80491f4c8cc5a11261a415126..60c84684bd7a036dfe619a01cc5fb70680e627fa 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 8e92310ab798dcb1c26230c9dcd11e69a2bf325e..64ea9e444ffcda7a5ba74da7704acc68f44c3f52 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 8fba12b581c4f3858b167368c06d54cf52e5270b..32ecfaaf4955e8866c884db9e538759a9e969929 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 3be237ac6457e930d9d2c3fb80d22ae40672116e..d68d394fa2c2351b19a39b0386bd3b47e613e377 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 f6e9de1cb86ee1b84494b9d115dea84f68bd18ae..e9f3a5cc2055103ab6cebb2741ebb597732ec1b9 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 e094f633c2c556768722a9df04f0a2410e6e7744..68a78f35d1512191d6ca3d9971dc729b7d60005e 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