In order to execute Gpiod methods at your embedded device, you will need to have the libgpiod-dev package installed in your board. You can do that by entering the following command at the device's terminal:
$ sudo apt-get install libgpiod-dev
To activate and deactivate any external component the embedded board is to change the value of the GPIO pin that will activate it.
package com.totalcross.DocRpi;import totalcross.ui.MainWindow;import totalcross.ui.event.ControlEvent;import totalcross.ui.event.PressListener;import totalcross.ui.gfx.Color;import totalcross.ui.Button;import totalcross.io.device.gpiod.GpiodChip;import totalcross.io.device.gpiod.GpiodLine;import totalcross.sys.Settings;​public class DocRpi extends MainWindow {// Integers to store state of each LED pin, 0 (LOW) and 1 (HIGH)private int stt;// Buttons to controlprivate Button btn;public DocRpi(){setUIStyle(Settings.MATERIAL_UI);}@Overridepublic void initUI(){// Board SetupGpiodChip gpioChip = GpiodChip.open(0); // GIPIO busGpiodLine pin = gpioChip.line(21); //// Set LED pins as outputs and default value sttpin.requestOutput("CONSUMER",stt);// The TotalCross button:btn = new Button("Pin"); // Button instantiation// without textbtn.setBackColor(Color.RED); // Set background color (red)btn.addPressListener(new PressListener(){ // Press event listener@Overridepublic void controlPressed(ControlEvent controlEvent) {stt = 1 - stt; // Invert pin statepin.setValue(stt); // Set value (HIGH or LOW)}});add(btn, CENTER, CENTER);}}
In several embedded applications, it is necessary to receive digital signal from an external component such as sensors or even to activate another component indirectly.
package com.totalcross.DocRpi;import totalcross.ui.MainWindow;import totalcross.ui.event.ControlEvent;import totalcross.ui.event.PressListener;import totalcross.ui.gfx.Color;import totalcross.ui.Button;import totalcross.io.device.gpiod.GpiodChip;import totalcross.io.device.gpiod.GpiodLine;import totalcross.sys.Settings;import totalcross.sys.Vm;​public class DocRpi extends MainWindow{// Integers to store state of each LED pin, 0 (LOW) and 1 (HIGH)private int stt;// Buttons to controlprivate Button btn;public DocRpi(){setUIStyle(Settings.MATERIAL_UI);}@Overridepublic void initUI(){// Board SetupGpiodChip gpioChip = GpiodChip.open(0); // GIPIO busGpiodLine pin = gpioChip.line(21); //// Set LED pins as outputs and default value sttpin.requestOutput("CONSUMER", stt);GpiodLine pinPushButton = gpioChip.line(22);// Set Reset pin as inputpinPushButton.requestInput("CONSUMER");new Thread(){@Overridepublic void run(){while(true){if(pinPushButton.getValue() == 1){//check pin statusstt = 1 - stt; // Invert pin statepin.setValue(stt); // Set value (HIGH or LOW)}Vm.sleep(200);}}}.start();}}​
​
Type | Name | Description |
Constructor | open(int chip) | Defines which GPIO bus will be used. |
Construtor | line(int pin) | Defines which pin of GPIO bus will be used. |
Void | requestOutput(String consumer, int defaultValue) | Names the pin, defines as output and the initial value. |
Void | setValue(int value) | Changes pin value. |
Void | requestInput(String consumer) | Names the pin and defines as input. |
Int | getValue() | Returns pin status |
​