Blockdefinition:
![](images/0zqBuUqDJjp1Gg7lwBwqkJpuYhfwtl_Up_c22DaN2d1FprYTMhbkkn7QbPBTEbYXKoEhMFry2LnI6kphGIHzSEZhL6C-XZQm1BwM4tz4KAB-x07EfgDLhoO_BnJlZahS6KFBGZ5S.png)
Entwickelt in Blockly Developer Tools. Der Benutzer hat die
Möglichkeit, einen oder zwei Motoren zur Steuerung auszuwählen und
die gewünschten Zentimeter zu schreiben.
Der Baustein wird
unter den in Baustein bereits vorhandenen Motor Input gelegt.
Vom Distance Block generierter Code:
![](images/wRmoR2lZYI1rf0_1DQYLZ3C_I5nFIlZqq3JIp8thBwXvQWFjG0zTmnDyU0AoKP5aKjPzKQbOv6pJ9vMnnWsvq3kZrGS6v-yujup1P4XjVU73ZJLc31Yb2czaJ5sz-NwpjT5AdZ.jpg)
Der in Cody ++ generierte Code entspricht zwei Zeilen. Zuerst
benötigt eine Funktion des im Dropdown-Menü ausgewählten Motors den
gewünschten Abstand in Zentimetern. In den Library
(ft_ESP32_IOobjects.cpp) wird eine Delay berechnet und in
Millisekunden zurückgegeben.
Die Block- und Codeleitungen
werden zwischen der Aktivierung der Motoren und ihrer Deaktivierung
platziert. Die Delay zwingt das Auto, sich für eine Zeit weiter zu
bewegen, die den Zentimetern entspricht.
Änderungen in den Bibliotheken:
![](images/PYQ8UiDLVM9g01rucaSB1FGVOVXPFmS8LgxglLX-FAXK39B5RkbWsOtIy9bLhPD1qm8Gg6OGEOvUTD40br0EVMd0dmiCsuQjQ-JSJzGP3tTGklO4tAEF820zjNjZPl5DW3-C2T.jpg)
In der Library „ft_ESP32_IOobjects.h“ werden die Funktionen
setDistance und getInterval in die Klasse Motor gestellt. Zusammen
mit der privaten Variablen mDistance wird der umgerechnete Abstand
von Zentimetern zu Millimetern gespeichert.
![](images/LPcMI2099sztPPkOwMWcXBzP5M8keUOHljPnIAKHpie48ytK7owGCuu2wFclosE3M_DpXUQrylUyMSNrkQnvjnpJqKQOLm2u5nMsCLwYCO-abxG8lRcYeWQJ1APU3cl_hNFBAo.png)
In der Library „ft_ESP32_IOobjects.cpp“ werden die Funktionen
setDistance und getInterval entwickelt. setDistance nimmt den
Abstand in Zentimetern, den der Benutzer in den Block geschrieben
hat, und ändert ihn in Millimeter. In getInterval wird ein Array
verwendet, in dem das aprox. Geschwindigkeit vom Fischertechnikauto
in mm / ms angegeben werden. Die Position im Array entspricht der
Drehzahl für den Motor, die der Benutzer im Dropdown-Menü des
Eingangsblocks ausgewählt hat. Das heißt, wenn die Geschwindigkeit 3
gewählt wird, wäre der Wert in mm / ms 0,1538.
Die Delay wird
berechnet, indem die Entfernung durch die Geschwindigkeit geteilt
und in der Variablen "Intervall" gespeichert wird.
Code für den Block in der Cody ++ - Master file:
Der im Blockly Developer tools erstellte Code wird aufgeteilt und
zwei Dateien hinzugefügt: custom_blocks.js und
custom_block_syntax.js.
![](images/43L-cRteBkRfJBGb7UUS-gDaizbMj-JUPwriHRaIoUgGmjUpz6aLe9kKKK2SUhdmSudKTvSX603OUPGg662kuVgqzwnErZZHcZ_uEZpA1QYqjTaa_vOHeCQ6vtHJ3A7DJkhr_C.png)
In der Datei custom_blocks.js wird der Code für das Erscheinungsbild
des Distanceblocks abgelegt.
![](images/Ua6vPUIlsLeTZ3DlS5Z9Vb_thmWsw6187d6bCKnBT-umSq294V923b6A1glkiRAMxk-wyo6PoGadE3zR52RYc9N17g5T0X47AwxXuPoe97-F4BDzCOFIvypd0iLaVsIq0hes0b.png)
In der Datei custom_block_syntax.js. Wird der Code für die
Funktionalität des Distanzblocks platziert. Es verwendet die vom
Benutzer in Cody ++ gewählte Motornummer und den Abstand in cm und
generiert damit den Code in C ++, der in die Arduino IDE kopiert und
in den ESP32 geladen werden kann.