Arduino, Sonar Mini Robot (3 / 3 paso)

Paso 3: código

He tratado de escribir el código fácil de ser demasiado simple para los principiantes. Pero si usted tiene cualesquiera problemas, preguntas y puede sugerencias, me gustaria saber.
Algunos consejos:

  • Distancia mínima es la distancia de frenado para evitar accidente. La mejor distancia de cualquier bloque de parar el robot, es depende de la velocidad de la caja de cambios.
  • Robot se vuelve a la distancia máxima.
  • backDist y turnDist deben ser modificado para requisitos particulares dependen de la velocidad del robot.
  • Ha utilizado un comportamiento al azar incluyendo una parada, melodía y movimiento al azar.

//******************************

* Por: http://blog.mshams.ir *

//******************************

números de PIN

const pinMotor1 bytes = 4, pinMotor2 = 5 pinMotor3 = 6, pinMotor4 = 7;

const pinLed byte = 8, pinTone = 10, pinSonar1 = 11, pinSonar2 = 12;

sonido frecuencia

const int toneFreq = 800;

Distancias de sonar

minDistance byte const = 45, maxDistance = 1000;

Estados motor

byte const M_STOP = 0, M_GO = 1, M_BACK = 2, M_RIGHT = 3, M_LEFT = 4, M_RIGHT2X = 5 M_LEFT2X = 6;

Estados de robot

byte const R_START = 0, R_DRIVE = 1, R_BLOCK = 2, R_TURN = 3;

detectar la resaca

const int hangoverWait = 5000;

bloque de detección ir detrás

const int backDist = 1000, turnDist = 300;

comportamiento aleatorio

const int randomChance = 300 randomStopWait = 10000, randomTurnWait = 200;

Estado del byte = R_START;

int i, contador = 0;

dist int;

void setup() {}

randomSeed(analogRead(1));

init pernos motor

pinMode (pinMotor1, salida);

pinMode (pinMotor2, salida);

pinMode (pinMotor3, salida);

pinMode (pinMotor4, salida);

pinMode (pinSonar1, salida);

pinMode (pinSonar2, entrada);

pin de LED init

pinMode (pinLed, salida);

}

void loop() {}

Switch (estado) {}

caso R_START:

Motor(M_GO);

Melody();

Estado = R_DRIVE;

rotura;

caso R_DRIVE:

Dist = Pingu();

Si (dist < minDistance) {}

Motor(M_STOP);

Estado = R_BLOCK;

}

else if (aleatorio (0, randomChance) == 5) {}

RandomTone();

Motor(M_STOP);

Delay(randomStopWait);

Motor (random (M_BACK, M_LEFT2X + 1));

Delay(randomTurnWait);

Motor(M_GO);

}

rotura;

caso R_BLOCK:

BEEP();

Motor(M_BACK);

Delay(backDist);

Motor (random (M_RIGHT2X, M_LEFT2X + 1));

Delay(turnDist);

Estado = R_TURN;

rotura;

caso R_TURN:

Dist = Pingu();

Si (dist > = maxDistance) {}

Motor(M_STOP);

Motor(M_GO);

BEEP();

Estado = R_DRIVE;

}

Else {}

contador += 1;

Si (contador > = hangoverWait) {}

Contador = 0;

Motor(M_STOP);

RandomTone();

Estado = R_BLOCK;

}

}

rotura;

}

}

void Blink (estado del byte) {}

digitalWrite (pinLed, estado);

}

void {Beep()

Blink(1);

SpeakTone(2);

SpeakTone(1);

Blink(0);

}

void Melody() {}

Blink(1);

para (int i = 1; i < 10; i ++) {}

SpeakTone(i);

}

Blink(0);

}

void RandomTone() {}

Blink(1);

para (int i = 1; i < 10; i ++) {}

SpeakTone (random(1, 10));

}

Blink(0);

}

void SpeakTone(byte note) {}

tono (pinTone, toneFreq * Nota);

Delay(100);

noTone(pinTone);

}

anular el Motor (estado de byte) {}

byte m1, m2, m3, m4;

Switch (estado) {}

caso M_STOP:

M1 = m2 = m3 = m4 = bajo;

rotura;

caso M_GO:

M1 = alta;

m2 = bajo;

M3 = alta;

M4 = bajo;

rotura;

caso M_BACK:

M1 = bajo;

m2 = alta;

M3 = bajo;

M4 = alta;

rotura;

caso M_RIGHT:

M1 = alta;

m2 = bajo;

M3 = bajo;

M4 = bajo;

rotura;

caso M_LEFT:

M1 = bajo;

m2 = bajo;

M3 = alta;

M4 = bajo;

rotura;

caso M_RIGHT2X:

M1 = alta;

m2 = bajo;

M3 = bajo;

M4 = alta;

rotura;

caso M_LEFT2X:

M1 = bajo;

m2 = alta;

M3 = alta;

M4 = bajo;

rotura;

}

digitalWrite (pinMotor1, m1);

digitalWrite (pinMotor2, m2);

digitalWrite (pinMotor3, m3);

digitalWrite (pinMotor4, m4);

}

int Pingu() {}

digitalWrite (pinSonar1, bajo);

delayMicroseconds(5);

digitalWrite (pinSonar1, HIGH);

delayMicroseconds(5);

