Use Button to Control LED on PcDuino With Java
5571 Views, 6 Favorites, 0 Comments
Use Button to Control LED on PcDuino With Java
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.
Parts List
Parts List:
1 x Linker LED module
Several male to female jumper wires
1 x Linker Button module
1 x pcDuino v2
1 x Linker LED module
Several male to female jumper wires
1 x Linker Button module
1 x pcDuino v2
Wiring Diagram
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
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
Sample Code
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);
}
}
}
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);
}
}
}
Results
Run the Java code, when we pressed the button, the LED will turn on:
Results
It will turn off when we released the button: