[RESOLVIDO]Arduino + motor passo + led - duas coisas de uma vez

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

Exibições: 135

Anexos

Responder esta

Respostas a este tópico

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.

motor_led2.ino

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.

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.

motor_led3.ino

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:

LASER H-A-R-P MIDI CONTROLLER

https://www.motionlasers.com/us/en/products/software/laser-h-a-r-p-...

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 

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2021   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço