#include <SPI.h>
const int CS_PIN = 10;
const int NUM_DEVICES = 48;
void setup() {
Serial.begin(115200);
SPI.begin();
SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0));
pinMode(CS_PIN, OUTPUT);
// Tänd en matris i taget för diagnostik
for(int device = 0; device < NUM_DEVICES; device++) {
Serial.print("Testing device: ");
Serial.println(device);
initDevice();
// Tänd alla rader på denna matris
for(int row = 1; row <= 8; row++) {
digitalWrite(CS_PIN, LOW);
for(int i = 0; i < NUM_DEVICES; i++) {
if(i == device) {
SPI.transfer(row);
SPI.transfer(0xFF);
} else {
SPI.transfer(0x00);
SPI.transfer(0x00);
}
}
digitalWrite(CS_PIN, HIGH);
}
delay(100);
}
}
void initDevice() {
sendCommand(0x0C, 0x01);
sendCommand(0x0A, 0x0F);
sendCommand(0x09, 0x00);
sendCommand(0x0B, 0x07);
}
void sendCommand(uint8_t reg, uint8_t data) {
digitalWrite(CS_PIN, LOW);
for(int i = 0; i < NUM_DEVICES; i++) {
SPI.transfer(reg);
SPI.transfer(data);
}
digitalWrite(CS_PIN, HIGH);
}
void loop() {}