Arduino Biped (Baby Dino)
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 5 |
Acerca de este proyecto
Baby Dino es un robot de dos patas basado en Arduino. Básicamente utiliza cinco servomotores, dos para cada pata y uno para la cabeza. También utiliza un sensor ultrasónico para detectar obstáculos y evitarlos. ¡Veamos ahora cómo hacerlo!
Paso 1:Introducción
- Baby Dino es un robot de bricolaje que utiliza Arduino.
- Está hecho de cartón.
- Encontrará obstáculos y luego se moverá hacia la izquierda o hacia la derecha.
Paso 2:componentes necesarios
- 1 X Arduino Uno, Nano o Mega
- Servo 5 X 9g
- 1 X sensor ultrasónico HC-SR04
- 1 batería LiPo (batería de 2 o 9 V)
Paso 3:reparación del servo
- Descarga el programa
- Sube a Arduino
- Conecte el servo de acuerdo con el diagrama a continuación
- Arregle la bocina del servo
- Asegúrese de que todo esté a 90 grados
Paso 4:diseño
- Descarga el diseño
- Imprimirlo en A4
- Péguelo en cartón
- Córtalo
Paso 5:paso final
- Coloque los servos en un cartón
- Sube el programa a Arduino
- Conecte los servos y el sensor ultrasónico
- Administre el cable como cola
- Conecte la batería
¡Eso es!
uBipedino.ino
Código
- fix.ino
- bípedo
fix.ino Arduino
#includeServo s1; Servo s2; Servo s3; Servo s4; Servo s5; configuración vacía () {s1.attach (8); s2. adjuntar (9); s3. adjuntar (10); s4.attach (11); s5.attach (12);} bucle vacío () {s1.write (90); s2.write (90); s3.write (90); s4.write (90); s5.write (90); }
bípedo Arduino
edite los pines servo y ultrasónicos de acuerdo con su deseo#include#include // edite el pin de acuerdo con su conexión # defina IRsensorPin 13 // si está usando un sensor de infrarrojos en lugar de sensor ultrasónico # define TRIGGER_PIN 12 // Pin de Arduino atado al pin de disparo en el sensor ultrasónico. # define ECHO_PIN 11 // Pin de Arduino atado al pin de eco en el sensor ultrasónico. # define LEFTLEG 7 # define RIGHTLEG 10 # define LEFTFOOT 8 # define RIGHTFOOT 9 # define HEAD 6 # define MAX_DISTANCE 200 // Distancia máxima para la que queremos hacer ping (en centímetros). La distancia máxima del sensor está clasificada en 400-500 cm. Nueva sonda Ping (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Configuración NewPing de pines y distancia máxima.Servo Lleg; // crea un objeto servo para controlar un servo Servo Rleg; Servo Lfoot; Servo Rfoot; Servo Head; int Hcenter =70; // variable para almacenar la posición central del servo int RLcenter =100; int RFcenter =65; // variable para almacenar la posición central del servo int LLcenter =90; int LFcenter =75; int tAngle =30; // ángulo de inclinaciónint uAngle =35; // girar angleint sAngle =35; // swing angleint hAngle =Hcenter; void Forward (pasos de bytes, velocidad de bytes) {Serial.println ("Forward"); TiltRightUp (ángulo, velocidad); para (byte j =0; j 0; i- =5) {Lfoot.write (LFcenter + i); Rfoot.write (RFcenter + i); retraso (sp); }} void TiltLeftUp (byte ang, byte sp) {// inclina hacia la izquierda hacia arriba para (int i =0; i <=ang; i + =5) {Lfoot.write (LFcenter-i); Rfoot.write (RFcenter-i); retraso (sp); }} void TiltLeftDown (byte ang, byte sp) {// inclina a la izquierda hacia abajo para (int i =ang; i> 0; i- =5) {Lfoot.write (LFcenter-i); Rfoot.write (RFcenter-i); retraso (sp); }} void LeftFootUp (char ang, byte sp) {// inclinar a la izquierda hacia arriba para (int i =0; i <=ang; i + =5) {Lfoot.write (LFcenter-i); retraso (sp); }} void LeftFootDown (byte ang, byte sp) {// inclinar a la izquierda hacia abajo para (int i =ang; i> 0; i- =5) {Lfoot.write (LFcenter-i); retraso (sp); }} void RightFootUp (byte ang, byte sp) {// inclinar hacia arriba para (int i =0; i <=ang; i + =5) {Rfoot.write (RFcenter + i); retraso (sp); }} void RightFootDown (byte ang, byte sp) {// inclinar a la derecha hacia abajo para (int i =ang; i> 0; i- =5) {Rfoot.write (RFcenter + i); retraso (sp); }} void SwingRight (byte ang, byte sp) {// swing a la derecha para (int i =0; i <=ang; i + =5) {Lleg.write (LLcenter-i); Rleg.write (RLcenter-i); retraso (sp); }} void SwingRcenter (byte ang, byte sp) {// swing r-> center for (int i =ang; i> 0; i- =5) {Lleg.write (LLcenter-i); Rleg.write (RLcenter-i); retraso (sp); }} void SwingLeft (byte ang, byte sp) {// swing a la izquierda para (byte i =0; i <=ang; i =i + 5) {Lleg.write (LLcenter + i); Rleg.write (RLcenter + i); retraso (sp); }} void SwingLcenter (byte ang, byte sp) {// swing l-> center for (byte i =ang; i> 0; i =i-5) {Lleg.write (LLcenter + i); Rleg.write (RLcenter + i); retraso (sp); }} void RightLegIn (byte ang, byte sp) {// swing a la derecha para (int i =0; i <=ang; i + =5) {Rleg.write (RLcenter-i); retraso (sp); }} void RightLegIcenter (byte ang, byte sp) {// swing r-> center for (int i =ang; i> 0; i- =5) {Rleg.write (RLcenter-i); retraso (sp); }} void RightLegOut (byte ang, byte sp) {// swing a la derecha para (int i =0; i <=ang; i + =5) {Rleg.write (RLcenter + i); retraso (sp); }} void RightLegOcenter (byte ang, byte sp) {// swing r-> center for (int i =ang; i> 0; i- =5) {Rleg.write (RLcenter + i); retraso (sp); }} void LeftLegIn (byte ang, byte sp) {// swing a la izquierda para (byte i =0; i <=ang; i =i + 5) {Lleg.write (LLcenter + i); retraso (sp); }} void LeftLegIcenter (byte ang, byte sp) {// swing l-> center for (byte i =ang; i> 0; i =i-5) {Lleg.write (LLcenter + i); retraso (sp); }} void LeftLegOut (byte ang, byte sp) {// swing a la izquierda para (byte i =0; i <=ang; i =i + 5) {Lleg.write (LLcenter-i); retraso (sp); }} void LeftLegOcenter (byte ang, byte sp) {// swing l-> center for (byte i =ang; i> 0; i =i-5) {Lleg.write (LLcenter-i); retraso (sp); }} configuración vacía () {Serial.begin (19200); Serial.println ("La instalación de Bipedino se está ejecutando"); Lleg.attach (LEFTLEG); Rleg.attach (RIGHTLEG); Lfoot.attach (LEFTFOOT); Rfoot.attach (RIGHTFOOT); Head.attach (HEAD); CenterServos (); retraso (500); para (int i =0; i <5; ++ i) {GetSonar (); retraso (1000); } Serial.println ("Bipedino está listo.");} // setup () void loop () {unsigned int cmCenter =MAX_DISTANCE; unsigned int cmLeft =MAX_DISTANCE; unsigned int cmRight =MAX_DISTANCE; HeadCenter (); cmCenter =GetSonar (); si (cmCenter <20) {HeadRight (); cmRight =GetSonar (); HeadCenter (); if (cmRight> 20) {TurnRight (1, 30); } else {HeadLeft (); cmLeft =GetSonar (); HeadCenter (); if (cmLeft> 20) {TurnLeft (1, 30); }}} else {int nSteps =cmCenter / 5; si (nPasos> 5) {nPasos =5; } más {nPasos =1; } Serial.print ("Pasos <"); Serial.print (nSteps); Serial.println (">"); para (int n =0; n Piezas y carcasas personalizadas
Esquemas
Proceso de manufactura