he intentado hacer eso, pero nada... cuando le digo de tirar para delante no funciona, y si conecto el servo y el lcd al circuito nada sucede... estoy bastante desesperado, alguien podría solucionarme la papeleta?
gracias y un saludo!
sixto
#include <Servo.h>
#include <LiquidCrystal.h>
Servo servoloco; // create servo object to control a servo
char puertoserie; // variable to receive data from the serial port
int motor_izquierda[] = {3, 5};
int motor_derecha[] = {6, 9};
int val = 0; // variable to store the value coming from the sensor
#define echoPin 36 // the SRF05's echo pin
#define initPin 37 // the SRF05's init pin
unsigned long pulseTime = 0; // variable for reading the pulse
LiquidCrystal lcd(22, 24, 26, 28, 30, 32);
void setup() {
servoloco.attach(11); // attaches the servo on pin 11 to the servo object v
Serial.begin(9600); // start serial communication at 9600bps
int i;
for(i = 0; i < 2; i++){
pinMode(motor_izquierda[i], OUTPUT);
pinMode(motor_derecha[i], OUTPUT);
lcd.begin(16, 2);
pinMode(initPin, OUTPUT);
pinMode(echoPin, INPUT);
}
}
void loop() {
if( Serial.available() ) // if data is available to read
{
puertoserie = Serial.read(); // read it and store it in 'val'
}
if( puertoserie == 'w' )
//do
{
go_forward_both_motors_on();
}
//if (pulseTime<=15);
//{
//stop_motors_both_motors_off2();
//}
//while (initPin >=15);
//{
// stop_motors_both_motors_off2();
// }
if( puertoserie == 's' )
{
go_forward_both_motors_on();
}
if( puertoserie == 'd' )
{
go_right();
}
if( puertoserie == 'a' )
{
go_left();
}
if( puertoserie == 'q' )
{
stop_motors_both_motors_off();
}
if ( puertoserie == 'o' )
{
}
if ( puertoserie == 'z' )
{
stop_motors_both_motors_off();
}
{
servoloco.write(10); // sets the servo position according to the scaled value
delay(600); // waits for the servo to get there
servoloco.write(170); // sets the servo position according to the scaled value
delay(600); // waits for the servo to get there
}
{
digitalWrite(initPin, HIGH);
delayMicroseconds(10);
digitalWrite(initPin, LOW);
pulseTime = pulseIn(echoPin, HIGH);
lcd.setCursor(0,0);
lcd.print(pulseTime / 58, DEC);
//lcd.clear();
lcd.print("cm");
delay(100);
//lcd.clear();
}
}
void stop_motors_both_motors_off(){
digitalWrite(motor_izquierda[0], LOW);
digitalWrite(motor_izquierda[1], LOW);
digitalWrite(motor_derecha[0], LOW);
digitalWrite(motor_derecha[1], LOW);
}
void go_left(){
digitalWrite(motor_izquierda[0], HIGH);
digitalWrite(motor_izquierda[1], LOW);
digitalWrite(motor_derecha[0], HIGH);
digitalWrite(motor_derecha[1], LOW);
}
void go_right(){
digitalWrite(motor_izquierda[0], LOW);
digitalWrite(motor_izquierda[1], HIGH);
digitalWrite(motor_derecha[0], LOW);
digitalWrite(motor_derecha[1], HIGH);
}
void go_forward_both_motors_on(){
digitalWrite(motor_izquierda[0], LOW);
digitalWrite(motor_izquierda[1], HIGH);
digitalWrite(motor_derecha[0], HIGH);
digitalWrite(motor_derecha[1], LOW);
}
void go_backwards_both_motors_on(){
digitalWrite(motor_izquierda[0], HIGH);
digitalWrite(motor_izquierda[1], LOW);
digitalWrite(motor_derecha[0], LOW);
digitalWrite(motor_derecha[1], HIGH);
}
void stop_motors_both_motors_off2(){
digitalWrite(motor_izquierda[0], LOW);
digitalWrite(motor_izquierda[1], LOW);
digitalWrite(motor_derecha[0], LOW);
digitalWrite(motor_derecha[1], LOW);
}