// SPDX-License-Identifier: MIT // Aquecimento de entrada e saída digital: dois botões, um LED e um módulo relé (Arduino Uno) // // O botão da entrada 2 acende o LED do pino 13. // O botão da entrada 4 aciona o módulo relé ligado ao pino 5. // // Ligações: // Botão A: pino 2 <-> GND Botão B: pino 4 <-> GND // Módulo relé: VCC -> 5V, GND -> GND, IN1 -> pino 5 // Carga do relé: use lâmpada ou LED de BAIXA TENSÃO para aprender. // Rede 110/220 V só com supervisão e isolamento adequado: é perigoso de verdade. // // A maioria dos módulos relé de kit é ativa em LOW. Identifique o seu modelo e teste // primeiro sem carga nenhuma no contato. const int PINO_BOTAO_LED = 2; const int PINO_BOTAO_RELE = 4; const int PINO_RELE = 5; const int PINO_LED = 13; const bool RELE_ATIVO_EM_LOW = true; // troque para false se o seu módulo ligar com HIGH void setup() { // No ATmega328P o pino sai do reset em alta impedância. Gravar o nível desligado no registrador // de saída ANTES de habilitar a saída evita a passagem por LOW nessa transição. // Isso configura este sketch; não garante a carga desligada durante todo o boot da placa. digitalWrite(PINO_RELE, RELE_ATIVO_EM_LOW ? HIGH : LOW); pinMode(PINO_RELE, OUTPUT); pinMode(PINO_BOTAO_LED, INPUT_PULLUP); // pull-up interno: solto = HIGH, apertado = LOW pinMode(PINO_BOTAO_RELE, INPUT_PULLUP); pinMode(PINO_LED, OUTPUT); } void loop() { bool botaoLed = (digitalRead(PINO_BOTAO_LED) == LOW); // LOW = apertado bool botaoRele = (digitalRead(PINO_BOTAO_RELE) == LOW); digitalWrite(PINO_LED, botaoLed ? HIGH : LOW); bool nivelParaLigar = RELE_ATIVO_EM_LOW ? LOW : HIGH; digitalWrite(PINO_RELE, botaoRele ? nivelParaLigar : !nivelParaLigar); }