[vc_row][vc_column][vc_column_text]It is well know that driver operation in Linux is nothing but file operation. In this post, we will look at how to blink LED with Java GPIO control.
The driver for GPIO control is located at: /sys/devices/virtual/misc/gpio/pin/.
The files used control is located at: /sys/devices/virtual/misc/gpio/mode/
[/vc_column_text][vc_tour][vc_tab title=”Parts List” tab_id=”1395134156-1-82″][vc_column_text]We will need the following parts:
- 1 x Linker LED module
- Several male to female jumper wires
- 1 x pcDuino v2
[/vc_column_text][/vc_tab][vc_tab title=”Wire Diagram” tab_id=”1395134156-2-81″][vc_column_text]We need to wire the components as the following:
- GND of Linker LED module -> GND of pcDuino2
- SIG of Linker LED module -> Digital pin 1 pcDuino2
[/vc_column_text][/vc_tab][vc_tab title=”Sample Code” tab_id=”1395134714105-2-5″][vc_column_text]Firstly, we need to create class:
package com.test; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class GPIO_Pin { private String modeURI = "/sys/devices/virtual/misc/gpio/mode/"; private String statusURI = "/sys/devices/virtual/misc/gpio/pin/"; private int pin = 0; public static final String HIGH = "1", LOW = "0", INPUT = "0", OUTPUT = "1", INPUT_PU = "8"; public GPIO_Pin(int pin) { modeURI += "gpio" + pin; statusURI += "gpio" + pin; this.pin = pin; } public GPIO_Pin(String pin) { // Finalize file paths modeURI += "gpio" + pin; statusURI += "gpio" + pin; this.pin =Integer.parseInt(pin); } public int getPin() { return pin; } public void overrideURI(String uri) { modeURI = uri + "mode/gpio" + pin; statusURI = uri + "pin/gpio" + pin; } public void setMode(String mode) { writeToFile(getModeURI(), mode); } public void set(String state) { writeToFile(getStatusURI(), state); } public void setHIGH() { writeToFile(getStatusURI(), HIGH); } public void setLOW() { writeToFile(getStatusURI(), LOW); } public void setModeINPUT() { writeToFile(getModeURI(), INPUT); } public void setModeOUTPUT() { writeToFile(getModeURI(), OUTPUT); } public void setModeINPUT_PU() { writeToFile(getModeURI(), INPUT_PU); } public String getModeURI() { return modeURI; } public String getStatusURI() { return statusURI; } public String getPinMode() { try { BufferedReader reader = new BufferedReader(new FileReader(getModeURI())); String data = reader.readLine(); reader.close(); return data; } catch (IOException e) { } return ""; } public String getPinStatus() { try { BufferedReader reader = new BufferedReader(new FileReader(getStatusURI())); String data = reader.readLine(); reader.close(); return data; } catch (IOException e) { } return ""; } private void writeToFile(String URI, String data) { try { File file = new File(URI); file.delete(); File newFile = new File(URI); newFile.createNewFile(); FileWriter writer = new FileWriter(URI); writer.write(data); writer.close(); } catch (IOException e) { e.printStackTrace(); } } }
The calling code:
package com.test; public class Test { public static void main(String[] args) throws InterruptedException { GPIO_Pin ledpin=new GPIO_Pin(1); ledpin.setModeOUTPUT(); while (true) { ledpin.setHIGH(); Thread.sleep(400); ledpin.setLOW(); Thread.sleep(400); } } }
The source files can also be downloaded from here.[/vc_column_text][/vc_tab][vc_tab title=”Results” tab_id=”1395134926951-3-7″][vc_column_text]The LED will blink when we run the code.[/vc_column_text][/vc_tab][/vc_tour][/vc_column][/vc_row]
Leave a Reply
You must be logged in to post a comment.