hola, estoy haciendo un coche que esquiva obstáculos. Bien, este tiene un servo que controla la dirección en las ruedas delanteras y un motor que da potencia a las ruedas traseras. El coche es comprado, es decir ya venia montado. El problema principal que tengo es la programación del motor, pues el coche ya viene con el variador de velocidad pero no se como programarlo ni como conectarlo al arduino para no dañarlo ni si necesita un puente en hache. Si alguien me pudiera echar un cable le estaria muy agradecido, pues soy nuevo en esto. De mientras seguiré buscando y aprendiendo, graciascoche
Hola Sergi44. Edita tu título: No puede llamarse con tu nick.
Segundo, intenta dar información de tu coche como dices.
Donde lo compraste, busca info, busca librerías, esquemas, valores de tension y corriente de los motores.
Fotos.. todo lo que ayude
Bien, gracias por el comentario. He estado trabajando. Aqui os dejo el codigo. Ahira me gustaria para sacarle más partido el motor hacer que cuando los sensores detecten por ejemplo más de 3 metros este acelere. Alguien me puede ayudar en la programación. Seguiré buscando de mientras.
#include <Servo.h>
Servo servo1;
Servo motor;
int velocitat = 0;
const int sensordreta = 5; // conectem el senyal del pin drer al pin 5
const int sensoresquerra = 4; //conectem el senyal del sensor esquerra al pin 4
const int trigpindreta = 6; // declarem el pin que envia l'ultraso al 6
const int echopindreta = 7;// declarem el pin que rep distancia al pin 7
const int trigpinesquerra = 8; // declarem el pin que enivia l'ultrasi al pin 8
const int echopinesquerra = 9; //declarem el pi que rep l'ultraso al pin 9
int pos = 90; //declarem la posicio per defecte del servo a 90 graus
int led = 13; //declarem el led en el pin 13
long duration, cm; //declarem les unitats
void setup() {
// initialize serial communication:
Serial.begin(9600); // velocitat comunicació sensor i ordinador
servo1.attach(9); //declarem el servo al pin 9
motor.attach(2); //declarem el motor al pin 2
pinMode(led,OUTPUT);//declarem el pin del led coom a sortida
pinMode(trigpindreta, OUTPUT);//declarem com a sortida el pin de la part del sensor que envia el senyal
pinMode(echopindreta, INPUT);//declarem com a entrada el pin de la part del sensor que rep el senyal
pinMode(trigpinesquerra, OUTPUT);//declarem com a sortida el pin de la part del sensor que envia el senyal
pinMode(echopinesquerra, INPUT);//declarem com a entrada el pin de la part del sensor que rep el senyal
pinMode(sensoresquerra, OUTPUT);// declarem els pins dels senors com a sortida ja que envien informació al xip
pinMode(sensordreta, OUTPUT); //
}
void endarrera(){
motor.write(20);
} //falta saber programa motor
void endavant(){
servo1.write(90);
motor.write(110);
}
void esquerra(){
endarrera();
delay(1000);
servo1.write(0);
endavant();
delay(2000);
}
void dreta(){
endarrera();
delay(1000);
servo1.write(180);
endavant();
delay(2000);
}
void parpadeig(){
digitalWrite(led,HIGH);
delay(cm20);
digitalWrite(led,LOW);
delay(cm20);
}
void loop()
{
// establim variables de duracó dels sensors
// establim el resultat de la distància en centimetres
// Els sensors envien un pols HIGH de 2 o més microsegons
// I després un pols de senyal LOW per tal de netejar el senyal del pols i que no hi hagin errors
digitalWrite(trigpindreta, LOW);
digitalWrite(trigpinesquerra, LOW);
delay(2);
digitalWrite(trigpindreta, HIGH);
digitalWrite(trigpinesquerra, HIGH);
delay(10);
digitalWrite(trigpindreta,LOW);
digitalWrite(trigpinesquerra, LOW);
// The same pin is used to read the signal from the PING))): a HIGH
// pulse whose duration is the time (in microseconds) from the sending
// of the ping to the reception of its echo off of an object.
duration = pulseIn(echopindreta, HIGH);
duration = pulseIn(echopinesquerra, HIGH);
cm = microsecondsToCentimeters(duration);
// convert the time into a distance
Serial.print(duration);
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(100);
if (sensordreta>50, sensoresquerra>50){
endavant();
digitalWrite(led,LOW);
}
if (sensoresquerra<=50){// si el sensor esquerra detecta un objecte gira a la dreta
dreta();
parpadeig();
}
if (sensordreta<=50, sensoresquerra>50){// si el sensor dret detecta un objecte a 50 cm, gira a l'esquerra
esquerra();
parpadeig();
}
if (sensordreta<=50, sensoresquerra<=50){ // quan els dos sensors detecten
motor.write(0);
endarrera();
delay(1000);
servo1.write(180); // gira servo 180 graus
endarrera();
delay(3000);
parpadeig();
endavant();
}
}
long microsecondsToCentimeters(long microseconds)
{
// The speed of sound is 340 m/s or 29 microseconds per centimeter.
// The ping travels out and back, so to find the distance of the
// object we take half of the distance travelled.
return microseconds / 29 / 2;
}