// Geworkian Michael 2024
/*int num_array[10]= {       
  0b11111100,0b01100000,0b11011010,0b11110010,0b01100110,         
//     0          1         2         3           4           5
                           
  0b10110110,0b10111110,0b11100000,0b11111110,0b11100110 };   
//     5        6           7         8           9
int datapin = 11,    clockpin = 13,   latchpin = 8;
void setup() { Serial.begin(9600);
 pinMode(datapin, OUTPUT);  pinMode(clockpin, OUTPUT);  pinMode(latchpin, OUTPUT);  }
void loop() 
{ for (int counter = 0; counter <10; ++counter) 
  {delay(1000);   Num_Write(counter);   }
  delay(3000);
}
void Num_Write(int number)  // this functions writes values to the sev seg pins  
{ byte data=num_array[number];
  Serial.println(data,BIN);
  shiftOut(datapin, clockpin,  LSBFIRST, data);
  // Toggle the latch pin :
  digitalWrite(latchpin, HIGH);     digitalWrite(latchpin, LOW);
  //for (int i=0; i< 7; i++) {
  //  digitalWrite(2, num_array[number][i]);       pin++;
  //}
}   */

// Работает, но НЕ правильно (НЕ правильные цифры) Схема соотв-ет Тинкеру
#include <SPI.h> // подключаем СТАНДАРТНУЮ библиотеку SPI
byte reg = 8 ; // провод CS подсоединяем к 8-му пину Arduino
void setup()
{ SPI.begin();  // инициализируем SPI
  pinMode(reg, OUTPUT); } // 8-й пин как выход  
void loop() { // храним в массиве все цифры:
  static uint8_t digit[16] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
 for (int i=0;i<16;i++){  // выводим цифры по одной
    digitalWrite(reg, LOW); // притягиваем CS к земле - начало передачи
    SPI.transfer(digit[i]); // передаем байт
    digitalWrite(reg, HIGH);// отпускаем  CS - конец передачи
    delay(1000); 
  }
  //очистим дисплей на секунду
  digitalWrite(reg, LOW);
  SPI.transfer(0xFF);
  digitalWrite(reg, HIGH);
  delay(1000);
}
//greenoakst.blogspot.ru/2011/11/arduino-7-spi.html  
74HC595