digitalWrite (pinSonar1, bajo);

delayMicroseconds(2);

duración = pulseIn (pinSonar2, HIGH);

volver (duración / 2 de 29);

}

Artículos Relacionados

Mini Robot Platform

Mini Robot Platform

El objetivo de este proyecto es desarrollar un chasis miniatura para experimentar con robots de enjambre muy básico. La inspiración principal es fantástico proyecto MIT de James McLurkin la http://www.ai.mit.edu/projects/ants/de principios de los 90.
Mini robot insecto

Mini robot insecto

este es mi primer instructable y yo no soy hablante nativa de inglés, así que por favor me avisan si hay algo no suficientemente clara. Estoy usando el sistema de unidad métrica.Bueno, qué es el Bot de insectos. ¿Realmente no es un insecto porque sól
Arduino controlado Servo Robot (serbio)

Arduino controlado Servo Robot (serbio)

¿qué mejor manera de empezar a experimentar con micro-controladores de código abierto ( Arduino ) y construyendo tu propio abra robot fuente ( CC (SA-de))?¿Qué hacer con el serbio?(aquí) - Cómo conectar su servio al internet y la unidad sobre un Skyp
RFM69 / Arduino Pro Mini tener animada discusión con JeeLink

RFM69 / Arduino Pro Mini tener animada discusión con JeeLink

He estado explorando el mundo creciente de transceptores baratos, pequeño. Estos pequeños dispositivos son muy útiles para la comunicación entre dos nodos de la computadora y encajan muy bien en muchos proyectos. Las radios cubren una amplia gama de
LDRs + Arduino = un simple robot que puede detectar la luz!

LDRs + Arduino = un simple robot que puede detectar la luz!

Un LDR es una resistencia dependiente de luz y tiene muchos usos, por ejemplo, un photocel que puede encender las luces de su casa cuando su oscureciendo fuera.Una forma interesante de entender cómo funciona es leer sus valores con un Arduino.Por lo
Programar Arduino Pro Mini usando Arduino Uno

Programar Arduino Pro Mini usando Arduino Uno

Hola a todos. Hoy voy a mostrar como programar arduino pro mini usando arduino uno.Si ya tenías un arduino uno y nuevamente comprar arduino pro mini entonces usted no necesita comprar el convertidor USB a serial para programar el arduino pro mini por
Estante del paño interactivo (con Raspberry Pi, Arduino Pro Mini y Bluetooth HC-05)

Estante del paño interactivo (con Raspberry Pi, Arduino Pro Mini y Bluetooth HC-05)

Este es mi primer Instructable! Así que si he hecho algún error, por favor Perdóname :)El propósito es darle a los clientes una nueva experiencia al comprar.Cada vibración que los clientes cuando ellos eligiendo la ropa moviendo el perchas o / a los
Arduino Self Balancing Robot

Arduino Self Balancing Robot

En este proyecto que voy a describir la construcción de robots en equilibrio con Arduino.We explicó en nuestra versión anterior de android proyecto controlado. En este proyecto se moverá a nuestro control. Vamos a ir vamos a llegar a nuestro proyecto
Contador de objeto Arduino Sonar

Contador de objeto Arduino Sonar

Este tutorial le mostrará cómo usar un sensor de distancia de sonar como un objeto. Utiliza la HC-SR04Paso 1: Aquí es lo que necesitamos para este proyecto. Los componentes de este proyecto es:1. tablero Arduino UNO o simmular.2. sonar HC-SR043. brea
Cómo programar Arduino Pro Mini con Arduino Uno y ArduShield - sin los cables de

Cómo programar Arduino Pro Mini con Arduino Uno y ArduShield - sin los cables de

El objetivo principal de esta instrucción es mostrar cómo programar más fácil manera de Arduino Mini o Arduino Pro Mini con Arduino UNO y ArduShield – sin los cables.Paso Tutorial paso, con ninguna medida para saltar por PCB impresionante.Paso 1 - ¿q
Arduino pro mini Bluetooth HC-06 y aplicación Android

Arduino pro mini Bluetooth HC-06 y aplicación Android

Arduino pro mini Bluetooth HC-06 y aplicación AndroidL canal de YouTubeDocumentos y código
Arduino Pro Mini caja de música

Arduino Pro Mini caja de música

Mi recreación de una caja de música se basa en:Página de la caja de música de Sofíahttp://www.craigandheather.net/celemusicbox.htmlNivel de experiencia: medio, que necesita algunas habilidades de soldadura y utilizando un taladro para hacer algunos a
KVG Mini Robot Flexi

KVG Mini Robot Flexi

este es un mini robot que hice mientras timepassing sólo, tiene brazos flexibles y cuatro patas retráctiles (más bien, ayudas).Paso 1: Lista de piezas La partes lista-algo mayoría de la gente pasar mientras instructables.BARRAS DEVerde - 6Blanco - 6Y
Program Arduino Pro Mini with FTDI FT232RL

Program Arduino Pro Mini with FTDI FT232RL

Cómo programar Arduino Pro Mini con FT232RL de FTDI¿Qué necesitamos?1. Arduino Pro Mini2. puente de alambre hembra a hembra3. FTDI FT232RL4. macho A Mini B USB cable5. Arduino IDELas conexiones del FT232RL de FTDI y el Mini Pro son:GND -> GNDCTS-->