Que haya programado y construir un brazo robot que es capaz de regular su altura y mantener una altura determinada.
La altura deseada es controlada por la perilla de velocidad de un hackeado Logitech wingman extreme digital joystick de los años 80.
Este joystick controla también el movimiento de brazo y codo del brazo robot.
El movimiento del hombro se controla mediante un sonar de HC-RS04.
6 botones de la palanca de mando también está disponible para uso, cableado y programado.
Todo esto se programa en el Arduino Uno.
/*
Hackear un joystik viejo un control de un robotarm.
*/
/ * Para entender el control de servo y ping, compruebe servo.h/newping.h librerías * /
#include
#include
#define TRIGGER_PIN 12 / / pin Arduino atado para activar el pin en el sensor de ultrasonidos.
#define ECHO_PIN 13 / / atado de Arduino pin a pin en el sensor ultrasónico del eco.
#define MAX_DISTANCE 400 / * distancia máxima queremos ping para (en centímetros).
Distancia máxima del sensor tiene una potencia de 400-500cm.* /
Sonar de NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
Servo servo_arm;
Servo servo_skulder;
Servo servo_albue;
int temp_val;
int last_X = 25;
int last_Y = 25;
int last_Servo = 25;
int desiret_height = 3;
void setup() {}
pinMode (0, INPUT_PULLUP); Configuración de pines hasta entradas
pinMode (6, INPUT_PULLUP);
pinMode (2, INPUT_PULLUP);
pinMode (3, INPUT_PULLUP);
pinMode (4, INPUT_PULLUP);
pinMode (5, INPUT_PULLUP);
servo_arm.Attach(9);
servo_skulder.Attach(10);
servo_albue.Attach(11);
}
void loop()
{
////////////////////////////////// Sonar //////////////////////////////////////////
int Sonar = sonar.ping();
Delay(15);
/ * Ved ikke om denne kode skal Brujas endnu * /
Si (Sonar < = 183) {/ / Sonar = 183;
// }
////////////////////////////////// Joystik //////////////////////////////////////////
int sensorValue = analogRead(A0);
Delay(15);
int X = sensorValue;
sensorValue = analogRead(A1);
Delay(15);
int Y = sensorValue;
sensorValue = analogRead(A2);
Delay(15);
int altura = sensorValue;
Si (digitalRead(0) == LOW) {}
/ * Poner aquí el código para la acción de botón en * /
}
Else {}
/ * Colocar el código aquí para la acción de botón * /
}
Si (digitalRead(2) == LOW) {}
/ * igual que la línea 67 y 70 * /
}
Else {}
/ * igual que la línea 67 y 70 * /
}
Si (digitalRead(6) == LOW) {}
/ * igual que la línea 67 y 70 * /
}
Else {}
/ * igual que la línea 67 y 70 * /
}
Si (digitalRead(3) == LOW) {}
/ * igual que la línea 67 y 70 * /
}
Else {}
/ * igual que la línea 67 y 70 * /
}
Si (digitalRead(4) == LOW) {}
/ * igual que la línea 67 y 70 * /
}
Else {}
/ * igual que la línea 67 y 70 * /
}
Si (digitalRead(5) == LOW) {}
/ * igual que la línea 67 y 70 * /
}
Else {}
/ * igual que la línea 67 y 70 * /
}
Delay(500); utilizado para salida serie se, ralentizarlo.
Control de servo y mapeo / / /
Altura = mapa (altura, 0, 1023, 3, 50); Compruebe https://www.arduino.cc/ para la función de mapa
desiret_height = altura;
temp_val = mapa (X, 900, 45, 0, 180);
servo_arm.Write(temp_val);
temp_val = mapa (Y, 90, 950, 0, 65);
servo_skulder.Write(temp_val);
temp_val = mapa (Sonar, 200, 1400, 0, 55);
Si (temp_val < desiret_height)
{
last_Servo-= 1;
servo_albue.Write(last_Servo);
}
else if (temp_val > desiret_height)
{
last_Servo += 1;
servo_albue.Write(last_Servo);
}
}