Olá pessoal.
Tenho este programa onde eu faço um motor de passo ficar indo e voltando com determinados passos.
Quando o mesmo atingir um determinado nr. de passos deve-se ativar um LED por um determinado tempo mas SEM que este tempo interfira na execução do loop do referido motor de passo.
Reparem que no programa anexo(onde não consegui fazer isto) assim que faço a comparação e ativo o led o loop do motor fica parado também.Onde está o meu problema.
Seria possível fazer isto ?
Agradeço quem puder me ajudar.Se é que tem como.
Att.:RDS
Tags:
Bom dia RS, (Gaaallllôôôôô)
o que está ocorrendo é que vc está usando delay() para manter o LED acesso por 15 seg.
A função delay() " trava" o processador pelo tempo especificado na função delay().
Como ele está "travado" não faz mais nada, nem comanda o motor.
Tem sim, como fazer.
Usando a função millis(), consegue-se medir tempo sem parar o processamento.
Modifiquei sue sketch para usar a função millis(), só que não testei aqui.
Teste aí e depois conta pra gente o resultado.
RV
Bom dia Mineirin.
Testei aqui mas não deu certo.Sinceramente não sei, estou estudando a função para ver se consigo entender e explicar melhor.
Mas basicamente o led não esta respeitando o tempo determinado.
E na prática vou precisar dele ligado por 5 a 10 milissegundos.
Obrigado pela ajuda..
(primeira divisão é só aqui).
Bom dia Reinaldo,
Fiquei feliz em saber que esta usando a parte de um programa desenvolvido por mim.
Quando a função delay é usada, os outros processos ficam travados.
Portanto o delay não é adequado para a sua necessidade.
OBs: a função delay usa milisegundos e não microsegundos.
Se quiser usar atrasos com micorsegundos, use outra função:
Arduino delayMicroseconds()
https://www.arduino.cc/reference/pt/language/functions/time/delaymi...
Pausa o programa pela quantidade de tempo especificada como parâmetro (em microssegundos). Há mil microssegundos em um milissegundo, e um milhão de microssegundos em um segundo.
Arduino Delay
https://www.arduino.cc/reference/pt/language/functions/time/delay/
Pausa o programa por uma quantidade especificada de tempo (em milissegundos). Cada segundo equivale a 1000 milissegundos.
Recomendo o uso de procedimentos Multi-tarefas.
Pode dar uma estudada nesses links:
Delay usando Biblioteca AccelStepper
http://labdegaragem.com/forum/topics/delay-usando-biblioteca-accels...
Duvida - Problema com uso do Millis() multíplos intervalos
http://labdegaragem.com/forum/topics/duvida-problema-com-uso-do-mil...
http://labdegaragem.com/forum/topics/multitarefa-para
http://labdegaragem.com/forum/topics/duvida-multitarefa-cooperativa...
http://labdegaragem.com/forum/topics/colocar-millis-em-fun-es-n-o-s...
Saudações Atleticanas.
RS, no sketch que enviei eu me equivoquei e coloquei o tempo de 15 segundos e não em 15 milissegundos.
De qualquer forma o sketch não funciona corretamente.
A rever o sketch , resolvi modifica-lo e usar o recurso do timer1 sem biblioteca adicional.
Fiz assim:
Quando " i " é igual a 1 ou 15, eu ligo o led e coloco um valor no comparador do timer1, e em seguida
zero o timer1.
Quando o timer1 atinge o valor que coloquei, ele gera um interrupt e a rotina de interrupt apaga o led.
Estes tempo do led acesso não pode ser maior que a rotina seguinte que gira o motor
no sentido horário, (62 ms), se não o led nunca é apagado.
Uma curiosidade.
Como com estes valores visualizar o led aceso é impossível, então qual finalidade que vc precisa dele acendendo?
abaixo novo sketch modificado. Teste aí e depois conta pra gente o resultado.
Imagem do trace do Led
RV
Boa tarde pessoal.
Então, a ideia e criar um ilusão com 6 traços.O led na verdade é um módulo laser de 1Watt.
Na foto, tirada da internet, é um exemplo do que pretendo.
A sua solução foi fantástica, porém o motor de passo não tem velocidade e nem resolução para isto.Cheguei nesta conclusão após testar e ler muito sobre o assunto.
Agradeço muito a todos que se dispuseram em me ajudar, agreguei bastante conhecimento com este tópico.
Obrigado mesmo.
Att.:Reinaldo de Souza - RDS
RDS,
existe uns motores bem interessante, e que podem te ajudar.
Eles tem inclusive espelho montado neles.
São motores de impressora laser, dentro da unidade de laser.
Eu retirei uns de impressoras laser pifadas.
Similar a este.
https://produto.mercadolivre.com.br/MLB-1071516237-motor-poligonal-...
RV
Rui, bom dia.
Eu tenho um modulo igual á esses - motor + espelho + driver.
E consegui fazer funcionar. O motor gira numa velocidade constante (RPM).
Mas eu não medi esse RPM.
Bom dia Reinaldo,
Esse display de Laser foi usado pelo músico Jean Michel Jarre como teclado do sintetizador há muitos anos atrás.
Deve ter sido essa sua inspiração - Laser Harp. Na época foi uma sensação. A música é muito bonita. Eu sou fã do JMJ.
Existem vários projetos prontos sobre essa montagem na WEB. Irei procurar.
Obs: hoje já existem Laser coloridos - Verde, Vermelho e Azul. Portanto dá para criar qualquer cor!
Veja esse produto:
https://www.motionlasers.com/us/en/products/software/laser-h-a-r-p-...
Sugiro que estude os projetos prontos:
http://www.goodchildengineering.com/tech-design-blog/laser-harp
https://hackaday.com/2013/10/30/impressive-laser-harp/
https://www.instructables.com/id/Frameless-Laser-Harp/
https://www.instructables.com/id/Easy-and-cheap-Laser-Harp/
https://www.instructables.com/id/13-Note-MIDI-Laser-Harp-Controlled...
https://create.arduino.cc/projecthub/michalin70/build-a-laser-harp-...
Em 2014, meu filho tinha uma máquina de fazer desenhos a Laser (usada em festas) - AH lights AH-5028
https://eletronicos.mercadolivre.com.br/laser-ah-5028
Não sei se ele ainda a tem.
Um dos espelhos soltou e quebrou. Consegui colar e consertar.
Veja que essa maquina usa dois motores de passo. Algumas outras usam um outro tipo de motor - Galvo.
Efeitos criados pela máquina
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por