Quando se é colocado muito sensores acaba deixando o processamento do Arduino lento, assim tendo um tempo de resposta lento. Teriam alguma sugestão para acelerar o processamento?

Exibições: 356

Responder esta

Respostas a este tópico

Depende os sensores e o codigo, utilizo vários sensores com cálculos em um Arduino mega e ele responde bem.

É preciso entender pq vc está achando lento..

As vezes o usuário acha lento mas o codigo tem delays() no meio, por ex.

Enfim, diga melhor sua necessidade. Qual sensor, quantos, em que condição.

Um Arduino Mega não pode ser acelerado. O que dá pra fazer as vezes é otimizar o codigo.

Para acelerar mesmo só trocando por ex por um Arduino Due.

Estou usando dois sensores infravermelhos, um ultrassonico e 2 de cor rgb. Não tem nenhum delay. Quando o robô está apenas com os dois infravermelho ele tem um tempo de resposta ótimo, se adicionar mais um sensor o desempenho do robô cai.

Dica:

Antes de mais nada descubra quem está te derrubando.

Coloque uma instrução para subir um pino antes de entrar um uma rotina (ler o RGB, por ex) e baixe quando sair.

Com um osciloscópio vc mede a largura do pulso gerado. Ele vai representar o tempo perdido dentro dessa rotina. Certamente vc vai achar algum absurdo. Alguma rotina que está demorando demais.

Não tendo osciloscópio vc pode ligar um LED e ver o brilho. Até um multimetro... Para o multimetro o ideal é pensar que ele é um decodificador PWM. Vc liga um resistor de 1K por ex em série e um resistor de 100nF do outro lado do resistor ao GND. Aih vc mede sobre o capacitor. Essa tensão vai ser proporcional ao tempo que o pino fica alto.

Outro jeito de fazer a mesma coisa:

Crie umas variáveis para anotar o valor do mills().

Anote e no final do loop mande esses valores para a seria.

Inclusive, a serial tem um buffer. Vc não pode ficar escrevendo nela como se fosse "gratis" isso custa tempo, muito tempo de processamento. Transmitir um byte não custa, mas quando vc lota o buffer a cada byte enviado ele precisa esperar o fim da transmissão para poder enviar outro. Demora pacas.

Enfim, pense o seguinte:

Quantas vezes por segundo é preciso ler cada sensor ? Não leia mais que isso.

Quantos dados vc precisa ler do lado do PC por segundo (se for o caso). Mande isso, nada mais.  Tela no terminal rolando freneticamente é sinal de perda de processamento.

Sem vc dar mais nenhuma informação não dá pra ajudar mais.

Acho que seria bom você ler este post e tratar de adequar o maximo possivel, desta forma ficara mais facil obter ajuda.

http://labdegaragem.com/forum/topics/sugest-o-de-como-postar

Abs.

CK

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço