Сдвоенный модуль семисегментного 4-разрядного дисплея (0,36 дюйма) красного цвета свечения с управлением по последовательной шине на драйвере 74HC595 управляется как от платы Arduino, так и от Raspberry Pi. Часы, секундомер, буквенно-цифровое обозначение и многое другое, теперь все стало доступным и простым.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
#define SCLK 7 // пины Arduino #define RCLK 6 #define DIO 5 byte digitBuffer[8]; void setup(){ pinMode(RCLK, OUTPUT); pinMode(SCLK, OUTPUT); pinMode(DIO, OUTPUT); } void loop(){ // заполняем массив digitBuffer[0] = 1; digitBuffer[1] = 2; digitBuffer[2] = 3; digitBuffer[3] = 4; digitBuffer[4] = 5; digitBuffer[5] = 6; digitBuffer[6] = 7; digitBuffer[7] = 8; // однократно выводим данные из массива на 7 сегмент // т.е. функция должна постоянно "крутиться". showDisplay(); } void showDisplay(){ const byte digit[10] = { // маска для 7-сегментного индикатора 0b11000000, // 0 0b11111001, // 1 0b10100100, // 2 0b10110000, // 3 0b10011001, // 4 0b10010010, // 5 0b10000010, // 6 0b11111000, // 7 0b10000000, // 8 0b10010000, // 9 }; const byte chr[8] = { // маска для разряда 0b10000000, 0b01000000, 0b00100000, 0b00010000, 0b00001000, 0b00000100, 0b00000010, 0b00000001 }; // отправляем в цикле по 2 байта в сдвиговые регистры for(byte i = 0; i <= 7; i++){ digitalWrite(RCLK, LOW); // открываем защелку shiftOut(DIO, SCLK, MSBFIRST, digit[digitBuffer[i]]); // отправляем байт с "числом" shiftOut(DIO, SCLK, MSBFIRST, chr[i]); // включаем разряд digitalWrite(RCLK, HIGH); // защелкиваем регистры delay(1); // ждем немного перед отправкой следующего "числа" } } |