Change SBC to Jetson Orin
This commit is contained in:
159
src/main/java/SBC/PCF8574.java
Normal file
159
src/main/java/SBC/PCF8574.java
Normal file
@@ -0,0 +1,159 @@
|
||||
package SBC;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class PCF8574 extends I2C_Device{
|
||||
|
||||
private byte data = 0x00;
|
||||
private final @Getter String[] pinNames = new String[8];
|
||||
|
||||
/**
|
||||
* Create new PCF8574
|
||||
* @param bus_number I2C Bus Number
|
||||
* @param address PCF8574 Address
|
||||
*/
|
||||
public PCF8574(int bus_number, int address){
|
||||
super(bus_number, address);
|
||||
for(int i=0; i<8; i++){
|
||||
pinNames[i] = i+"";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set new Pin Name
|
||||
* @param pin pin number, 0-7
|
||||
* @param name new name
|
||||
*/
|
||||
public void setPinName(int pin, String name){
|
||||
if (pin<0 || pin>7) return;
|
||||
pinNames[pin] = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Pin Name
|
||||
* @param pin pin number, 0-7
|
||||
* @return pin name, or null if not available
|
||||
*/
|
||||
public String getPinName(int pin){
|
||||
if (pin<0 || pin>7) return null;
|
||||
return pinNames[pin];
|
||||
}
|
||||
|
||||
/**
|
||||
* Set All Pins High
|
||||
* @return true if successful
|
||||
*/
|
||||
public boolean AllOn(){
|
||||
if (super.isOpened()){
|
||||
if (super.WriteBytes(new byte[]{(byte)0xFF})>0){
|
||||
data = (byte)0xFF;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set all Pins Low
|
||||
* @return true if successful
|
||||
*/
|
||||
public boolean AllOff(){
|
||||
if (super.isOpened()){
|
||||
if (super.WriteBytes(new byte[]{(byte)0x00})>0){
|
||||
data = (byte)0x00;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Pin by Pin Name
|
||||
* @param pinName pin name
|
||||
* @return true if successful
|
||||
*/
|
||||
public boolean SetPin(String pinName){
|
||||
for(int i=0; i<8; i++){
|
||||
if (pinNames[i].equals(pinName)){
|
||||
return SetPin(i);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Set Pin High
|
||||
* @param pin pin number 0-7
|
||||
* @return true if successful
|
||||
*/
|
||||
public boolean SetPin(int pin){
|
||||
if (pin<0 || pin>7) return false;
|
||||
if (super.isOpened()){
|
||||
byte temp = (byte) (data | (1<<pin));
|
||||
return super.WriteBytes(new byte[]{temp})>0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear Pin by Pin Name
|
||||
* @param pinName pin name
|
||||
* @return true if successful
|
||||
*/
|
||||
public boolean ClearPin(String pinName){
|
||||
for(int i=0; i<8; i++){
|
||||
if (pinNames[i].equals(pinName)){
|
||||
return ClearPin(i);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Pin Low
|
||||
* @param pin pin number 0-7
|
||||
* @return true if successful
|
||||
*/
|
||||
public boolean ClearPin(int pin){
|
||||
if (pin<0 || pin>7) return false;
|
||||
if (super.isOpened()){
|
||||
byte temp = (byte) (data & ~(1<<pin));
|
||||
return super.WriteBytes(new byte[]{temp})>0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Read Pin by Pin Name
|
||||
* @param pinName pin name
|
||||
* @return 1 if high, 0 if low, -1 if error
|
||||
*/
|
||||
public int ReadPin(String pinName){
|
||||
for(int i=0; i<8; i++){
|
||||
if (pinNames[i].equals(pinName)){
|
||||
return ReadPin(i);
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Read Pin
|
||||
* @param pin pin to read, 0 - 7
|
||||
* @return 1 if high, 0 if low, -1 if error
|
||||
*/
|
||||
public int ReadPin(int pin){
|
||||
if (pin<0 || pin>7) return -1;
|
||||
if (super.isOpened()){
|
||||
byte[] buffer = super.ReadBytes(1);
|
||||
byte masker = (byte) (1<<pin);
|
||||
return (buffer[0] & masker) > 0 ? 1 : 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user