Detectar inclinação utilizando sensor de inclinação e vibração SW200D e Arduino
O sensor de inclinação e vibração SW-200D (Figura 1) é um interruptor sensível que possui em seu interior um par de bolas, que fazem contato com os pinos quando inclinado na posição correta.

O sensor SW-200D opera como um botão liga/desliga de acordo com sua inclinação, sendo usado como entrada digital. Seu modo de funcionamento de acordo com sua posição em relação a inclinação pode ser observado na Figura 2.
Quando o sensor é inclinado mais de 15º em relação a condição horizontal para o lado do terminal condutor dourado (B), o circuito torna-se fechado, ou seja, ligado. No entanto, quando a inclinação estiver voltada para o terminal prateado (A) ou não houver inclinação, o circuito se torna aberto, na condição desligado.

Os sensores SW-200D podem ser encontrados em sistemas de segurança, dispositivos automotivos, eletrodomésticos, aparelhos de comunicação, brinquedos, entre outras aplicações.
Neste projeto, utilizaremos o sensor SW200D em conjunto com o Arduino para detectar inclinação. O LED deve ser acionado sempre que o sensor detectar inclinação.
MATERIAIS NECESSÁRIOS
- 1 x Placa UNO SMD R3 Atmega328 compatível com Arduino UNO;
- 1 x Cabo USB;
- 1 x Protoboard;
- 1 x Sensor de inclinação e vibração SW200D;
- 1 x LED difuso de 5mm;
- 1 x Resistor de 200 Ω ou 220 Ω;
- 1 x Resistor de 10 kΩ;
- Fios de jumper macho-macho.
ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES
Inicialmente, certifique-se que sua placa Arduino esteja desligada. Monte o circuito da simulação baixo utilizando a protoboard, o sensor SW200D, o LED, os resistores e os fios.
Ao montar o circuito observe os seguintes pontos:
- O terminal dourado do SW200D deve ser conectado ao 5V;
- O terminal prateado do SW200D deve ser conectado ao pino digital 8. Precisamos conectar também uma resistência de 10 kΩ entre o pino 8 e o GND da placa Arduino;
- O LED deve ser conectado ao pino digital 9 do Arduino.
ELABORANDO O CÓDIGO
Após a montagem do circuito, vamos a programação do Sketch. Conforme, mencionado anteriormente, o objetivo deste projeto é detectar a inclinação com o sensor SW200D. Quando o sensor detectar a inclinação, o LED deverá acender e retornará ao estado desligado quando não houver inclinação.
Vamos entender a lógica de programação deste projeto a partir dos seguintes passos:
1. Declarar as variáveis:
As variáveis sensorPin e ledPin serão utilizadas para representar os pinos digitais 8 e 9, em que sensor SW200D e o LED estão conectados, respectivamente;
A variável leituraSensor será criada para armazenar o valor digital lido do sensor.
2. Inicializar a comunicação serial e configurar as portas de saída e entrada:
Dentro da função setup(), inicializamos a comunicação serial através da instrução: Serial.begin(9600); e definimos ledPin como saída (OUTPUT) e sensorPin como entrada (INPUT).
3. Realizar a leitura da porta digital:
Iniciaremos a função loop() realizando a leitura digital do sensor SW200S e armazenando o valor lido na variável leituraSensor através da instrução leituraSensor = digitalRead(sensorPin);
4. Realizar a comparação:
Utilizaremos a lógica do if…else para comparar se a variável leituraSensor encontra-se em nível alto ou baixo (sensor inclinado ou não inclinado).
Se a variável leituraSensor estiver em nível lógico alto (sensor inclinado), o LED será ligado e a mensagem “Sensor inclinado” será exibida no monitor serial. Senão, o LED deve ser e a mensagem “Sensor não inclinado” será impressa no monitor serial.
Desta forma, o Sketch deste projeto ficará da seguinte maneira:
/* --- DETECTAR INCLINAÇÃO COM SENSOR SW200D --- ================================================== == BLOG DA ROBOTICA - www.blogdarobotica.com == ================================================== Autora: Carol Correia Viana E-mail: contato@blogdarobotica.com Facebook: facebook.com/blogdarobotica Instagram:@blogdarobotica YouTube: youtube.com/user/blogdarobotica ================================================== */ int sensorPin = 8; //Define sensorPin no pino digital 8 int ledPin = 9; //Define ledPin no pino digital 9 int leituraSensor = 0; //Variável para armazenar a leitura do sensor void setup() { Serial.begin(9600); //Inicializa a comunicação serial pinMode(ledPin , OUTPUT); //Define ledPin (pino 9) como saída pinMode(sensorPin , INPUT); //Define sensorPin (pino 8) como entrada } void loop() { leituraSensor = digitalRead(sensorPin); //Lê o valor de sensorPin e armazena em leituraSensor if (leituraSensor == HIGH) { //Se leituraSensor for igual a HIGH ou 1 digitalWrite(ledPin , HIGH); //Define ledPin como HIGH, ligando o LED Serial.println("Sensor inclinado"); //Imprime mensagem no monitor serial delay(100); //Intervalo de 100 milissegundos } else { //Senão = leituraSensor for igual a LOW ou 0 digitalWrite(ledPin, LOW); //Define ledPin como LOW, desligando o LED Serial.println("Sensor não inclinado"); //Imprime mensagem no monitor serial } }
Espero ter ajudado,
Obrigada a todos e em caso de dúvidas deixe seu comentário abaixo!
Att. Carol Correia Viana
Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.