Buenos dias, soy pachu y bastante novato en arduino
Necesito usar dos displays que estan controlados por cuatro 74hc595 cada uno lleva dos.
#include <Arduino.h>
const int sensorPin = A2;
//Pin connected to ST_CP of 74HC595 AKA RCLK
short rclk = 5;
//Pin connected to SH_CP of 74HC595 AKA SCLK
short sclk = 4;
//Pin connected to DS of 74HC595 AKA DIO
short dio = 6;
int sensorValue;
long contador=9996;
long anteriorsensorpin=0;
byte getBits(int val)
{
byte b;
switch(val)
{
case 0:
b = 0b11000000;
break;
case 1:
b = 0b11111001;
break;
case 2:
b = 0b10100100;
break;
case 3:
b = 0b10110000;
break;
case 4:
b = 0b10011001;
break;
case 5:
b = 0b10010010;
break;
case 6:
b = 0b10000010;
break;
case 7:
b = 0b11111000;
break;
case 8:
b = 0b10000000;
break;
case 9:
b = 0b10010000;
break;
default:
b = 0b11111111;
}
return b;
}
void setup()
{
//set pins to output so you can control the shift register
pinMode(rclk, OUTPUT);
pinMode(sclk, OUTPUT);
pinMode(dio, OUTPUT);
pinMode(A2, INPUT);
//char caracter[]={0b11001111,0b01001111};
//char posicion[]={0b10001000,0b10010000};
//Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(sensorPin);
if (sensorValue== 0 && anteriorsensorpin>100 )
{
contador=contador+1;
}
digitalWrite ( rclk , LOW ) ;
shiftOut(dio, sclk, MSBFIRST, getBits((contador/1000)%10) ); // Caracter
shiftOut(dio, sclk, MSBFIRST, 0b10001000 ); // Posicion
digitalWrite ( rclk , HIGH ) ;
digitalWrite ( rclk , LOW ) ;
shiftOut(dio, sclk, MSBFIRST, getBits((contador/100)%10) ); // Caracter
shiftOut(dio, sclk, MSBFIRST, 0b10000100 ); // Posicion
digitalWrite ( rclk , HIGH ) ;
digitalWrite ( rclk , LOW ) ;
//shiftOut(dio, sclk, MSBFIRST, (0b10011001-10000000) ); // Caracter
shiftOut(dio, sclk, MSBFIRST, (getBits((contador/10)%10) -10000000)); // Caracter
shiftOut(dio, sclk, MSBFIRST, 0b10000010 ); // Posicion
digitalWrite ( rclk , HIGH ) ;
digitalWrite ( rclk , LOW ) ;
shiftOut(dio, sclk, MSBFIRST, getBits(contador%10) ); // Caracter
shiftOut(dio, sclk, MSBFIRST, 0b10000001 ); // Posicion
digitalWrite ( rclk , HIGH ) ;
anteriorsensorpin=sensorValue;
//Serial.println(contador);
//Serial.println( getBits(contador) );
}
el problema radica en que muestra las dos pantallas por duplicado
el segundo display esta conectador para usar el multiflex de forma que el QH del primer display va al DIO del segundo display
Gracias y un saludo
