Pessoal... é a primeira vez que posto aqui....
Sou novo na área de Arduino, então vamos ao problema...
fiz um script que utiliza as portas analógicas e digitais.
as analógicas são para botões de fim de curso.
o primeiro e o segundo estão corretos, ao aciona-los cai para o segundo e o terceiro motor já do terceiro para o quarto só funciona se eu utilizar o botão do segundo.
Não estou entendendo, sendo que coloquei dentro das variáveis os números das portas analógicas 0, 1, 2 e 3.
Peço uma ajudinha de vocês e agradeço desde já!!!!
Segue o script em anexo.
Tags:
creio q prar vc configurar as portas analogicas vc deve colocar o A na frente como A0, A1 e assim por diante.
Dei uma olhada rapida, deve ter mais detalhes, mas recomendaria:
Tentar usar entradas digitais para sinais digitais como fim de curso. Mesmo estando aterrado vc pode ter o valor de 1 ou 2 e isso impede a leitura correta. Se for por absoluta necessidade vc pode usar sim (não sei pq precisaria mas...) e aih use um <10 (menor que 10) por ex.
Ainda, um jeito legal de acompanhar a execução do seu programa é mandar os dados para a seria. Vc manda e acompanha tudo pelo terminal da propria IDE (monitor).
em:
analogRead(sensorFim[0] != 0) faltou fechar o ")".
Vc precisa fazer: (analogRead(sensorFim[0]) != 0)
Não entendi qual a necessidade de criar esse array para as portas... Normalmente não se faz assim. Fazendo assim vc gasta ram para guardar essas constantes. Se elas não vao mudar durante a execução a forma mais economica e polida (bonita) seria usar constantes.
Ficaria
#define sensorFim 3
Aih vc usaria
analogRead(sensorFim) simplesmente.
Para ler pinos analogicos como digitais (no caso de vc ter esgota todos os digitais) veja esse doc:
http://arduino.cc/en/Tutorial/AnalogInputPins
então... eu fiz esse array para facilitar a programação e substituir o numero da porta.
Eu fiz assim:
analogRead(sensorFim[0] != 0) )
o correto é assim:
analogRead(sensorFim[0]) != 0) ?
e como uso essa opção "#define???
Sim, a função analogRead() tem como parametro o numero da porta. O parametro vai dentro dos "()". O resultado disso (o retorno da função) que vc deve comparar com um numero.
Sobre define:
Quando vc usa por ex:
#define PinoX 3
Definiu que "PinoX" deve receber o valor 3 sempre que for encontrado (o compilador como que substitui a string "PinoX" pelo valor 3. Os exemplos muitas vezes tb usam a definição de um int. Eu prefiro #define, mas é pessoal. Outros podem preferir definir uma int ou mesmo uma const. Todos dão praticamente o mesmo efeito.
Se vc já viu Peppa Pig... Tem um episodio em que o Papai Pig participa de uma competição de saltos em poças de lama. Ele fala que para ser um bom saltador em poças vc tem que estar em harmonia com a poça, tem que pensar como uma poça... Considerando isso e pensando como um microcontrolador executaria um ou outro código é que acredito que o #define é melhor. Já que o numero é pré substituído ainda na etapa de compilação, não restando nenhum comando a mais para concluir qual porta acionar no momento da execução.
Refs:
http://arduino.cc/en/Reference/Define
http://arduino.cc/en/Reference/analogRead
https://www.youtube.com/watch?v=q9Nf_-x5DJE
PS.: A brincadeira da Peppa é em função de ter assistido com minha filha de 2 aninhos e ter achado mto legal, não que esteja te chamando de "publico alvo da Peppa"... Hehehe, por favor entenda com humor.
e outra...
Li que ao utilizar pinMode(A0, OUTPUT) está mudando a porta digital 0 para analógica na função PWM.
Estou correto?
Qual é a maneira correta de se utilizar a entrada analógica?
Sim as portas analogicas estão precedidas de 0,1,2,3,4.. no Caso A0 seria o correto. Tracei um retangulo em vermelho na imagen abaixo. #define: http://arduino.cc/en/Reference/Define e aqui todas as referencias e exemplos: http://arduino.cc/en/Reference/HomePage ;
Veja uma ótima resposta/explicação para sua pergunta
pinMode(sensorFim[0] , INPUT);
digitalWrite(sensorFim[0] , HIGH);
if (digitalRead(sensorFim[0]) != HIGH)
O Ideal sempre que você usar fim de curso usar o pino em Pull-up e verificar se ficou 0 quando o final de curso foi acionado.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por