import com.pi4j.Pi4J;
import com.pi4j.io.spi.Spi;
import com.pi4j.io.spi.SpiConfig;
import java.io.IOException;
import com.pi4j.context.Context;
import com.pi4j.library.pigpio.PiGpio;
import com.pi4j.plugin.pigpio.provider.gpio.digital.PiGpioDigitalInputProvider;
import com.pi4j.plugin.pigpio.provider.gpio.digital.PiGpioDigitalOutputProvider;
import com.pi4j.plugin.pigpio.provider.i2c.PiGpioI2CProvider;
import com.pi4j.plugin.pigpio.provider.pwm.PiGpioPwmProvider;
import com.pi4j.plugin.pigpio.provider.serial.PiGpioSerialProvider;
import com.pi4j.plugin.pigpio.provider.spi.PiGpioSpiProvider;
public class Matrix {
public static void main(String[] args) throws InterruptedException, IOException{
final var piGpio = PiGpio.newNativeInstance();
var pi4j = Pi4J.newContextBuilder()
.noAutoDetect()
.add(
PiGpioDigitalInputProvider.newInstance(piGpio),
PiGpioDigitalOutputProvider.newInstance(piGpio),
PiGpioPwmProvider.newInstance(piGpio),
PiGpioI2CProvider.newInstance(piGpio),
PiGpioSerialProvider.newInstance(piGpio),
PiGpioSpiProvider.newInstance(piGpio)
)
.build();
Max7219 neu = new Max7219(pi4j.create(buildSpiConfig(pi4j, 0, 8000000)));//(buildSpiConfig(pi4j, 0, 8000000)));
System.out.println("hhello");
neu.initial();
neu.aus();
neu.execute((byte)1, (byte)129);
}
private static SpiConfig buildSpiConfig(Context pi4j, int channel, int baud) {
return Spi.newConfigBuilder(pi4j)
.id("SPI" + channel)
.name("Matrix")
.address(channel)
.baud(baud)
.build();}
}
class Max7219{
protected final Spi spi;
public Max7219(Spi spi) {
this.spi = spi;}
void initial() throws IOException, InterruptedException{ // hier wird alles initialisiert
execute((byte) 0x09, (byte) 0x00); // decode mode
execute((byte)0x0a, (byte)15); // intensität 1-15
execute((byte)0x0b, (byte)0x07); // scan limit, 07 ist stehet fuer 8 Reihen
execute((byte)0x0c, (byte)0x01); // steht fuer shutdown, 01 ist normal mod
execute((byte)0x0f, (byte)0x00); //display test, 00 ist aus
}
void aus() throws IOException, InterruptedException{ //schaltet erst einmal alles aus
int end = 8;
for (int i = 1; i <=end; i++) {
execute((byte)i, (byte)0);
System.out.println("nuna" + i);}
}
public void execute(byte command, byte data){
spi.write(command, data);
}
}