Retomar código após reset

Boa noite, estou com uma dúvida sobre a retomada do código após reset, é uma dúvida de programação. Supondo que eu tenho um código dividido p. ex. em 3 partes: A , B ,C. Qual a seria lógica aplicado, caso falte energia ou seja necessário da um reset, para rodar o código de onde ele parou?

Não existe.
Se fizeres reset, as variáveis e configuração do arduino vão à vida... logo continuar de onde paraste não funciona.

Mais ainda, se tu tens de fazer um reset, significa que existe algo de errado com o sistema que deve ser reparado.

Que é que estás a tentar automatizar que não pode parar?

Recebi uma proposta de automatizar válvulas e controlar variaveis de pressão vazão... e se caso haja algum problema de falta de energia ou controle de variaveis seria necessário resetar e retomar o código.

Antes que te metas em sarilhos, que é que essas válvulas fazem? Que pressões estás a falar? Que sabes de segurança?

Eu digo isto porque se houver o risco de alguém se magoar, ou pior, e for algo que tu fizeste sem o minimo de atenção para a segurança da instalação, existe uma boa possibilidade de ires parar à prisão ou teres de lidar com a justiça. E isso, garanto-te é o mínimo porque não se compara a acordares todos os dias com o conhecimento que alguém se magoou, ou pior, com algo que tu fizeste.
Muita gente assume que automatizar algo é ligar uns fios e programar algo, mas a parte importante é garantir que ninguém se magoa. O resto é simples.

Indo à parte técnica...

O controlo das variáveis depende do quê? Do estado de algo? Se a energia faltar, que variável em concreto é que pretendes ter em memória para continuar com a operação?

Explicares o processo, ajuda a alguém aqui te aconselhar com o que é possível e o que poderá ser a melhor maneira de o conseguir.

Apenas recebi a proposta e por outros motivos não a aceitei. Mas isso ficou na minha cabeça de como eu resolveria.

Não dava para gravar o last state, na e2prom? Confesso que não fui pesquisar a fundo sobre isso, mas era uma hipotese a estudar...

Gravar estados na EEPROM vai, eventualmente, corromper a EEPROM. A EEPROM tem um limite no número de vezes que pode ser escrita e é possível de atingir. Há como minimizar isso, mas não é garantido que funcione sempre ou durante muito tempo.

Mas seria uma opção.
No entanto, um sistema com válvulas tem de ser desenhado para falhar de forma segura. Ou seja, quando a electricidade for abaixo, as válvulas devem voltar à posição mais segura para o sistema e não há garantia que o Arduino ainda esteja a funcionar para processar o estado das válvulas.

Daí que quando o arduino reiniciar, assumir o estado das válvulas não é boa ideia e em vez disso deveria ver qual a posição em que elas estão e decidir o que fazer. No entanto, antes de realizar qualquer automatização, um estudo de riscos deve ser realizado para perceber tudo isto e desenhar o sistema de forma segura.

Sim, tens toda a razão.
O que ele pode sim, é usar mecanismos auxiliares, tipo relés de fim de curso com sistemas de reposição automática (tipo sistemas ROTORK). A questão é saber se vale a pena, uma vez que podem existir mecanismos já criados com esses sistemas integrados. Mas pronto, a ideia é aprender :slight_smile: