sábado, 5 de junho de 2021

Projeto Carrinho de Controle Remoto - Parte 02

 Boa tarde colegas,

    Enfim terminei o projeto do carrinho de controle remoto. Utilizei inicialmente o Arduino Uno, mas depois troquei pelo Arduino Nano. O motivo: O Nano é bem menor que o Uno e com isso eu ganhei diminuição de espaço e peso. Também troquei minha ponte H L298N pela ponte H L293D. Ganhei ainda mais espaço. Utilizei ainda um módulo controle remoto transmissor de 4 canais com receptor de 433 MHz, uma bateria recarregável de 9V para alimentar o Arduino e um power bank de 5V (1A) para alimentar apenas os motores. O módulo receptor é alimentado pela saída de 5V do próprio Arduino Nano. Os motores precisam ser alimentados separadamente para não danificar o Arduino. Não consegui alimentar tudo com o power bank, pois notei interferência quando os motores estão ligados no receptor. Vou postar o diagrama esquemático utilizado na montagem. A única diferença é que no lugar dos botões está a ligação do receptor. E no lugar da bateria com o regulador de 5V está o carregador portátil (power bank) de 5V. A recepção é muito boa, mas tive que sintonizar os módulos e soldar uma antena no receptor com 17 centímetros. Vejam as fotos e o vídeo abaixo:

Vídeo: https://youtu.be/Dxp6MFYU5EM

Clique Aqui

Diagrama esquemático:




Fotos:





Sketch:


// DEFINIÇÕES DE PINOS

#define pinC 4 //D3 Do Receptor - Esquerda - Botão C do transmissor

#define pinD 5 //D1 Do Receptor - Direita - Botão D do transmissor

#define pinA 6 //D2 do Receptor - Frente - Botão A do transmissor

#define pinB 7 //D0 do Receptor - Ré - Botão B do transmissor

 

#define motor1A  8

#define motor1B  9

#define motor2A  12

#define motor2B  11

 

// DECLARAÇÃO DE VARIÁVEIS  

 

unsigned long tempo = 0;

int direita=0;

int esquerda=0;

int frente=0;

int re=0;

bool estadoPinA;

bool estadoPinB;

bool estadoPinC;

bool estadoPinD;

bool estadomotor1A = false;

bool estadoPinAAnt = false;

bool estadoPinCAnt = false;

  

void setup() {

             

  pinMode(motor1A, OUTPUT);

  pinMode(motor1B, OUTPUT);

  pinMode(motor2A, OUTPUT);

  pinMode(motor2B, OUTPUT);

               //pinMode(13, OUTPUT);

  //digitalWrite(13, LOW);

}

 

void loop() {

 

 //Liga o motor1A e 2A sem retenção - FRENTE

  

estadoPinA = digitalRead(pinA);

 

if (estadoPinA == true) {

digitalWrite(motor1B,LOW);

digitalWrite(motor2B,LOW);

digitalWrite(motor1A,HIGH);

digitalWrite(motor2A,HIGH);

tempo = millis();

re=0;

esquerda=0;

direita=0;

frente = 1;

}

else if (estadoPinA == false && (millis()-tempo)>1000 && frente==1) {

 

digitalWrite(motor1A,LOW); 

digitalWrite(motor2A,LOW);

frente = 0;

}

 

//Liga o motor1B e 2B sem retenção - RÉ

  

 estadoPinB = digitalRead(pinB);

 

if (estadoPinB == true) {

digitalWrite(motor1A,LOW);

digitalWrite(motor2A,LOW);

digitalWrite(motor1B,HIGH);

digitalWrite(motor2B,HIGH);

tempo = millis();

frente=0;

direita=0;

esquerda=0;

re = 1;

}

else if (estadoPinB == false && (millis()-tempo)>1000 && re==1) {

 

digitalWrite(motor1B,LOW); 

digitalWrite(motor2B,LOW);

re=0;

}

 

//Liga o motor1B e 2A sem retenção - ESQUERDA

  

 estadoPinC = digitalRead(pinC);

 

if (estadoPinC == true) {

digitalWrite(motor1A,LOW);

digitalWrite(motor2B,LOW);

digitalWrite(motor1B,HIGH);

digitalWrite(motor2A,HIGH);

tempo = millis();

frente=0;

re=0;

direita=0;

esquerda = 1;

}

else if (estadoPinC == false && (millis()-tempo)>200 && esquerda==1) {

digitalWrite(motor1B,LOW); 

digitalWrite(motor2A,LOW);

esquerda = 0;

}   

 

//Liga o motor1A e 2B sem retenção - DIREITA

  

 estadoPinD = digitalRead(pinD);

 

if (estadoPinD == true) {

digitalWrite(motor1B,LOW);

digitalWrite(motor2A,LOW);

digitalWrite(motor1A,HIGH);

digitalWrite(motor2B,HIGH);

tempo = millis();

frente=0;

re=0;

esquerda=0;

direita = 1;

}

else if (estadoPinD == false && (millis()-tempo)>200 && direita == 1) {

digitalWrite(motor1A,LOW); 

digitalWrite(motor2B,LOW);

direita = 0;

}

}