// #include <SPI.h>
// const uint32_t CS_PIN = D10; // à adapter à votre cablage
// const uint16_t DIG0 = 0x01; // ligne 0
// void exo1_1()
// {
// SPISettings cfgSPI(10000000, MSBFIRST, SPI_MODE0);
// uint16_t trame;
// trame = DIG0 << 8;
// trame |= 0x55;
// digitalWrite(CS_PIN, LOW);
// SPI.beginTransaction(cfgSPI);
// SPI.transfer16(trame);
// SPI.transfer16(trame);
// SPI.endTransaction();
// digitalWrite(CS_PIN, HIGH); // le front montant provoque le verrouillage des données dans le(s) MAX7219
// }
// void exo1_2()
// {
// SPISettings cfgSPI(10000000, MSBFIRST, SPI_MODE0);
// SPI.beginTransaction(cfgSPI);
// uint16_t trame;
// for(uint8_t dig = 0; dig<8; dig++)
// {
// trame = (DIG0+dig) << 8;
// trame |= 0x55;
// digitalWrite(CS_PIN, LOW);
// for(uint8_t i=0; i<4; i++)
// {
// SPI.transfer16(trame);
// }
// SPI.endTransaction();
// digitalWrite(CS_PIN, HIGH);
// }
// }
// void exo1_3()
// {
// SPISettings cfgSPI(10000000, MSBFIRST, SPI_MODE0);
// SPI.beginTransaction(cfgSPI);
// uint16_t trame;
// for(uint8_t dig = 0; dig<8; dig++)
// {
// static uint8_t data = 0x55;
// trame = (DIG0+dig) << 8;
// trame |= data;
// digitalWrite(CS_PIN, LOW);
// for(uint8_t i=0; i<4; i++)
// {
// SPI.transfer16(trame);
// }
// data ^= 0xFF;
// digitalWrite(CS_PIN, HIGH);
// }
// SPI.endTransaction();
// }
// void exo1_4()
// {
// SPISettings cfgSPI(10000000, MSBFIRST, SPI_MODE0);
// uint8_t addr;
// uint8_t data;
// SPI.beginTransaction(cfgSPI);
// for(uint8_t dig = 0; dig<8; dig++)
// {
// addr = DIG0+dig;
// digitalWrite(CS_PIN, LOW);
// data = 0xFF << (7 - dig);
// SPI.transfer(addr);
// SPI.transfer(data);
// data = 0xFF;
// SPI.transfer(addr);
// SPI.transfer(data);
// SPI.transfer(addr);
// SPI.transfer(data);
// data = 0xFF >> dig;
// SPI.transfer(addr);
// SPI.transfer(data);
// digitalWrite(CS_PIN, HIGH);
// }
// SPI.endTransaction();
// }
#include <MD_MAX72xx.h>
const uint32_t CS_PIN = D10;
const uint32_t DATA_PIN = D11;
const uint32_t CLK_PIN = D13;
const uint8_t NB_MAX7219=4; // nombre d'afficheur(s) juxtaposé(s)
MD_MAX72XX afficheurs( MD_MAX72XX::PAROLA_HW, DATA_PIN, CLK_PIN, CS_PIN, NB_MAX7219);
void setup()
{
// Exercice 1
// Serial.begin(115200);
// Serial.println("Boot");
// pinMode(CS_PIN, OUTPUT);
//exo1_1()
//exo1_2();
//exo1_3();
//exo1_4();
// Exercice 2
afficheurs.begin();
}
void loop()
{
// Exercice 1
// put your main code here, to run repeatedly:
//delay(10); // this speeds up the simulation
//Exercie 2
static uint8_t colonne_b = 0;
uint8_t colonne_m = (colonne_b + 6) % 40;
afficheurs.clear();
afficheurs.setChar(colonne_b,'b');
afficheurs.setChar(colonne_m,'m');
colonne_b = (colonne_b +1) % 40;
afficheurs.update();
delay(100);
}