Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int potpin = 0;
- int ledPin = 13;
- int Botao = 2; //botao no pino 2
- int EstadoBotao = 0; //Variavel para ler o status do pushbutton
- int potvalor = 0;
- int potvalorfinal = 0;
- int minutos = 0;
- int segundostotal = 0;
- int segundos = 0;
- int Buzzer = 10;
- int minutosfinal = 0;
- int nbrshow = 0;
- int nbratual = 0;
- String stringmin, stringsec, stringtotal;
- const int g_pinCommLatch = 6;
- const int g_pinClock = 7;
- const int g_pinData = 4;
- byte g_digits [10];
- int g_numberToDisplay = 0;
- const int g_registers = 3;
- byte g_registerArray [g_registers];
- void setup(){
- pinMode(ledPin, OUTPUT); //Pino do led será saída
- pinMode(Botao, INPUT); //Pino com botão será entrada
- pinMode(Buzzer, OUTPUT);
- pinMode (g_pinCommLatch, OUTPUT);
- pinMode (g_pinClock, OUTPUT);
- pinMode (g_pinData, OUTPUT);
- digitalWrite(Botao, HIGH); //Ativa Pull-up
- Serial.begin(9600);
- g_digits [0] = 8 + 4 + 2 + 64 + 32 + 1;
- g_digits [1] = 4 + 2;
- g_digits [2] = 8 + 4 + 16 + 32 + 64;
- g_digits [3] = 8 + 4 + 16 + 2 + 64;
- g_digits [4] = 1 + 16 + 4 + 2;
- g_digits [5] = 8 + 1 + 16 + 2 + 64;
- g_digits [6] = 8 + 1 + 16 + 2 + 64 + 32;
- g_digits [7] = 8 + 4 + 2;
- g_digits [8] = 8 + 4 + 2 + 64 + 32 + 1 + 16;
- g_digits [9] = 8 + 4 + 2 + 1 + 16 + 64;
- }
- void sendSerialData (
- byte registerCount, // How many shift registers?
- byte *pValueArray) // Array of bytes with LSByte in array [0]
- {
- // Signal to the 595s to listen for data
- digitalWrite (g_pinCommLatch, LOW);
- for (byte reg = registerCount; reg > 0; reg--)
- {
- byte value = pValueArray [reg - 1];
- for (byte bitMask = 128; bitMask > 0; bitMask >>= 1)
- {
- digitalWrite (g_pinClock, LOW);
- digitalWrite (g_pinData, value & bitMask ? HIGH : LOW);
- digitalWrite (g_pinClock, HIGH);
- }
- }
- // Signal to the 595s that I'm done sending
- digitalWrite (g_pinCommLatch, HIGH);
- }
- void countdown(){
- while (segundos > 0 || minutos > 0){
- delay(1000);
- Serial.print("Tempo: ");
- Serial.print(minutos);
- Serial.print(":");
- Serial.println(segundos);
- segundos = segundos--;
- nbratual = (minutos * 100) + segundos;
- g_numberToDisplay = nbratual;
- if (g_numberToDisplay < 10)
- {
- g_registerArray [3] = g_digits [0];
- g_registerArray [2] = g_digits [0];
- g_registerArray [1] = g_digits [0];
- g_registerArray [0] = g_digits [g_numberToDisplay];
- }
- else if (g_numberToDisplay < 100)
- {
- g_registerArray [3] = g_digits [0];
- g_registerArray [2] = g_digits [0];
- g_registerArray [1] = g_digits [g_numberToDisplay / 10];
- g_registerArray [0] = g_digits [g_numberToDisplay % 10];
- }
- else if (g_numberToDisplay < 1000)
- {
- g_registerArray [3] = g_digits [0];
- g_registerArray [2] = g_digits [g_numberToDisplay / 100];
- g_registerArray [1] = g_digits [(g_numberToDisplay % 100) / 10];
- g_registerArray [0] = g_digits [g_numberToDisplay % 10];
- }
- else
- {
- g_registerArray [3] = g_digits [g_numberToDisplay / 1000];
- g_registerArray [2] = g_digits [(g_numberToDisplay % 1000) / 100];
- g_registerArray [1] = g_digits [(g_numberToDisplay % 100) / 10];
- g_registerArray [0] = g_digits [g_numberToDisplay % 10];
- }
- sendSerialData (g_registers, g_registerArray);
- if (segundos == 0){
- if (minutos > 0){
- minutos = minutos--;
- segundos = 60;
- }
- else {
- Serial.println("Acabou!!");
- digitalWrite(ledPin, HIGH);
- digitalWrite(Buzzer, HIGH);
- delay(500);
- digitalWrite(Buzzer, LOW);
- delay(500);
- digitalWrite(Buzzer, HIGH);
- delay(500);
- digitalWrite(Buzzer, LOW);
- delay(500);
- digitalWrite(Buzzer, HIGH);
- delay(500);
- digitalWrite(Buzzer, LOW);
- delay(500);
- digitalWrite(Buzzer, HIGH);
- delay(500);
- digitalWrite(Buzzer, LOW);
- }
- }
- }
- }
- void loop(){
- EstadoBotao = digitalRead(Botao);
- potvalor = map(analogRead(potpin), 0, 1023, 1, 301);
- segundostotal = potvalor;
- minutos = segundostotal / 60;
- segundos = segundostotal - (minutos*60);
- minutosfinal = minutos * 100;
- nbrshow = minutosfinal + segundos;
- g_numberToDisplay = nbrshow;
- if (g_numberToDisplay < 10)
- {
- g_registerArray [3] = g_digits [0];
- g_registerArray [2] = g_digits [0];
- g_registerArray [1] = g_digits [0];
- g_registerArray [0] = g_digits [g_numberToDisplay];
- }
- else if (g_numberToDisplay < 100)
- {
- g_registerArray [3] = g_digits [0];
- g_registerArray [2] = g_digits [0];
- g_registerArray [1] = g_digits [g_numberToDisplay / 10];
- g_registerArray [0] = g_digits [g_numberToDisplay % 10];
- }
- else if (g_numberToDisplay < 1000)
- {
- g_registerArray [3] = g_digits [0];
- g_registerArray [2] = g_digits [g_numberToDisplay / 100];
- g_registerArray [1] = g_digits [(g_numberToDisplay % 100) / 10];
- g_registerArray [0] = g_digits [g_numberToDisplay % 10];
- }
- else
- {
- g_registerArray [3] = g_digits [g_numberToDisplay / 1000];
- g_registerArray [2] = g_digits [(g_numberToDisplay % 1000) / 100];
- g_registerArray [1] = g_digits [(g_numberToDisplay % 100) / 10];
- g_registerArray [0] = g_digits [g_numberToDisplay % 10];
- }
- sendSerialData (g_registers, g_registerArray);
- if (EstadoBotao == HIGH){ //Se botão estiver pressionado (LOW)
- digitalWrite(ledPin, HIGH); // acende o led do pino 13.
- potvalorfinal = potvalor;
- delay(500);
- segundostotal = potvalorfinal;
- minutos = segundostotal / 60;
- segundos = segundostotal - (minutos*60);
- Serial.print("analogRead: ");
- Serial.println(analogRead(potpin));
- Serial.print("potvalor: ");
- Serial.println(potvalor);
- Serial.print("Segundos: ");
- Serial.println(segundostotal);
- Serial.println();
- Serial.print("Tempo: ");
- Serial.print(minutos);
- Serial.print(":");
- Serial.println(segundos);
- countdown();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement