Paso 10: código
El código puede encontrarse en los archivos adjuntos. No dude en modificar el código, pero sólo deja un Comentario en lo que subió con él.
Código
#include
Servo servoMain;
temp de flotador;
int tempPin = 0;
int r_motor_n = 2; Control PWM Motor de derecho-
int r_motor_p = 4; Control PWM Motor derecho +
int l_motor_p = 5; Control PWM izquierda Motor +
int l_motor_n = 7; Control PWM izquierda Motor-
permiten int = 3;
int luz = 9;
int enable2 = 6; PWM CONTROL VELOCIDAD
speed1 int = 0; Velocidad de control PWM
int incomingByte = 0; para los datos entrantes en serie
#include
#define TRIGGER_PIN 12 / / pin Arduino atado para activar el pin en el sensor de ultrasonidos.
#define ECHO_PIN 11 / / atado de Arduino pin a pin en el sensor ultrasónico del eco.
#define MAX_DISTANCE 200 / / distancia máxima queremos ping para (en centímetros). Distancia máxima del sensor está valorada en 400-500cm.
Sonar de NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); NewPing instalación de pernos y distancia máxima.
void setup()
{
servoMain.attach(10);
pinMode (r_motor_n, salida); Pines de control conjunto que salidas
pinMode (r_motor_p, salida);
pinMode (l_motor_p, salida);
pinMode (l_motor_n, salida);
pinMode (permiten, salida);
pinMode (enable2, salida);
pinMode (ligero, salida);
digitalWrite (r_motor_n, bajo); partió dos motores para el arranque
digitalWrite (r_motor_p, bajo);
digitalWrite (l_motor_p, bajo);
digitalWrite (l_motor_n, bajo);
digitalWrite (habilitar, LOW);
digitalWrite (enable2, bajo);
digitalWrite (luz alta);
Serial.Begin(9600);
Serial.Print ("Whats up im átomo, preparaban!!!!!! \n");
Serial.Print ("w = adelante \n");
Serial.Print ("s = retroceso \n");
Serial.Print ("d = derecha \n");
Serial.Print ("a = izquierda \n");
Serial.Print ("f = parada \n");
Serial.Print ("freaks cojo robótica");
}
void loop()
{
Si (Serial.available() > 0) {}
leer el byte entrante:
incomingByte = Serial.read();
}
Switch(incomingByte)
{
de caso ': / / control para detener el robot
digitalWrite (r_motor_n, bajo); Establecer la dirección del motor, 1 bajo, 2 bajo
digitalWrite (r_motor_p, bajo);
digitalWrite (l_motor_p, bajo);
digitalWrite (l_motor_n, bajo);
analogWrite (habilitar, 0);
analogWrite (enable2, 0);
Serial.println("Stop\n");
incomingByte ='* ';
rotura;
caso 'R': //control para derecho
digitalWrite (r_motor_n, HIGH); Establecer la dirección del motor, 1 alto, 2 bajo
digitalWrite (r_motor_p, bajo);
digitalWrite (l_motor_p, HIGH);
digitalWrite (l_motor_n, bajo);
analogWrite (enable, speed1);
analogWrite (enable2, speed1);
Serial.println("right\n");
incomingByte ='* ';
rotura;
caso 'L': //control de izquierda
digitalWrite (r_motor_n, bajo); Establecer la dirección del motor, 1 bajo, 2 de alto
digitalWrite (r_motor_p, HIGH);
digitalWrite (l_motor_p, bajo);
digitalWrite (l_motor_n, HIGH);
analogWrite (enable, speed1);
analogWrite (enable2, speed1);
Serial.println("left\n");
incomingByte ='* ';
rotura;
'F' del caso: //control para adelante
digitalWrite (r_motor_n, HIGH); Establecer la dirección del motor, 1 alta, 2 alta
digitalWrite (r_motor_p, bajo);
digitalWrite (l_motor_p, bajo);
digitalWrite (l_motor_n, HIGH);
analogWrite (enable, speed1);
analogWrite (enable2, speed1);
Serial.println("forward\n");
incomingByte ='* ';
rotura;
caso 'B': //control para atrás
digitalWrite (r_motor_n, bajo); Establecer la dirección del motor, 1 bajo, 2 bajo
digitalWrite (r_motor_p, HIGH);
digitalWrite (l_motor_p, HIGH);
digitalWrite (l_motor_n, bajo);
analogWrite (enable, speed1);
analogWrite (enable2, speed1);
Serial.println("backwards\n");
incomingByte ='* ';
rotura;
caso 'f':
digitalWrite (r_motor_n, bajo); Establecer la dirección del motor, 1 bajo, 2 bajo
digitalWrite (r_motor_p, bajo);
digitalWrite (l_motor_p, bajo);
digitalWrite (l_motor_n, bajo);
analogWrite (habilitar, 0);
analogWrite (enable2, 0);
Serial.println("Stop\n");
incomingByte ='* ';
rotura;
caso sería ':
digitalWrite (r_motor_n, HIGH); Establecer la dirección del motor, 1 alto, 2 bajo
digitalWrite (r_motor_p, bajo);
digitalWrite (l_motor_p, HIGH);
digitalWrite (l_motor_n, bajo);
analogWrite (enable, speed1);
analogWrite (enable2, speed1);
Serial.println("right\n");
incomingByte ='* ';
rotura;
caso 'a':
digitalWrite (r_motor_n, bajo); Establecer la dirección del motor, 1 bajo, 2 de alto
digitalWrite (r_motor_p, HIGH);
digitalWrite (l_motor_p, bajo);
digitalWrite (l_motor_n, HIGH);
analogWrite (enable, speed1);
analogWrite (enable2, speed1);
Serial.println("left\n");
incomingByte ='* ';
rotura;
caso 'w':
digitalWrite (r_motor_n, HIGH); Establecer la dirección del motor, 1 alta, 2 alta
digitalWrite (r_motor_p, bajo);
digitalWrite (l_motor_p, bajo);
digitalWrite (l_motor_n, HIGH);
analogWrite (enable, speed1);
analogWrite (enable2, speed1);
Serial.println("forward\n");
incomingByte ='* ';
rotura;
de caso ':
digitalWrite (r_motor_n, bajo); Establecer la dirección del motor, 1 bajo, 2 bajo
digitalWrite (r_motor_p, HIGH);
digitalWrite (l_motor_p, HIGH);
digitalWrite (l_motor_n, bajo);
analogWrite (enable, speed1);
analogWrite (enable2, speed1);
Serial.println("backwards\n");
incomingByte ='* ';
rotura;
caso 'r': / / ángulos de servo
servoMain.write(0);
rotura;
caso ' t ':
servoMain.write(45);
rotura;
caso 'y':
servoMain.write(90);
rotura;
caso 'u':
servoMain.write(135);
rotura;
caso 'i':
servoMain.write(180);
rotura;
caso ' o ': / / valores de velocidad PWM
Speed1 = 0;
rotura;
caso '1':
Speed1 = 155;
rotura;
caso '2':
Speed1 = 165;
rotura;
Case '3':
Speed1 = 175;
rotura;
caso '4':
Speed1 = 185;
rotura;
caso '5':
Speed1 = 195;
rotura;
caso '6':
Speed1 = 205;
rotura;
caso '7':
Speed1 = 215;
rotura;
caso '8':
Speed1 = 225;
rotura;
caso '9':
Speed1 = 235;
rotura;
caso 'q':
Speed1 = 255;
rotura;
caso soy ':
Temp = analogRead(tempPin); Leer la temperatura
Temp = temp * 0.48828125;
Serial.Print ("TEMPRATURE =");
Serial.Print(Temp);
Serial.Print("*C");
Serial.println();
Delay(1000);
rotura;
caso 'p': / / tiempo para sensor de ultasonic de thr de ping
Delay(50); Esperar 50ms entre pings (pings alrededor de 20 por segundo). 29ms debería ser el retraso más corto entre pings.
unsigned int nos = sonar.ping(); Enviar ping, ping tiempo en microsegundos (uS).
Serial.Print ("Ping:");
Serial.Print(US / US_ROUNDTRIP_CM); Convertir el tiempo de ping a distancia en cm y el resultado de la impresión (0 = distancia fija fuera de rango)
Serial.println("cm");
rotura;
Delay(5000);
}
}
Apoyarme y votar, si gano le garantizo que verá un montón de proyectos como este y si tienes cualquier problema sienta libre a PM me.