//const uint8_t data_pin = 11; // 9 pin, Q7 /данные или MISO
//const uint8_t shld_pin = 8; // 1 pin, !PL /защелка
//const uint8_t clk_pin = 12; // 2 pin, CP /такты или SCK
//const uint8_t ce_pin = 9; // 15 pin, !CE / чипселект
#define DATA_PIN 11 // пин данных
#define LATCH_PIN 8 // пин защелки
#define CLOCK_PIN 12 // пин тактов синхронизации
byte byteR = 0;
bool rrr[41][2] = {
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #1 нет
{ 0, 0 }, // #2 нет
{ 0, 0 }, // #3 нет
{ 0, 0 }, // #4 нет
{ 0, 0 }, // #5 нет
{ 0, 0 }, // #6 нет
{ 0, 0 }, // #7 нет
{ 0, 0 }, // #8 нет
{ 0, 0 }, // #9 нет
{ 0, 0 }, // #10 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #20 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #30 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 }, // #0 нет
{ 0, 0 } // #39 нет
};
void setup() {
pinMode(DATA_PIN, INPUT); // инициализация пинов
pinMode(CLOCK_PIN, OUTPUT);
pinMode(LATCH_PIN, OUTPUT);
digitalWrite(LATCH_PIN, HIGH);
Serial.begin(9600);
}
void loop() {
readByte();
for (int i = 39; i >= 0; i--) {
Serial.print(rrr[i][0]); // выводим результат в COM-порт
}
Serial.println("");
for (int i = 39; i >= 0; i--) {
rrr[i][0] = 0; // выводим результат в COM-порт
}
delay(1000); // пауза 1 сек
}
void readByte() {
byteR = 0;
digitalWrite(LATCH_PIN, LOW); // защелка
digitalWrite(LATCH_PIN, HIGH);
for (int i = 31; i >= 0; i--) { // считываем побитно 8 раз
if (digitalRead(DATA_PIN)) bitSet(rrr[i+8][0], i); // читываем бит, вставляем в байт
digitalWrite(CLOCK_PIN, HIGH); // синхроимпульс
digitalWrite(CLOCK_PIN, LOW);
}
for (int i = 7; i >= 0; i--) { // считываем побитно 8 раз
if (digitalRead(DATA_PIN)) bitSet(rrr[i][0], i); // читываем бит, вставляем в байт
digitalWrite(CLOCK_PIN, HIGH); // синхроимпульс
digitalWrite(CLOCK_PIN, LOW);
}
return byteR;
}