Arduino - 2 problemas con Arduino: motor que arranca solo y Gps que no funciona el codigo

 
Vista:

2 problemas con Arduino: motor que arranca solo y Gps que no funciona el codigo

Publicado por Irene (1 intervención) el 08/01/2023 17:25:46
Hola,

Mi nombre es Irene y soy una estudiante de segundo de bachillerato y estoy realizando el trabajo de investigación final sobre la robótica.

Por una parte, estoy desarrollando un robot evita objetos con la placa Arduino UNO, dos motores DC 3-6V, un sensor ultrasónico HC-SRO4, y el driver l298n, todo ello alimentado con 3 pilas de litio de 3,7V cada una (11,1V en total). He programado el código y funciona perfectamente. El problema es que cuando enciendo la batería y se enciende el robot, antes de empezar con el código que le he subido, el motor de la izquierda empieza a funcionar hacia delante a lo loco durante unos 5 segundos. ¿Sabrías como resolverlo? Estaría muy agradecida si me pudiera ayudar.

Aquí está el código que estoy usando, por si el error está ahí:

const int pinTrigger=6;
const int pinEcho=5;
long distancia=0;
long temps =0;


const int IN1 = 13;
const int IN2 = 12;
const int IN3 = 11;
const int IN4 = 10;
const int ENA = 3;
const int ENB = 9;


void setup() {

pinMode(pinTrigger,OUTPUT);
pinMode(pinEcho,INPUT);

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



}

void loop() {

medir();
if(distancia < 19) {

obstaculo();
}
if(distancia > 18) {

adelante();
}

}

void medir() {
digitalWrite(pinTrigger,LOW);
delayMicroseconds(2);
digitalWrite(pinTrigger,HIGH);
delayMicroseconds(10);
digitalWrite(pinTrigger, LOW);
temps = pulseIn(pinEcho, HIGH); //obtenim l'ample del pols
distancia = temps/29/2 ;
}

void adelante(){

digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
analogWrite(ENA, 90);
analogWrite(ENB, 90);

}

void derecha (){

digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
analogWrite(ENA, 150);
analogWrite(ENB, 200);

}

void detenido(){

digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
analogWrite(ENA, 0);
analogWrite(ENB, 0);

}

void obstaculo (){
detenido();
delay(300);
derecha();
delay(500);
detenido();
delay(100);
}

Por otra parte, tengo otro problema con un módulo GPS GY-NEO6MV2. Estoy probando el módulo GPS en una placa Arduino UNO. Mi objetivo es obtener la localización a través del monitor serie y ponerlo en algún sitio como Google Maps o Google Earth y obtener esta localización. Las conexiones son estas:
image.png

Cuando pruebo este código, funciona:

#include <SoftwareSerial.h>

// The serial connection to the GPS module
SoftwareSerial ss(4, 3);

void setup(){
Serial.begin(9600);
ss.begin(9600);
}

void loop(){
while (ss.available() > 0){
// get the byte data from the GPS
byte gpsData = ss.read();
Serial.write(gpsData);
}
}

Y recibo esta información:
image.png

He leído acerca de cómo interpretar esta información, pero no sé dónde puedo ponerlo para mostrar la ubicación exacta en un mapa. Así que probé este tipo de códigos con librerías para convertir esta info en latitud, mapas, ubicación, etc.: Códigos como los ejemplos que vienen en las librerias de TinyGPS y TinyGPS++. El problema es que estos códigos no funcionan.

Le agradecería si me pudieran ayudar. Gracias y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder