Olá!

Desde o começo do ano estou desenvolvendo um controlador para aquários marinhos mas, que pode ser adaptado para aquários de água doce.

Eu não entendo muito de programação e eletrônica, tudo que sei aprendi nos fóruns e pesquisando na internet.

Meu código precisa ser otimizado pois, ele está consumindo muita memória RAM do meu Arduino Mega 2560, no momento tenho cerca de 700 bytes livres e ainda nem terminei o programa.

Além disso, no momento estou tendo dificuldade para terminar o código das bombas dosadoras.

A questão é a seguinte:
Da forma como ele está escrito não consigo executar 2 ou mais tarefas em um mesma hora, pois quando o programa encontra o primeiro valor igual a hora atual ele executa a ação mas, se houver mais ações para serem executadas em minutos diferentes ele não executa.
Os horários não são sempre os mesmos pode ser que todas as tarefas sejam executadas durante a mesma hora ou apenas uma por hora.
Aqui o código comentado.

https://gist.github.com/4192004

Alguém pode sugerir uma melhor maneira de escrever este programa?

Também gostaria de saber se há alguém interessado em me ajudar a concluir este projeto.

Já ajudei algumas pessoas a montar controladores mas, a maioria só soube sugar o pouco conhecimento que tenho.

O código completo pode ser encontrado aqui:

https://github.com/FernandoGarcia/Ferduino

Aqui alguns vídeos com demonstrações:

https://www.youtube.com/watch?v=rmOhDVO8uTM

https://www.youtube.com/watch?v=CLHpJrJmUrs

https://www.youtube.com/watch?v=QucTAoKlFII

Desde já agradeço pela atenção.

Abraço.

Fernando Garcia

Exibições: 1831

Responder esta

Respostas a este tópico

Vivi isso na pele.

Então, vc tem que aprender sobe o exemplo blink without delay.

Dá uma olhada no exemplo.

Dai vamos arrumar este código pois também tenho interesse nisso.

Olá!

Não entendi qual o correlação entre o meu problema e um simples pisca-led.

Abraço.

blink without delay = pisca-pisca sem utilizar a funçao Delay.

se vc entender esse codigo, vai resolver seu problema....

blink without delay mostra como executar mais de uma função simultaneamente sem se perder com os tempos e consumir kilos de memoria

Deve ser operação com maquinas de estados que precisa. A ideia seria usar flags para sinalizar que a evento a ser executado e deixar tudo rodando num background. Só que ler cartões e escrever em display, é sempre um problema, deixa o programa lento.. O certo seria usar dois processadores, um para eventos rápidos e precisos e outro para a parte de display e cartao SD.

Olá!

Acho que expressei mal.

Meu problema é que da forma como o programa está escrito quando a condição 1 (ver imagem) é atendida ele fecha o arquivo das horas e abre o dos minutos.

Então quando ele encontra o minuto correspondente a mesma posição (contador) da hora ele executa a ação.

No exemplo que coloquei na imagem o programa só executa a dosagem das 19:01 pois, a condição 1 é atendida antes que chegue as 19:58.

Sendo assim o programa "pula" a dosagem das 19:58 e só executa a próxima dosagem que é as 20:55.

Melhorou?

Abraço.

Fernando,


seu trabalho é maravilhoso. Que beleza os videos do seu canal. Parabens.

Vamos resolver seu problema. Vou testar seu programa e buscar entender direitinho o princípio.

Até

Olá!

Sidney obrigado pelo elogio e participação.

Pessoal, já consegui resolver o problema.

Ao invés de gravar dois arquivos de texto (um com as horas e outro com os minutos) , optei por gravar somente um com o horário de dosagem transformado em minutos.

Exemplos:

Dosagem às 19:01

o valor gravado no TXT foi: (19 * 60) + 01 = 1141.

Dosagem às 20:55

o valor gravado no TXT foi: (20 * 60) + 55 = 1255.

Dessa forma nunca terei números repetidos.

E no momento da verificação 

Fiz assim:

t = rtc.getTime();

int minutos_agora = (t.hour * 60) + t.min;

file.open(&root, "HDA1.TXT", O_READ);

while ((n = file.read(buf, sizeof(buf))) > 0)
{
minuto01 = atoi(buf);
if(minuto01 == minutos_agora)
{
Serial.println("Dosando 1:");
Serial.println(rtc.getTimeStr(FORMAT_LONG));
}
}
file.close();

Obrigado por todas as participações.

Caso alguém queira me ajudar a melhorar este projeto ou a lista de Hardware é só enviar uma mensagem.

Abraço.

Olá!

Estou passando para dizer que meu projeto continua crescendo e agora tem um espaço dedicado para ele aqui:

www.ferduino.com

Além do código ter crescido e melhorado, agora desenvolvi uma placa que junta boa parte dos circuitos necessários para o controlador.

Aqui algumas imagens.

O projeto ainda precisa de colaboradores.

Abraço.

Eu fiquei orgulhoso de ver ele assim.

faz quase 2 anos que conversamos e o menino cresceu.

Parabens.

Fernando em 2012 você disse que não entendia muito de programação e eletrônica. 

E agora apresenta essa placa Ferduino super sofisticada!

Parabéns cara, você é um autodidata perfeito! 

Essa placa foi desenvolvida por você ?

 

Bom dia, Fernando!

Parabéns pelo resultado que você alcançou com os seus estudos!

Queria informar que meu anti-vírus acusa aqui que o seu site pode ser perigoso de se visitar. Será que é algum JavaScript ou alguma propaganda que dispara este alerta?

Abraços e continue o excelente trabalho!

Olá!

Obrigado pelos elogios.

José, eu aprendi tudo sozinho revirando a internet.

Todo o projeto foi desenvolvido por mim.

Marcos, você é o primeiro a comentar sobre isso.

Não acho que tenha algum problema com meu site.

Abraço.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço