O sensor magnético funciona como um interruptor ativado por um campo magnético.
Ele retorna HIGH em seu pino digital quando o campo excede o limiar definido no potenciômetro.
No pino de saída analógica é possível obter uma tensão proporcional à intensidade (e polaridade) do campo magnético.
Um potenciômetro embutido permite configurar o valor do limiar para a saída digital, tornando-o personalizável conforme necessidade.
Dois LEDs estão presentes no módulo, sendo um deles indicador de que o módulo está energizado, e outro que acende quando um campo magnético acima do limiar é detectado.
Algumas aplicações comuns consistem em detectar presença de imã (proximidade), contagem de RPM, posicionamento de partes móveis, interruptores sem contato, sistemas de segurança e alarmes magnéticos, medições de intensidade de campo magnético, entre outros.
Neste projeto você criará um circuito que faz o uso de um sensor magnético com o Arduino.
Para a criação deste circuito serão necessários os seguintes componentes:
Para montar o circuito, visualize na imagem a seguir como conectar os componentes entre a placa Arduino e a breadboard.
Uma vez criado o circuito, use o código fonte a seguir no Arduino IDE para fazer o upload dele na placa Arduino e assim ver o resultado do circuito em funcionamento.
/**
* Código do curso Magos do Arduino para utilizar um sensor magnético com o Arduino.
*
* Utilize o sensor magnético para acender e apagar um LED quando um ímã for
* aproximado no sensor. As leituras digital e analógica do sensor são
* impressas no monitor serial.
*
* (c) Copyright KazaleIT
* @kazaleitoficial no YouTube
**/
#define PINO_LED 2
#define PINO_SENSOR_DIGITAL 3
#define PINO_SENSOR_ANALOGICO A0
int valorDigital = 0;
int valorAnalogico = 0;
void setup() {
pinMode(PINO_LED, OUTPUT);
pinMode(PINO_SENSOR_DIGITAL, INPUT);
Serial.begin(9600);
}
void loop() {
// faz a leitura do valor digital do sensor
valorDigital = digitalRead(PINO_SENSOR_DIGITAL);
// imprime o valor digital obtido pelo sensor
Serial.print("Valor digital: ");
Serial.println(valorDigital);
// define o LED de acordo com o valor do sensor
if (valorDigital == HIGH) {
digitalWrite(PINO_LED, HIGH);
} else {
digitalWrite(PINO_LED, LOW);
}
// faz a leitura do valor analógico do sensor
valorAnalogico = analogRead(PINO_SENSOR_ANALOGICO);
// imprime o valor analógido obtido pelo sensor
Serial.print("Valor analógico: ");
Serial.println(valorAnalogico);
delay(100);
}