Boa noite Garagistas,

Estou tentando melhorar o código do meu projeto para algo mais funcional para uma leitura mais dinâmica de 3 sensores (lm35, 2 trimpot), um botão e um RTC e estou tendo duvida no entendimento da implementação do sistema Multitarefa Cooperativa.

Sei que o Arduíno UNO  não aceita de fato a multitarefa por ser muito simples, mas que é possível fazer com que rode cada função do código em pequenos intervalos que dão a percepção de ser multitarefa.

Estou a uns dias estudando o conceito de threads, mas acho que é um pouco avançado para o meu projeto

Tambem dei uma estudada no código explicado pelo Bruno neste link: 

http://labdegaragem.com/forum/topics/multitarefa-para?commentId=622...

No link abaixo  tem um material com uma explicação interessante, mas por ser um pouco leigo estou com dificuldades de entender o conceito para replicar no meu código

http://troniquices.wordpress.com/2010/05/24/arduino-a-fazer-varias-... 

no video de Ivan Seidel possui uma boa explicação sobre threads no Arduíno

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

Alguém saberia explicar melhor a implementação?

Tentei desenvolver meu código com a técnica das threads do vídeo, mas não consigo fazer a IDE validar o código, qualquer alteração sempre da erro.

desde de já agradeço

Exibições: 1438

Anexos

Responder esta

Respostas a este tópico

Oi Thiago,

Você chegou a instalar a biblioteca como falado no repositório do GitHub? Se sim, é preciso fechar/abrir o programa do Arduino para que ele detecte ela (um pequeno detalhe)...

Para saber se está funcionando (e que não é um problema no seu código), pode tentar rodar algum exemplo da biblioteca... qualquer um deles deve compilar e rodar sem problemas. Se estiver ok, realmente é alguma coisa no seu código!

Abraços

Então Ivan, eu instalei corretamente, e os exemplos funcionam corretamente, contudo tentei seguir a lógica descrita no vídeo, mas não ficou muito bom, conforme visto no código em anexo, pois tudo que não  declarei do inicio do código dá erro.

mas estou vendo o exemplo SimpleThreadController , ela se adequá ao meu código, você tem alguma dica para declarar minhas funções do código em anexo  corretamente, utilizando este exemplo como base.

Obs..: não entendi o porque desta parte do código no loop no final do código rsrs.

float h = 3.1415;
h/=2;

desde de já agradeço.

Abraços

float h = 3.1415;
h/=2;

é apenas para demonstrar algum processo... basicamente, "qualquer coisa"

eu costumo declarar as funções de callback das Threads com `thr` antes do que ela faz. Exemplo: thrChecaBotao, thrCalculaPID, thr...

já os objetos da classe Thread, chamo sem o thr precedido: ChecaBotao, CalculaPID, ...

Um exemplo de um programa complexo/simples utilizando essa minha tecnica:

https://gist.github.com/ivanseidel/10085571

Tiago,

    Com relação a organizar e melhorar o codigo para torna-lo mais funcional,  dá uma olhada nesse tutorial que criei   http://labdegaragem.com/forum/topics/tutorial-programando-de-forma-...

 

Weider, muito bom não sabia que dava para utilizar as abas desse jeito.

Disponha tiago,  bom saber que você gostou,  utilizando as duas tecnicas juntas,  abas e funções, dá pra fazer magica ha ha ha.

Weider bom dia

Utilizei o sistema de abas em meu codigo no Arduino e ficou muito mais organizado.Muito obrigado pela dica.Parabéns pela iniciativa.

Disponha Sergio,  a ideia aqui é justamente a de trocarmos ideias e experiências para melhorar nossos projetos.

   Desde que descobri essa forma de programação estruturada,  reduzi de forma absurda minhas revisões de codigos em especial na localização de correções.

   Mas alem das abas, capriche tambem em se acostumar com o uso das funções, a soma das duas é organiza pra valer a coisa.

  

Weider Duarte, boa noite.

Fiz esta organização em meu código como mencionei, no entanto, não consigo chamar minha função para ser executada no código principal.Sabe se alem da chamada de função, como normalmente é feita "nomedafunção ();" tem que ser feito outro procedimento? Eu preciso somente carregar o scketch do Arduíno com a aba principal aberta certo?

Boa tarde,

Weider realmente excelente postagem, eu tambem não sabia como fazer isso em abas, a de criar void sim mais abas não, muito interessante e concerteza passarei a adota-las como rotina

Obrigado!

Oi WD, boa tarde,

Não conhecia este recurso da IDE, e ao ver este tópico aqui, fui atras do tutorial que você escreveu.

Gostei muito da ideia, e da forma de separação, facilitando e reduzindo o visual do código principal.

Como ele separa os tabs em arquivos separados, estou usando com um tipo de "biblioteca".

Parabéns pelo tutorial

Rui

Para quem como eu, que  estudou Pascal na faculdade, fica fácíl para aplicar a linguagem estruturada no Sketch. O que não entra na minha cabeça é a tal de linguagem por objeto. 

Já comprei livros, comecei a estudar, mas não consegui me adaptar. 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço