Esta página irá ensinar a como motar um circuito capaz de acender uma lâmpada com um controle emissor de infravermelho (controle de televisão, dvd, recptor de parabólica, controle de rádio de carro, etc) utilizando o microcontrolador arduino.. Para isso será necessário o seguinte material:
-Arduino (no caso utilizei o UNO)
-2 Resistores 330 Ω
-1 Módulo Relé 5V para arduino
-1 Receptor infravermelho
-1 Bateria 9V (para alimentar o arduino)
-1 Cabo para alimentar o arduino atravéz da bateria
-1 Bocal lâmpada
-1 Lâmpada 127 V
-Fios
O esquemático da ligação segue abaixo:
O vídeo mostrando o resultado do projeto está mostrado abaixo:
O código para a programação do arduino segue abaixo:
#include <IRremote.h> #include <IRremoteInt.h> int RECV_PIN = 8; IRrecv irrecv(RECV_PIN); decode_results results; #define BT_LIGA 0xFFA25D //Botao Liga #define Controle_Rele 7 //Controla Relé int Controle_Rele_State = LOW; //Relé começa fechado long bt = 0; //Ultimo botao precionado unsigned long startMilis = 0; //Contado para blink sem delay void setup() { Serial.begin(9600); irrecv.enableIRIn(); pinMode(Controle_Rele, OUTPUT); } void loop() { if (irrecv.decode(&results)) { irrecv.resume(); Serial.println(results.value, HEX); //Aqui voce descobre qual o botao do seu controle //Apenas para filtrar os botoes apertados, no meu caso para filtrar outros controles =) if(results.value == BT_LIGA) { startMilis = millis(); //Apertou um botao, reseta o contador bt = results.value; //Salva ultimo botao apertado mod(1); } }
Esta página irá ensinar como fazer um carrinho controlado por controle remoto emissor de infravermelho (controle de televisão, dvd, recptor de parabólica, controle de rádio de carro, etc). Para isso será necessário o seguinte material:
-Arduino (no caso utilizei o UNO)
-7 Resistores 330 Ω
-2 Capacitores 100 nF
-1 Ponte H dupla: CI L298N
-2 Motores com caixa de redução
-1 Receptor de infravermelho de 3 terminais
-1 Protoboard
-4 Leds alto brilho
-4 Leds amarelos
-2 Leds vermelhos
-1 Receptor infravermelho
-1 Bateria 9V (para alimentar o arduino)
-1 Suporte para 6 pilhas AA
-6 Pilhas AA
-Fios
O esquemático da ligação segue abaixo:
O fundo do carrinho foi feito seguindo o seguinte modelo:
O vídeo mostrando o resultado do projeto está mostrado abaixo:
O código para a programação do arduino segue abaixo:
int MOTOR1_1State = LOW; //Estado atual do MOTOR1_1 int MOTOR1_2State = LOW; //Estado atual do MOTOR1_2 int MOTOR2_1State = LOW; //Estado atual do MOTOR2_1 int MOTOR2_2State = LOW; //Estado atual do MOTOR2_2 int FAROL_State = LOW; //Estado atual do FAROL
long bt = 0; //Ultimo botao precionado long penultimo = 0; //Penultimo botao precionado unsigned long startMilis = 0; //Contado para blink sem delay int value = LOW; // último valor do LED da SETA long previousMillis = 0; // último momento que o LED foi atualizado long interval = 400; // tempo de transição entre estados do pisca da seta (milisegundos) void setup() { Serial.begin(9600); irrecv.enableIRIn(); pinMode(MOTOR1_1, OUTPUT); pinMode(MOTOR1_2, OUTPUT); pinMode(MOTOR1_Enable, OUTPUT); pinMode(MOTOR2_1, OUTPUT); pinMode(MOTOR2_2, OUTPUT); pinMode(MOTOR2_Enable, OUTPUT); pinMode(LUZ_VERMELHA, OUTPUT); pinMode(LUZ_SETA_DIREITA, OUTPUT); pinMode(LUZ_SETA_ESQUERDA, OUTPUT); pinMode(LUZ_BRANCA_RE, OUTPUT); pinMode(LUZ_BRANCA_FRENTE, OUTPUT); //Motor Ativo no Inicio digitalWrite(MOTOR1_Enable,HIGH); digitalWrite(MOTOR2_Enable,HIGH); } void loop() { if (irrecv.decode(&results)) { irrecv.resume(); Serial.println(results.value, HEX); //Aqui voce descobre qual o botao do seu controle //Apenas para filtrar os botoes apertados, no meu caso para filtrar outros controles =) if(results.value == BT_1 || results.value == BT_2 || results.value == BT_3 || results.value == BT_4 || results.value == BT_5 || results.value==BT_6) { startMilis = millis(); //Apertou um botao, reseta o contador bt = results.value; //Salva ultimo botao apertado
if(bt==BT_1) mod(1); else if(bt==BT_2) mod(2); else if(bt==BT_3) { if(penultimo==BT_1) mod(3); else if(penultimo==BT_2) mod(4); else mod(5); } else if(bt==BT_4) { if(penultimo==BT_1) mod(6); else if(penultimo==BT_2) mod(7); else mod(8); } else if(bt==BT_5) mod(9); else mod(10); } } if(bt==BT_3) { if (millis() - previousMillis > interval) { previousMillis = millis(); // lembre-se do último tempo que piscamos o LED value=!value; digitalWrite(LUZ_SETA_DIREITA, value); } } else if(bt==BT_4) { if (millis() - previousMillis > interval) { previousMillis = millis(); // lembre-se do último tempo que piscamos o LED value=!value; digitalWrite(LUZ_SETA_ESQUERDA, value); } } } void mod(int x) { unsigned long currentMillis = millis(); if(x == 1) { //Mod 1, Anda para Frente digitalWrite(MOTOR1_Enable,HIGH); digitalWrite(MOTOR2_Enable,HIGH); digitalWrite(LUZ_SETA_DIREITA,LOW); digitalWrite(LUZ_SETA_ESQUERDA,LOW); digitalWrite(LUZ_BRANCA_RE,LOW); penultimo=BT_1; MOTOR1_1State = LOW; MOTOR1_2State = HIGH; MOTOR2_1State = LOW; MOTOR2_2State = HIGH; }