Welcome.
I need tips on how to properly address the HCF4094.
I'm trying to convert program, which uses two units 7-segment LED displays, for my purpose of build a 4x 7-segment led clock.
I need to find a way to adress every HCF4094 separately. For now i can manage to have the same value on 2 pairs of display.
//---Biblioteki
#include <SPI.h>
//---Sta?e
#define CS1 46 //Chip select 1
#define CS2 47 //Chip select 2
#define CS3 48 //Chip select 3
#define CS4 49 //Chip select 4
#define NOS1 10 //max digit posibilities
#define NOS2 6
#define NOS3 4
#define NOS4 2
#define TIME 200 //base time
//---Zmienne
byte a = 0; //youngest digit
byte b = 0; //oldest digit
byte displayArray[NOS1] = { B11000000, // 0
B11111001, // 1 DP-g-f-d-e-c-b-a
B10100100, // 2
B10110000, // 3
B10011001, // 4
B10010010, // 5
B00000010, // 6
B11111000, // 7
B10000000, // 8
B10010000 };// 9
void setup(){
pinMode (CS1, OUTPUT);
pinMode (CS2, OUTPUT);
pinMode (CS3, OUTPUT);
pinMode (CS4, OUTPUT);
SPI.begin();
}
void loop(){
for(b=0; b<=NOS1; b++){ //(Number Of Sign)
if(b == NOS1){ //zabezpieczenie przed przepe?nieniem ostatniej cyfry (max = 9)
b = 0; //wyzeruj ostatni? cyfr? na wy?wietlaczu
a++; //inkrementuj cyfr? przed "b" na wy?wietlaczu
}
if(a >= NOS1){ //zabezpieczenie przed przepe?nieniem cyfry "a" (max = 9)
a = 0; //wyzeruj cyfr? "a"
}
digitalWrite(CS1, LOW); //Chip-select (mo?naby dla ka?dego rejestru przesuwnego zrobi? osobny CS, ale wi??e si? to zaj?ciem wi?kszej ilo?ci wyj?? cyfrowych)
SPI.transfer (displayArray[b]); //Wy?lij najstarsz? cyfr? (b) do rejestru przesuwnego (cyfra pierwsza od prawej na wy?wietlaczu)
SPI.transfer (displayArray[a]); //Wy?lij najm?odsz? cyfr? (a)
digitalWrite(CS1, HIGH);
delay(TIME); //Podstawa czasu
}
}