Preciso de ajuda em um código que controle uma ponte H L298n via bluetooth

Olá, sou um iniciante no assunto, porém amo a róbotica. Estou fazendo um projeto de um carrinho, com 2 motores DC e controlados pela ponte H L298n, também é necessário a aplicação de um lcd 16x2 para indicar os sentidos e velocidade numa escala de 1 a 100. Até o momento consegui fazer esse código :

#include <SoftwareSerial.h>

//Carrega a biblioteca LiquidCrystal
#include <LiquidCrystal.h>

//Define os pinos que serão utilizados para ligação ao display
LiquidCrystal lcd(9, 8, 5, 4, 3, 2);

SoftwareSerial bluetooth(12, 13); // RX, TX

int IN1 = 0;
int IN2 = 1;
int IN3 = 6;
int IN4 = 7;
int ENA = 10;
int ENB = 11;

void setup()
{

Serial.begin(9600);

//Setup Bluetooth serial connection to android
bluetooth.begin(9600);

pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);

lcd.begin(16, 2);
}

void loop()
{
//Read from bluetooth and write to usb serial
if(bluetooth.available()>= 2 )
{

char caracter = bluetooth.read();
if(caracter == ‘D’)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Direita”);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
Serial.println(“Direita”);
delay(10);
}
if(caracter == ‘E’)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Esquerda”);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
Serial.println(“Esquerda”);
delay(10);
}
if(caracter == ‘F’)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Freio”);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
Serial.println(“Freio”);
delay(10);
}
delay(10);

unsigned int speedpos = bluetooth.read();
unsigned int speedpos1 = bluetooth.read();
unsigned int realspeed = (speedpos1 *256) + speedpos;
Serial.println(realspeed);

if (realspeed>= 1000 && realspeed <1100){
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print(“Frente”);
int speed1 = realspeed;
speed1 = map(speed1, 1000,1100,0,255);
ENA = speed1;
Serial.println(“Motor A ON”);
delay(10);

}

if (realspeed>= 2000 && realspeed <2100){
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print(“Marcha Re”);
int speed2 = realspeed;
speed2 = map(speed2, 2000,2100,0,255);
ENB = speed2;
Serial.println(“Motor B ON”);
delay(10);

}

}

}

Não consigo nada no monitor serial com esse código e o programa que fiz no MIT APP Inventor está compatível para essa programação, se alguém poder ajudar, preciso do controle de PWM para frente e para trás e do controle para sentidos de direção, esquerda e direita. O controle de direções pode ser por botões, agora o de PWM gostaria que fosse por meio do slider, tenho um projeto até semelhante se quiserem da uma olhada, segue o link do vídeo.

Att: Levi D. Moreira

This is the English language part of the forum. You must post in English here.

usar code etiquetas </> por favor

  • CTRL-T por formato automático