Boa galera, peço uma ajuda de vocês pois não estou achando a saída... procuro sempre futucar por ai antes de incomodar os outros, mas parece que nem o mestre das respostar tem esse resposta pra me dar... fucei o Google e nada!
então vim pedir ajuda ao que realmente entendem do babado! rsrs...
o que se passa é o seguinte: esse projeto era pra ser um contador que ao atingir 30 dias parasse de funcionar, mas parece que ele para com 8 dias e pouco, e me retorna uma mensagem que não consigo ler toda pois a IDE trava, e não consigo nem movê-la do luga...
as únicas informações que tenho são as mesmas que vocês conseguem ver...
segue o código:
*********************************************************************************************************************
byte SEG = 0; //variavel dos segundos
byte MIN = 0; //variavel dos minutos
byte H = 0; //variavel das horas
byte D = 0; //variavel dos dias
const byte opto1 = 3; //constante para o pino da saida de 250Hz
const byte LED = 13 // constante para o pino do LED indicador de funcionamento
void setup()
{
pinMode(LED, OUTPUT); // define pino 13 como pino do led indicador de funcionamente (vai ser mudado quando for para o ATtiny45)
pinMode(opto1, OUTPUT); // define a saida do opto acoplador
Serial.begin (9600); // habilita a serial para debug
}
void loop()
{
tone (opto1, 250); //me da uma frequencia de 250Hz na saida PWM 3
digitalWrite (LED, HIGH); // nivel alto na porta do LED inidcador de funcionamento
delay(500); //delay de meio segundo
digitalWrite (LED, LOW); //nivel baixo na porta do LED indicador de funcionamento
delay(500); // delay de meio segundo
(SEG = SEG++); // incrementa a variável de segundo a cada segundo (mais ou menos ta dando um pouquinho mais so da pra ver no escope, mas não interfere diretamente no funcionamento)
if (SEG >=60) {SEG=0; MIN = MIN+1;}; //incrementa a variavel de minuto e zera a de segundo reiniciando o ciclo
if (MIN>=60) {MIN=0; H=H+1;}; //incrementa a variavel de hora e zera a de minuto reiniciando o ciclo
if (H>=24) {H=0; D=D+1;}; // incrementa a variave de dia e reinicia a de hora ao somar 24
if (D==30) {parado();} // condiçao para que o programa pare de funcionar, quando a variavel D atingir 30 o programa executa parado()
Serial.print(D); // imprime o valor de D
Serial.print(" - "); // imprime o caracter -
Serial.print(H); // imprime o valor de H
Serial.print(" : "); // imprime o caracter :
Serial.print(MIN); // imprime o valor de MIN
Serial.print(" ' "); // imprime o caracter '
Serial.println(SEG); // imprime o valor de SEG e desce uma linha
}
void parado ()
{
digitalWrite (LED, LOW); //desliga o LED de funcionamento
noTone (opto1); // desliga a saida PWM que continha 250Hz
while (D==30) {} //roda uma uma instruçao vazia enquanto o valor de D for = 30
}
*********************************************************************************************************************
e ai? o que pode estar acontecendo?!
Tags:
tem outra forma de contar tempo, eu precise há algumas semanas atrás mas não sabia fazer com a função millis(); ai criei uma função própria, observe se o problema vai continuar, se continuar acho melhor vc criar uma função para reiniciar o sistema uma vez ao dia, exemplo:
Você faz uma função que quando chegar a hora 23 minuto 0 e segundo 0 salva essas variáveis na memória eeprom e em seguida usa o comando asm volatile (" jmp 0"); para reiniciar o sistema, ai no void setup vc chama uma função para ler os valores da eeprom e atribuir esses valores as variáveis, assim mesmo reiniciando você sempre voltará de onde parou.
OBS: se você precisar de ajuda com isso eu posso ajudá-lo, enfrentei esse problema já, estou em um projeto em que não posso perder valores das variáveis e se a luz acabar e você não tiver salvo os valores na eeprom perde todo o trabalho.
for(byte i = 0; i<= 9; i++){
delay(100);
centezimal ++;
}
//Se a variavel minuto for igual a 60 incrementa + 1 na variável hora e zera a variável minunto
if (centezimal == 10){
segundo ++;
centezimal = 0;
}
//Se a variavel minuto for igual a 60 incrementa + 1 na variável hora e zera a variável minunto
if (segundo == 60){
minuto ++;
segundo = 0;
}
//Se a variavel minuto for igual a 60 incrementa + 1 na variável hora e zera a variável minunto
if (minuto == 60){
hora ++;
minuto = 0;
}
//Se a variavel hora for igual a 24 incrementa + 1 na variável dia e zera as variáveis hora e minunto
if (hora == 24){
dia ++;
hora = 0;
}
//Se a variavel dia for igual a 30 chama dunção parado()
if (dia == 30){
parado();
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por