WarpPI/core/src/main/java/it/cavallium/warppi/device/chip/ParallelToSerial.java

36 lines
1.3 KiB
Java
Raw Normal View History

2018-09-04 12:12:41 +02:00
package it.cavallium.warppi.device.chip;
2019-02-27 23:29:03 +01:00
import it.cavallium.warppi.WarpPI;
2018-09-04 12:12:41 +02:00
public class ParallelToSerial {
private final int SH_LD;
private final int CLK_INH;
private final int QH;
private final int CLK;
2018-09-22 11:17:30 +02:00
public ParallelToSerial(final int SH_LD_pin, final int CLK_INH_pin, final int QH_pin, final int CLK_pin) {
2018-09-04 12:12:41 +02:00
SH_LD = SH_LD_pin;
CLK_INH = CLK_INH_pin;
QH = QH_pin;
CLK = CLK_pin;
}
public boolean[] read() {
final boolean[] data = new boolean[8];
2019-02-27 23:29:03 +01:00
WarpPI.getPlatform().getGpio().digitalWrite(CLK_INH, WarpPI.getPlatform().getGpio().valueHigh());
WarpPI.getPlatform().getGpio().digitalWrite(SH_LD, WarpPI.getPlatform().getGpio().valueLow());
WarpPI.getPlatform().getGpio().delayMicroseconds(1);
WarpPI.getPlatform().getGpio().digitalWrite(SH_LD, WarpPI.getPlatform().getGpio().valueHigh());
WarpPI.getPlatform().getGpio().digitalWrite(CLK_INH, WarpPI.getPlatform().getGpio().valueLow());
2018-09-04 12:12:41 +02:00
for (int i = 7; i >= 0; i--) {
2019-02-27 23:29:03 +01:00
WarpPI.getPlatform().getGpio().digitalWrite(CLK, WarpPI.getPlatform().getGpio().valueHigh());
WarpPI.getPlatform().getGpio().digitalWrite(CLK, WarpPI.getPlatform().getGpio().valueLow());
data[i] = WarpPI.getPlatform().getGpio().digitalRead(QH) == WarpPI.getPlatform().getGpio().valueHigh() ? true : false;
2018-09-04 12:12:41 +02:00
}
return data;
}
}