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 SerialToParallel {
|
|
|
|
private final int RCK; //Storage register clock pin (latch pin)
|
|
|
|
private final int SCK; //Shift register clock pin
|
|
|
|
private final int SER; //Serial data input
|
|
|
|
|
2018-09-22 11:17:30 +02:00
|
|
|
public SerialToParallel(final int RCK_pin, final int SCK_pin, final int SER_pin) {
|
2018-09-04 12:12:41 +02:00
|
|
|
RCK = RCK_pin;
|
|
|
|
SCK = SCK_pin;
|
|
|
|
SER = SER_pin;
|
|
|
|
}
|
|
|
|
|
2018-09-22 11:17:30 +02:00
|
|
|
public void write(final boolean[] data) {
|
2018-09-28 11:39:28 +02:00
|
|
|
if (data.length != 8) {
|
2018-09-04 12:12:41 +02:00
|
|
|
return;
|
2018-09-28 11:39:28 +02:00
|
|
|
} else {
|
2019-02-27 23:29:03 +01:00
|
|
|
WarpPI.getPlatform().getGpio().digitalWrite(RCK, 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(SCK, WarpPI.getPlatform().getGpio().valueLow());
|
|
|
|
WarpPI.getPlatform().getGpio().digitalWrite(SER, data[i]);
|
|
|
|
WarpPI.getPlatform().getGpio().digitalWrite(SCK, WarpPI.getPlatform().getGpio().valueHigh());
|
2018-09-04 12:12:41 +02:00
|
|
|
}
|
|
|
|
|
2019-02-27 23:29:03 +01:00
|
|
|
WarpPI.getPlatform().getGpio().digitalWrite(RCK, WarpPI.getPlatform().getGpio().valueHigh());
|
2018-09-04 12:12:41 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|