Paso 5:
5 - multiplexadas a través del registro de desplazamiento de Arduino / Atmega 328 / contador de potenciómetro
Potenciómetro permite incrementar y disminuir un contador entre cero y ocho
Código
Contador de 7 segmentos LED, Multiplexión usando 74HC595 8 bit shift register, incremento contador cero ocho cero por potenciómetro
Código mangled juntos de estas fuentes - fellas gracias
http://www.Sweeting.org/Mark/blog/2011/11/27/Arduino-74hc595-shift-register-and-a-7-Segment-LED-display
http://thecustomgeek.com/2011/06/29/Multiplexing-for-a-7-Year-Old/
const int latchPin = 5; PIN conectado al Pin 12 del 74HC595 (Latch)
const int dataPin = 6; PIN conectado al Pin 14 del 74HC595 (datos)
const int clockPin = 7; PIN conectado al Pin 11 del 74HC595 (reloj)
int contador = 0; inicializar contador de cero
int potReading = 0;
números del byte const [10] = / / describir cada dígito en pantalla segmentos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
{
B11111100,
B01100000,
B11011010,
B11110010,
B01100110,
B10110110,
B10111110,
B11100000,
B11111110,
B11100110,
};
void setup()
{
pinMode (latchPin, salida); Set de pins de SR a la salida
pinMode (clockPin, salida);
pinMode (dataPin, salida);
}
void loop()
{
potReading = analogRead (A0);
potReading = mapa (potReading, 0, 1023, 0, 8);
{
if(potReading > 8)
potReading--;
Show(Numbers[potReading]);
}
{
if(potReading < 0)
potReading ++;
Show(Numbers[potReading]);
}
}
void Mostrar (número de bytes)
{
Usar un bucle y un AND bit a bit para pasar cada bit que compone
los siete segmentos pantalla (de izquierda a derecha, A = > G) y
para ver si debe estar en o no
para (int j = 0; j < = 7; j ++)
{
byte toWrite = número de & (B10000000 >> j);
{if(!toWrite)}
continuar;
} / / Si todos los bits son 0 entonces no hay punto de escribir en el registro de desplazamiento, para salir y pasar al siguiente segmento.
shiftIt(toWrite); De lo contrario cambia de puesto en el registro
}
}
void shiftIt (datos del octeto)
{
digitalWrite (latchPin, bajo); Definir latchPin baja durante estos 8 bits de sincronización el registro
para (int k = 0; k < = 7; k ++)
{
digitalWrite (clockPin, LOW); clockPin baja antes de enviar un poco
Tenga en cuenta que en nuestro caso, necesitamos establecer pinState en 0 (bajo) para
"On" como el 74HC595 se hunde actual cuando se utiliza un común
display de ánodo. Si desea utilizar un display de cátodo común entonces
cambiar esto alrededor.
Si (datos & (1 << k))
{
digitalWrite (dataPin, HIGH); "encender"
}
otra cosa
{
digitalWrite (dataPin, LOW); "apague"
}
digitalWrite (clockPin, HIGH); y del reloj de la broca
}
digitalWrite (clockPin, LOW); dejar de cambiar los datos
digitalWrite (latchPin, HIGH); establecer latchPin en alto para bloquear y enviar datos
}