#include <RoxMux.h>
#include <ShiftOutMega.h>
// MUX_TOTAL is the number of 74HC165s that you have chained together
// if you have more than 1 then change it to that number.
#define MUX_TOTAL 2
Rox74HC165 <MUX_TOTAL> mux;
/////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/*#define ARRAY_SIZE 8
#define LAST_SELECTED_LED_EEPROM_ADDR 6
int ledPinArray[8] = { LED_1, LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8};
*/
/////////////////////////////////////////////////////////////////////
// pins for 74HC165
#define PIN_DATA 23 // pin 9 on 74HC165 (DATA)
#define PIN_LOAD 22 // pin 1 on 74HC165 (LOAD)
#define PIN_CLK 21 // pin 2 on 74HC165 (CLK))
// keep track of the previous state of the pins
// each element of the array holds the state of 8 pins, 1 per bit
bool pinState[MUX_TOTAL*8];
/////////////////////////////////////////////////////////////////////
//Variáveis de uso dos registradores 74HC595
#define latchPin 33 //Pino 8 conectado ao pino 12 do 74HC595 (Latch)(STCP).
#define dataPin 25 //Pino 11 conectado ao pino 14 do 74HC595 (Data)(DS).
#define clockPin 32 //Pino 12 conectado ao pino 11 do 74HC595 (Clock)(SHCP).
//Quantidade de registradores (74HC595). Para cada registrador, mais 8 saídas.
int qtdRegistradores = 16;
ShiftOutMega mega(latchPin, dataPin, clockPin, qtdRegistradores); //Inicia a biblioteca passando os parametros de uso.
////////////////////////////////////////////////////////////////////
//Variáveis de uso dos registradores 74HC595a
#define latchPina 12 //Pino 8 conectado ao pino 12 do 74HC595 (Latch).
#define dataPina 13 //Pino 11 conectado ao pino 14 do 74HC595 (Data).
#define clockPina 14 //Pino 12 conectado ao pino 11 do 74HC595 (Clock).
//Quantidade de registradores (74HC595). Para cada registrador, mais 8 saídas.
int qtdRegistradoresa = 8;
ShiftOutMega megaa(latchPina, dataPina, clockPina, qtdRegistradoresa); //Inicia a biblioteca passando os parametros de uso.
////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
void setup(){
mux.begin(PIN_DATA, PIN_LOAD, PIN_CLK);
Serial.begin(115200);
}
////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
void loop(){
// read the mux
mux.update();
for(uint16_t i=0, n=mux.getLength(); i < n ; i++){
mux.read(i);
if(mux.read(i) == 1){
mega.shiftWrite(i+1, HIGH);
delay(5000);
megaa.shiftWrite(i+1, HIGH);
megaa.shiftWrite(i+1, LOW);
Serial.print("Pin ");
Serial.print(i);
Serial.print(": ");
Serial.print(mux.read(i));
Serial.println(": on.");
} else if(mux.read(i) == 0){
mega.shiftWrite(i+1, LOW);
Serial.print("Pin ");
Serial.print(i);
Serial.print(": ");
Serial.print(mux.read(i));
Serial.println(": off.");
}
delay(50);
}
}