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?
Tags:
É 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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por