#include <Wire.h>
#include <Arduino.h>
#define HT16K33_ADDRESS 0x70
#define MATRICE_ROW 0x00
void writeDisplay(uint8_t lowByte, uint8_t highByte) {
Wire.beginTransmission(HT16K33_ADDRESS);
// Le registre de données pour la ligne COM0 est 0x00
Wire.write(MATRICE_ROW);
// Écriture des deux octets (16 bits) représentant l'état des segments (SEG0 à SEG15)
// pour la ligne MATRICE_ROW (qui est COM0 = 0)
Wire.write(lowByte); // Octet Low (SEG0-7)
Wire.write(highByte); // Octet High (SEG8-15)
Wire.endTransmission();
}
void setup()
{
Wire.begin();
// initialize serial interface
Serial.begin(115200);
// 1. Initialisation de l'Oscillateur (System Setup, adresse 0x2x)
// Commande 0x21 : Active l'oscillateur interne
Wire.beginTransmission(HT16K33_ADDRESS);
Wire.write(0x21);
Wire.endTransmission();
// 2. Initialisation de l'affichage (Display Setup, adresse 0x8x)
// Commande 0x81 : Allume l'affichage (Display ON)
Wire.beginTransmission(HT16K33_ADDRESS);
Wire.write(0x81);
Wire.endTransmission();
// 3. Réglage de la luminosité (Dimming, adresse 0xEx)
// Commande 0xE0 à 0xEF : Luminosité 0 à 15. Ici, 0xEF (max)
Wire.beginTransmission(HT16K33_ADDRESS);
Wire.write(0xE9);
Wire.endTransmission();
Serial.println("HT16K33 initialized");
Serial.println("Lighting up all leds...");
writeDisplay(0xFF, 0xFF);
// Allume tous les segments de la ligne COM0
}
void loop() {
delay(1000);
writeDisplay(0x00, 0x00);
delay(1000);
writeDisplay(0xFF, 0xFF);
}