Ao fazer a leitura de um botão com uma das portas do Arduino é importante estabelecer como a porta deve ler o valor. Por exemplo:
1° Caso: Porta do Arduino inicialmente em nivel lógico baixo(0V) e ao pressionar um botão ter uma entrada em nivel lógico alto(5V).
2° Caso: Porta do Arduino inicialmente em nível logico alto(5V) e pressinoarmos um botão e ter uma entrada de nivel lógico baixo(0V).
Bem... O que fazer e em que condições isso acontece? Como programar para interpretar cada situção?
Vamos ao passo a passo:
Monte o circuito na sua matriz de contato:
Clicar na imagem para ampliar
A1-Execute o programa abaixo:
/*
Botões, Arduino e Resistor Pull-up e Pull-Down - Tutorial
Programa by Gamesh_
10/01/2011
http://brasilrobotics.blogspot.com/
*/
int BotaoPino = 7; // pino a ser lido
int val= 0;
int i=0; //Variavel para incremento
void setup() {
pinMode(BotaoPino, INPUT);
Serial.begin(9600);
}
void loop()
{
val= digitalRead(BotaoPino);
delay(100);
if(val!=0){
Serial.print(i++);
Serial.print("-Valor:");
Serial.println(val);
}
}
Agora clicar no icone: Serial Monitor:
Você verá essa tela:
Ao pressionar o botão acontecerá isso:
Comentário sobre o Programa e o Circuito:
O programa faz a leitura constantemente do botão e somente em nível lógico alto(5V) mostra na tela que detectou algo.
Temos então um caso de Resistor em Pull-Down pois mantém em nível baixo a porta quando o botão não é pressionado.
-Vamos fazer algumas modificações?
Monte o circuito na sua matriz de contato:
-Atenção: Os fios amarelo e verde estão em posições contrárias ao circuito anterior.
-Vamos fazer algumas modificações?
Monte o circuito na sua matriz de contato:
-Atenção: Os fios amarelo e verde estão em posições contrárias ao circuito anterior.
Clicar na imagem para ampliar
A2-Execute o programa abaixo:
/*
Botões, Arduino e Resistor Pull-up e Pull-Down - Tutorial
Programa by Gamesh_
10/01/2011
http://brasilrobotics.blogspot.com/
*/
int BotaoPino = 7; // pino a ser lido
int val= 0;
int i=0; //Variavel para incremento
void setup() {
pinMode(BotaoPino, INPUT);
Serial.begin(9600);
}
void loop()
{
val= digitalRead(BotaoPino);
delay(100);
if(val!=1){
Serial.print(i++);
Serial.print("-Valor:");
Serial.println(val);
}
}
Agora clicar no icone: Serial Monitor:
Você verá essa tela:
Ao pressionar o botão acontecerá isso:
Comentário sobre o Programa e o Circuito:
O programa faz a leitura constantemente do botão e somente em nível lógico baixo(0V) mostra na tela que detectou algo.
Temos então um caso de Resistor em Pull-up pois mantém em nível alto a porta quando o botão não é pressionado.Gostou do tutorial? Incentive mais tutoriais visitando:
3 comentários:
Good day! This iѕ my first visіt to your blog!
We are a grοup of volunteeгs and
starting a new projеct in a community in the sаme niche.
Үour blog pгοvideԁ us useful informаtion
to work on. Υou have donе a wonderful јob!
Αlso vіsіt my site: Lineary potentiometer
Haѵing reаd this I believed it waѕ very informative.
I appreciate yоu finding the time and effοrt to
put this contеnt together. I once again find myself pеrsonаlly spending a lot of
time both readіng and leaving comments.
But so ωhat, it ωaѕ still worthwhіle!
my web page; Www.Partiebas.Com
Muito bons os seus tutoriais!
Parabéns!!!
Postar um comentário