TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Codigo Arduino Para Controle de Motores com Ponte h e um lcd i2c

Por:   •  29/4/2023  •  Trabalho acadêmico  •  841 Palavras (4 Páginas)  •  55 Visualizações

Página 1 de 4

#include <LiquidCrystal_I2C.h>

#include "DFRobot_RGBLCD1602.h"

#include <Wire.h>

#define IN1 2 // Conecta com pino IN2 pelo motor

#define IN2 3 // Conecta com pino IN1 pelo motor

#define IN3 6 // Conecta com pino IN4 pelo motor

#define IN4 7 // Conecta com pino IN3 pelo motor

#define B1 4 // Botão que inverte a rotação do motor 1

#define B2 8 // Botão que inverte a rotação do motor 2

#define ENA 9 // Controla velocidade do motor 1

#define ENB 10 // Controla velocidade do motor 2

float pot1; // Variável que contém o valor do potenciômetro 1

float pot2; // Variável que contém o valor do potenciômetro 2

int x1 = 0; // Variável que controla a direção de rotação do M1

int x2 = 0; // Variável que controla a direção de rotação do M2

LiquidCrystal_I2C lcd(0x20, 16, 2);

DFRobot_RGBLCD1602 lcd2(/*lcdCols*/16,/*lcdRows*/2); //16 characters and 2 lines of show

void setup() {

// Inicia o display LCD

lcd.init();

lcd.backlight();

lcd.clear();

// // Inicia o display LCD2

lcd2.init();

lcd.backlight();

lcd2.clear();

// Inicia os pinos de saída (OUTPUT) e entrada (INPUT)

pinMode(IN1, OUTPUT);

pinMode(IN2, OUTPUT);

pinMode(IN3, OUTPUT);

pinMode(IN4, OUTPUT);

pinMode(B1, INPUT);

pinMode(B2, INPUT);

// Inicia a rotação dos motores

digitalWrite(IN1, LOW);

digitalWrite(IN2, HIGH);

digitalWrite(IN3, LOW);

digitalWrite(IN4, HIGH);

// Configura o display para a identificação inicial dos motores

lcd.setCursor(0,0);

lcd.print("M1(V):");

lcd.setCursor(0,1);

lcd.print("M2(V):");

lcd.setCursor(8,0);

lcd.print("+");

lcd.setCursor(8,1);

lcd.print("+");

// Configura o display2 para a identificação inicial dos motores

lcd2.setCursor(0,0);

lcd2.print("M1(V):");

lcd2.setCursor(0,1);

lcd2.print("M2(V):");

lcd2.setCursor(8,0);

lcd2.print("+");

lcd2.setCursor(8,1);

lcd2.print("+");

}

void loop() {

// Coleta dados dos potenciômetros e divide por 1023

pot1 = analogRead(A0);

pot2 = analogRead(A1);

// Escreve dados lidos pelo potenciômetro nos PWMs de cada motor

analogWrite(ENA, (pot1/1023) * 255);

analogWrite(ENB, (pot2/1023) * 255);

// Verifica se um dos botões está ligado

if((digitalRead(B1) == 0) || (digitalRead(B2) == 0))

{

// Definição da direção de rotação do M1 a partir de x1

if(digitalRead(B1) == 0)

{

delay(50); // Atraso do botão

if(x1 == 0)

{

digitalWrite(IN1, HIGH);

...

Baixar como (para membros premium)  txt (3.9 Kb)   pdf (47 Kb)   docx (9.8 Kb)  
Continuar por mais 3 páginas »
Disponível apenas no TrabalhosGratuitos.com