[vc_row][vc_column width=”1/1″][vc_column_text]In a previous post, we looked at how to blink LED using Java GPIO control. In this post, we will look at how to use program with Java to implement a LED controlled by a button.
[/vc_column_text][vc_tour][vc_tab title=”Parts List” tab_id=”1395135915-1-98″][vc_column_text]Parts List:
- 1 x Linker LED module
- Several male to female jumper wires
- 1 x Linker Button module
- 1 x pcDuino v2
[/vc_column_text][/vc_tab][vc_tab title=”Wiring Diagram” tab_id=”1395135915-2-36″][vc_column_text]The components are wired in the following way:
- GND of Linker LED module to GND of pcDuino2
- SIG of Linker LED module to Digital 8 of pcDuino2
- GND of Linker Button module to GND of pcDuino2
- VCC of Linker Button module to 5V of pcDuino2
- SIG of Linker Button module to Digital 9 of pcDuino2
[/vc_column_text][/vc_tab][vc_tab title=”Sample Code” tab_id=”1395136453488-2-6″][vc_column_text]The sample code of GPIO control class is shown below:
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(); } } }
Test Code:
package com.test; public class Test { public static void main(String[] args) throws InterruptedException { GPIO_Pin ledpin=new GPIO_Pin(8); GPIO_Pin buttenpin=new GPIO_Pin(9); ledpin.setModeOUTPUT(); buttenpin.setModeINPUT(); while (true) { if("1".equals(buttenpin.getPinStatus())) ledpin.setHIGH(); else ledpin.setLOW(); Thread.sleep(4); } } }
[/vc_column_text][/vc_tab][vc_tab title=”Results” tab_id=”1395136573274-3-8″][vc_column_text]Run the Java code, when we pressed the button, the LED will turn on:
It will turn off when we released the button:
[/vc_column_text][/vc_tab][/vc_tour][/vc_column][/vc_row]
Leave a Reply
You must be logged in to post a comment.