Arduino Playground is read-only starting December 31st, 2018. For more info please look at this Forum Post

Botão

O interruptor momentâneo é um componente que conecta dois pontos de um circuito ao pressioná-lo. O exemplo a seguir liga um LED quando pressionamos o interruptor.

Conectamos dois fios à placa Arduino. O primeiro vai de um dos terminais do interruptor ao GND. O segundo vai do outro terminal do interruptor até o pino digital 2 do Arduino. Ligue um resistor pull-up de 10 kohms nesse último terminal (um terminal do resistor vai ao terminal do interruptor; o outro vai ao pino de fornecimento de 5V do Arduino.)

Quando o interruptor está livre (não pressionado), não há conexão entre os seus dois terminais, de forma que o pino do Arduino está conectado aos 5V (via o resistor de pull-up) e ao ler o pino, obtemos HIGH. Quando o interruptor é fechado (pressionado), ocorre a conexão entre seus terminais, de forma que o pino do Arduino é ligado ao GND e obtemos LOW. (O pino ainda se mantém conectado aos 5 volts, mas o resistor de pull-up faz com que o pino esteja mais próximo do GND.)

Você também pode ligar o circuito de forma contrária, com o resistor de pull-down agora a manter a o pino 2 em LOW e a ir a HIGH quando o interruptor é pressionado. Dessa forma, o comportamento do esboço será invertido, com o LED normalmente ligado e desligando-se quando se pressiona o interruptor.

Se o pino digital for desconectado da montagem, o LED poderá piscar de forma irregular. Isto porque dizemos que a entrada está flutuando - isto é, estará entre valores de tensão elétrica aleatórios entre HIGH e LOW. É por isso que utiliza-se um resistor de pull-up ou pull-down no circuito.

Circuito

Código


int ledPin = 13; // escolha o pino para o LED
int inPin = 2;   // escolha o pino de entrada (para o interruptor)
int val = 0;     // variável para ler o estado do interruptor

void setup() {
  pinMode(ledPin, OUTPUT);  // declara-se o LED como saída
  pinMode(inPin, INPUT);    // declara-se o interruptor como entrada
}

void loop(){
  val = digitalRead(inPin);  // ler o valor de entrada
  if (val == HIGH) {         // verificar se a entrada é HIGH (interruptor livre)
    digitalWrite(ledPin, LOW);  // desligar LED
  } else {
    digitalWrite(ledPin, HIGH);  // ligar LED
  }
}