Sudah bisa DigitalOutput, DigitalInput. Juga sudah menambahkan class NanoPi.
This commit is contained in:
35
src/Device/NanoPi.java
Normal file
35
src/Device/NanoPi.java
Normal file
@@ -0,0 +1,35 @@
|
||||
package Device;
|
||||
|
||||
public class NanoPi {
|
||||
public int GetGPIO(int pin){
|
||||
int GPIONum;
|
||||
if (pin == 9){
|
||||
GPIONum = 363;
|
||||
} else if (pin == 11) {
|
||||
GPIONum = 203;
|
||||
} else if (pin==2) {
|
||||
GPIONum=5;
|
||||
} else if (pin==4) {
|
||||
GPIONum=4;
|
||||
} else if (pin == 8) {
|
||||
GPIONum=11;
|
||||
} else if (pin==10) {
|
||||
GPIONum=12;
|
||||
} else if (pin==12) {
|
||||
GPIONum=13;
|
||||
}else if (pin==14) {
|
||||
GPIONum=14;
|
||||
}else if (pin==16) {
|
||||
GPIONum=16;
|
||||
}else if (pin==18) {
|
||||
GPIONum=15;
|
||||
}else if (pin==20) {
|
||||
GPIONum=199;
|
||||
}else if (pin==22) {
|
||||
GPIONum=198;
|
||||
}else {
|
||||
GPIONum=-1;
|
||||
}
|
||||
return GPIONum;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,5 @@
|
||||
import java.io.IOException;
|
||||
|
||||
public class DigitalInput {
|
||||
private int pinnya=0;
|
||||
private final int pinnya;
|
||||
private boolean currentIsON = false;
|
||||
private boolean initialized = false;
|
||||
|
||||
@@ -12,7 +10,10 @@ public class DigitalInput {
|
||||
public DigitalInput(int pin_number) {
|
||||
// if (jGPIO.osname=="") jGPIO.detectOS();
|
||||
pinnya = pin_number;
|
||||
if (Setup_Pin()) initialized = true;
|
||||
if (Setup_Pin()) {
|
||||
initialized = true;
|
||||
}
|
||||
Runtime.getRuntime().addShutdownHook(new Thread(this::Release));
|
||||
}
|
||||
|
||||
private boolean Setup_Pin() {
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
public class DigitalOutput {
|
||||
int pin;
|
||||
|
||||
DigitalOutput(int pinOut) {
|
||||
boolean initState;
|
||||
boolean initialized;
|
||||
DigitalOutput(int pinOut,boolean initialiaState) {
|
||||
pin = pinOut;
|
||||
|
||||
initState = initialiaState;
|
||||
initialized = Setup_Pin();
|
||||
Runtime.getRuntime().addShutdownHook(new Thread(this::Release));
|
||||
}
|
||||
|
||||
private boolean Setup_Pin() {
|
||||
@@ -16,22 +19,38 @@ public class DigitalOutput {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// sampe sini, harusnya ada
|
||||
// harus set output dulu
|
||||
// set direction first
|
||||
if (GeneralCode.SetGpioDirection(pin, true)) {
|
||||
// pasang value 1
|
||||
if (GeneralCode.SetGpioValue(pin, true)) {
|
||||
// ubah jadi input
|
||||
if (GeneralCode.SetGpioDirection(pin, false)) {
|
||||
System.out.println("DigitalInput Setup_Pin success !!");
|
||||
if (GeneralCode.SetGpioValue(pin, initState)) {
|
||||
System.out.println("DigitalOutput Setup_Pin success !!");
|
||||
return true;
|
||||
} else System.out.println("Gagal SetDirection ke Input untuk DigitalInput pin "+pin);
|
||||
} else System.out.println("Gagal SetValue ke high untuk DigitalInput pin "+pin);
|
||||
} else System.out.println("Gagal SetDirection ke Output untuk DigitalInput pin "+pin);
|
||||
return false;
|
||||
}
|
||||
|
||||
public void SetHigh(){
|
||||
if (!initialized) {
|
||||
System.out.println("Pin is not initialized");
|
||||
return;
|
||||
}
|
||||
GeneralCode.SetGpioValue(pin,true);
|
||||
}
|
||||
|
||||
public void SetLow(){
|
||||
if (!initialized){
|
||||
System.out.println("Pin is not initialized");
|
||||
return;
|
||||
}
|
||||
GeneralCode.SetGpioValue(pin,false);
|
||||
}
|
||||
|
||||
/*
|
||||
* Release control of Digital Output (not controlling anymore)
|
||||
* return true if success operation
|
||||
*/
|
||||
public void Release() {
|
||||
GeneralCode.UnExportGpio(pin);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ import java.util.Objects;
|
||||
public class GeneralCode {
|
||||
private static final String GPIO_PATH = "/sys/class/gpio/";
|
||||
|
||||
|
||||
/**
|
||||
check is the OS is Linux or not
|
||||
*/
|
||||
@@ -44,7 +43,7 @@ public class GeneralCode {
|
||||
/**
|
||||
*
|
||||
* @param Pin pin that you want to set
|
||||
* @param direction true if In, false if Out
|
||||
* @param direction true if out, false if in
|
||||
* @return True if success
|
||||
*/
|
||||
public static boolean SetGpioDirection(int Pin, boolean direction){
|
||||
@@ -62,7 +61,7 @@ public class GeneralCode {
|
||||
* @return true if success
|
||||
*/
|
||||
public static boolean SetGpioValue(int Pin,boolean Value){
|
||||
String valNum = "";
|
||||
String valNum;
|
||||
if (Value){
|
||||
valNum="1";
|
||||
}else {valNum="0";}
|
||||
|
||||
@@ -1,22 +1,25 @@
|
||||
import Device.NanoPi;
|
||||
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
DigitalInput talkButton = new DigitalInput(12);
|
||||
var npi = new NanoPi();
|
||||
DigitalInput talkButton = new DigitalInput(npi.GetGPIO(12));
|
||||
DigitalOutput LED1 = new DigitalOutput(npi.GetGPIO(20),true);
|
||||
System.out.println("is initialized :"+ talkButton.getIsInitialized());
|
||||
|
||||
Runtime.getRuntime().addShutdownHook(new Thread(()->{
|
||||
talkButton.Release();
|
||||
System.out.println("program is closed!");
|
||||
}));
|
||||
System.out.println("Test Program GPIO di linux");
|
||||
|
||||
Timer testTimer = new Timer();
|
||||
testTimer.schedule(new TimerTask() {
|
||||
Timer MainTimer = new Timer();
|
||||
MainTimer.schedule(new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
System.out.println(talkButton.ReadState());
|
||||
if(talkButton.ReadState() == 1 ){
|
||||
LED1.SetHigh();
|
||||
}else{
|
||||
LED1.SetLow();
|
||||
}
|
||||
}
|
||||
},0,1000);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user