Para este experimento você vai precisar de um
Os sensores de campos magnéticos são indispensáveis hoje em dia pois estão presentes em uma infinidade de pequenos aparelhos a máquinas industriais, por servir para detecção de objetos magnéticos os ímãs entre outras aplicações, detecção de posição, velocidade ou movimento direcional.
Vamos utilizar o Sensor Hall para determinar se algum objeto magnético se aproximou do sensor assim acionar outras portas do Arduino, como se fosse uma simples chave ou botão, sem campo magnético, o sensor envia o sinal 1 (HIGH) para o Arduino, e ao detectar a porta vai à nível 0 (LOW).
Para utilizar o sensor de efeito hall pode-se optar por dois modos de ligação junto a plataforma de prototipagem, entre elas, a saída digital DO com um sistema NA ou a saída digital inversa AO com sistema NF.
Todas as vezes que o campo magnético é detectado então recebemos alteração de voltagem na porta do arduino fazendo o mesmo que um botão liga desliga.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
// Programa : Sensor Hall com buzzer - Alarme de porta e janelas // Autor : Aldyr Amaro // www.experimentosdegaragem.com.br int pinoled = 13; // define a porta para o acionamento do led int pinosinal = 3; // Porta ligada ao pino SINAL do sensor int leitura; // Armazena informações sobre a leitura do sensor // Variaveis para o alarme float sinVal; int toneVal; void setup() { Serial.begin(9600); pinMode(pinoled, OUTPUT); pinMode(2, OUTPUT); // Porta do Buzzer pinMode(pinosinal, INPUT); } void loop() { leitura = digitalRead(pinosinal); Serial.println("Alarme Desarmado - Feche a porta para ativar"); if (leitura != 1) { while(digitalRead(pinosinal) != 1) { noTone(2); Serial.println("Porta Fechada - campo magnetico detectado"); delay(100); digitalWrite(pinoled , HIGH); delay(50); digitalWrite(pinoled , LOW); delay(300); } //end while Serial.println("Porta aberta - campo magnetico nao detectado"); delay(100); digitalWrite(pinoled , HIGH); // Mantem a sirene ligada enquanto o sensor não detectar o campo while(digitalRead(pinosinal) != 0){ for (int x=0; x<180; x++) { // converte graus para radianos, e depois obtém o valor do seno sinVal = (sin(x*(3.1416/180))); // gera uma frequência a partir do valor do seno toneVal = 2000+(int(sinVal*1000)); tone(2, toneVal); delay(2); } // end for } //end while } //end if } //end loop |