// Объявляем переменные:
// номер порта, на который выводятся биты, соединяется с SI входом
int dataPin = 9;
int clockPin = 11; // к выводу 11 регистра SCK
int latchPin = 12; // к выводу 12 регистра RCK
// Для высвечивания номера данные переменные записываются в виде байта
const byte NumbersToSegments[11] = {
0b01000000, // 0
0b01111001, // 1
0b00100100, // 2
0b00110000, // 3
0b00011001, // 4
0b00010010, // 5
0b00000010, // 6
0b01111000, // 7
0b00000000, // 8
0b00010000, // 9
0b11111111 // Пустой (нет символа)
};
int Numbers = 5; // Переменная выбора номера
void setup()
{
Serial.begin(9600);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop()
{
byte data[] = {NumbersToSegments[Numbers], NumbersToSegments[0]}; // Формируем массив
sendData(data); // Передаём массив и его размер
}
void sendData(byte *arr) {
digitalWrite(latchPin, LOW);
for (size_t i = 0; i < sizeof(arr); i++) {
shiftOut(dataPin, clockPin, LSBFIRST, arr[i]);
}
digitalWrite(latchPin, HIGH);
}