Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unsigned int Display = 0xFFFF;
- unsigned int Temp = 0; // Temp para usar serial monitor com entrada dos dados
- byte Flag; // Flag para usar serial monitor com entrada dos dados
- byte bitSt[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Matriz para guardar os tempos
- byte HC595 = 2; // Quantidade de HC595
- #define Clock 2 // Port para o clock do HC585
- //-------------------------
- void setup()
- {
- Serial.begin(9600); // Inicialisa serial
- pinMode(Clock, OUTPUT); // Port saída para o HC595 Pino 11
- }
- //------------------------
- void loop()
- {
- // Teste_C_Serial(); // Testa com serial entre com 2 digitos
- // Display; // Testa sem incremento
- Display++; // Testa com incremento
- for (int i = 0; i < (HC595 * 8); i++) // Ecexuta para a quantidade de portas dos HC595
- { // Separa os bites dos dados
- if (bitRead(Display, i) == 1) // Se for bit
- bitSt[i] = 20; // Define 20 uSeg
- else // Se for não bit
- bitSt[i] = 1; // Define 1 uSeg
- }
- cli(); // Desativa interrupts
- Byte(); // Chama a rotina que envia os bits
- Latch(); // Chama rotina que transfere dos shiftregs para os Latchs
- sei(); // Ativa interrupts
- }
- //---------------------------
- void Latch()
- {
- digitalWrite(Clock, LOW); // Down port
- delayMicroseconds(150); // Tempo de transferencia dos shiftregs para os latchs
- digitalWrite(Clock, HIGH); // Upper port
- delayMicroseconds(50); // Tempo entre os bits (Tempo de recarga do capacitor)
- }
- //---------------------------
- void Byte()
- {
- for (int i = 0; i < (HC595 * 8); i++) // Ecexuta para a quantidade de portas dos HC595
- {
- digitalWrite(Clock, LOW); // Lower port
- delayMicroseconds(bitSt[i]); // bit on ou off
- digitalWrite(Clock, HIGH); // Upper port
- delayMicroseconds(20); // Tempo entre os bits (Tempo de recarga do capacitor)
- }
- }
- //-------------------------------------------
- void Teste_C_Serial()
- {
- if (Serial.available()) // Se a serial tiver dados
- {
- Temp = 0; // Zera temporario
- }
- while (Serial.available()) // Enquanto tiver dados na serial
- {
- Temp = Temp | Serial.read(); // Le a serial e or com Temp
- delay(10); // Tempo de serial
- if (Flag == 0) // Se ainda nao passou por aqui
- {
- Temp = Temp << 8 ; // Desloque
- Flag = 1; // Informa que ja passou por aqui
- }
- }
- Flag = 0; // Desliga passagem
- Display = Temp; // Copia Temp para Digital
- }
- //---------------------------------------------
Add Comment
Please, Sign In to add comment