Buenos dias, tengo un proyecto con un panel rgb y quisiera hacer una prueba pero no se muy bien como programarlo.
Este es mi codigo:
uint64_t row1[16];
uint64_t temp;
int LP = 10; // Latch Pin
int ClkP = 11; // Clock Pin
int R1P = 24; // R1 Pin
int G1P = 25; // B1 Pin
int B1P = 26; // G1 Pin
int R2P = 27; // R2 Pin
int G2P = 28; // B2 Pin
int B2P = 29; // G2 Pin
int AP = A0; // A Pin
int BP = A1; // B Pin
int CP = A2; // C Pin
int OEP = 9; // OE Pin
int row = 0;
const int pinA=2;
const int pinB=3;
const int pinC=4;
const int pinD=5;
byte x=1;
byte i=0;
void setup() {
pinMode(LP, OUTPUT);
pinMode(ClkP, OUTPUT);
pinMode(R1P, OUTPUT);
pinMode(B1P, OUTPUT);
pinMode(G1P, OUTPUT);
pinMode(R2P, OUTPUT);
pinMode(B2P, OUTPUT);
pinMode(G2P, OUTPUT);
pinMode(AP,OUTPUT);
pinMode(BP,OUTPUT);
pinMode(CP,OUTPUT);
pinMode(OEP,OUTPUT);
digitalWrite(AP, LOW);
digitalWrite(BP, LOW);
digitalWrite(CP, LOW);
digitalWrite(LP, LOW);
digitalWrite(OEP, LOW);
row=0;
temp = 0x0000000000000001;
row1 [0]= 0x0000387F1CFE0000;
row1 [1]= 0x0000FFFFFFFF0000;
row1[2]= 0x00007CFF3EFF0000;
row1 [3]= 0x0000FFFFFFFF0000;
row1 [4]= 0x0000FE3F7FFC0000;
row1 [5]= 0x0000C00003000000;
row1 [6]= 0x0000FE1F7FF80000;
row1 [7]= 0x0000E00107800000;
}
void loop() {
for(row=0; row<4; row++){
for (i = 0; i < 64; i++) {
digitalWrite(B1P, !!(row1[row] & (temp << (63-i))));
digitalWrite(G1P, 0);
digitalWrite(R1P, 0);
digitalWrite(B2P, !!(row1[row+4] & (temp << (63-i))));
digitalWrite(G2P, 0);
digitalWrite(R2P, 0);
digitalWrite(ClkP, HIGH);
digitalWrite(ClkP, LOW);
}
digitalWrite(OEP, HIGH);
digitalWrite(LP, HIGH);
digitalWrite(AP, row & B10);//Cambiado respecto al código que no funcionaba
digitalWrite(BP, row & 01);//Cambiado respecto al código que no funcionaba
digitalWrite(OEP, LOW);
digitalWrite(LP, LOW);
}
La cuetion es que en la parte de:
for (i = 0; i < 64; i++) {
digitalWrite(B1P, !!(row1[row] & (temp << (63-i))));
me gustaria unsar una veriable el doble de larga, Actualmente uso:
row1 [0]= 0x0000387F1CFE0000; pero me gustria probar con algo como
row1 [0]= 0xC00F0FFCF03F03F0CFFFFFFFFFFFFFFF; Aunque fuera haciendolo en dos variables tipo Row una al llegar a 63 y otra despue.
¿Alguien puede darme alguna idea?