Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Controlador de joystick para el robot MeArm - Grabación de coordenadas

Componentes y suministros

Arduino UNO
× 1
Joystick analógico (genérico)
× 2
Resistencia de 10k ohmios
× 2
Resistencia 680 ohm
× 1
LED de 5 mm:rojo
× 1
Micro servo SG90
× 4

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

Controlador de joystick Arduino Uno para brazo robot (MeArm®) con registro de coordenadas. Permite repetir las coordenadas grabadas una vez al hacer clic en el botón o repetidamente. Utiliza placa base Arduino Uno sin placas adicionales. Requiere conexión USB (2A) o fuente de alimentación 6V / 2A. Probado con el uso de cuatro servos SG90.

Presione el botón en el joystick1 para iniciar la grabación de coordenadas. Presione el botón en el joystick1 para finalizar la grabación de coordenadas.

Presione el botón en el joystick2 para comenzar a reproducir las coordenadas grabadas. Presione el botón del joystick2 para detener la reproducción de las coordenadas grabadas. Mantenga pulsado el botón del joystick2 para iniciar la reproducción de las coordenadas grabadas automáticamente en el ciclo.

Nota:También hemos creado una versión más simple de este software que no requiere resistencias adicionales ni diodos LED:MeArm Robot - Registro de coordenadas (versión minimalizada)

Si tiene un tablero de joystick MeArm, aquí hay una versión para usted:MeArm 1.6.1 Movimientos de grabación del tablero de joystick del robot (IR)

Código

  • Controlador Joystick Arduiono para robot MeArm ® con registro de coordenadas. (versión 1.3.1)
Controlador Joystick Arduiono para robot MeArm ® con registro de coordenadas. (versión 1.3.1) Arduino
Use Arduino IDE para programar la placa base Arduiono UNO a través del puerto USB.
 / * meArm joysticks analógicos versión 1.3.1 - UtilStudio.com Diciembre de 2018 Utiliza dos joysticks analógicos y cuatro servos. En la versión 1.3 se mejoró el registro de coordenadas. Se eliminaron algunos errores. El primer joystick mueve la pinza hacia adelante, hacia atrás, hacia la izquierda y hacia la derecha, el botón inicia / detiene las posiciones de grabación. El segundo joystick mueve la pinza hacia arriba, hacia abajo y se cierra y abre, el botón inicia / detiene la reproducción de posiciones grabadas. Presione el botón durante 2 segundos para reproducir automáticamente. Pines:Arduino Stick1 Stick2 Base Hombro Codo Pinza Grabación / GND GND GND Marrón Marrón Marrón Marrón Auto play 5V VCC VCC Rojo Rojo Rojo Rojo LED A0 HOR A1 VER PD2 BUTT A2 HOR A3 VER PD3 BUTT 11 Amarillo 10 Amarillo 9 Amarillo 6 Amarillo PD4 X * / # incluye  bool repeatePlaying =false; / * Se ejecuta repetidamente el ciclo grabado * / int delayBetweenCycles =2000; / * Retraso entre ciclos * / int basePin =11; / * Servo base * / int shoulderPin =10; / * Servo de hombro * / int elbowPin =9; / * Servo codo * / int gripperPin =6; / * Servo de pinza * / int xdirPin =0; / * Base - joystick1 * / int ydirPin =1; / * Hombro - joystick1 * / int zdirPin =3; / * Codo - joystick2 * / int gdirPin =2; / * Pinza - joystick2 * /// int pinRecord =A4; / * Botón de registro - compatibilidad con versiones anteriores * /// int pinPlay =A5; / * Botón de reproducción - compatibilidad con versiones anteriores * / int pinRecord =PD2; / * Botón de registro - recomendado (A4 está en desuso, se usará para joystick adicional) * / int pinPlay =PD3; / * Botón de reproducción - recomendado (A5 está en desuso, se usará para joystick adicional) * / int pinLedRecord =PD4; / * LED - indica grabación (luz) o modo de reproducción automática (parpadea uno) * / bool useInternalPullUpResistors =false; const int buffSize =512; / * Tamaño del búfer de grabación * / int startBase =90; int startShoulder =90; int startElbow =90; int startGripper =0; int posBase =90; int posShoulder =90; int posElbow =90; int posGripper =0; int lastBase =90; int lastShoulder =90; int lastElbow =90; int lastGripper =90; int minBase =0; int maxBase =150; int minShoulder =0; int maxShoulder =150; int minElbow =0; int maxElbow =150; int minGripper =0; int maxGripper =150; const int countServo =4; int buff [buffSize]; int buffAdd [countServo]; int recPos =0; int playPos =0; int buttonRecord =HIGH; int buttonPlay =HIGH; int buttonRecordLast =LOW; int buttonPlayLast =LOW; bool record =false; bool play =false; bool debug =false; String command ="Manual"; int printPos =0; int buttonPlayDelay =20; int buttonPlayCount =0; bool ledLight =false; Servo servoBase; Servo servoShoulder; Servo servoElbow; Servo servoGripper; Void setup () {Serial.begin (9600); if (useInternalPullUpResistors) {pinMode (pinRecord, INPUT_PULLUP); pinMode (pinPlay, INPUT_PULLUP); } else {pinMode (pinRecord, INPUT); pinMode (pinPlay, ENTRADA); } pinMode (xdirPin, ENTRADA); pinMode (ydirPin, ENTRADA); pinMode (zdirPin, ENTRADA); pinMode (gdirPin, ENTRADA); pinMode (pinLedRecord, SALIDA); servoBase.attach (basePin); servoShoulder.attach (shoulderPin); servoElbow.attach (elbowPin); servoGripper.attach (gripperPin); Posición de salida(); digitalWrite (pinLedRecord, ALTO); retraso (1000); digitalWrite (pinLedRecord, LOW);} bucle vacío () {buttonRecord =digitalRead (pinRecord); buttonPlay =digitalRead (pinPlay); // Serial.print (buttonRecord); // Serial.print ("\ t"); // Serial.println (buttonPlay); // con fines de prueba if (buttonPlay ==LOW) {buttonPlayCount ++; if (buttonPlayCount> =buttonPlayDelay) {repeatePlaying =true; }} else buttonPlayCount =0; if (buttonPlay! =buttonPlayLast) {if (registro) {registro =falso; } if (buttonPlay ==LOW) {play =! play; repeatePlaying =falso; if (reproducir) {StartPosition (); }}} if (buttonRecord! =buttonRecordLast) {if (buttonRecord ==LOW) {record =! record; si (grabar) {reproducir =falso; repeatePlaying =falso; recPos =0; } else {if (depurar) PrintBuffer (); }}} buttonPlayLast =buttonPlay; buttonRecordLast =buttonRecord; flotante dx =mapa (analogRead (xdirPin), 0, 1023, -5.0, 5.0); flotador dy =mapa (analogRead (ydirPin), 0, 1023, 5.0, -5.0); flotar dz =mapa (analogRead (zdirPin), 0, 1023, 5.0, -5.0); float dg =map (analogRead (gdirPin), 0, 1023, 5.0, -5.0); si (abs (dx) <1,5) dx =0; si (abs (dy) <1,5) dy =0; si (abs (dz) <1,5) dz =0; si (abs (dg) <1,5) dg =0; posBase + =dx; posShoulder + =dy; posCodo + =dz; posGripper + =dg; if (play) {if (playPos> =recPos) {playPos =0; if (repeatePlaying) {retraso (retraso entre ciclos); Posición de salida(); } else {jugar =falso; }} bool endOfData =false; while (! endOfData) {if (playPos> =buffSize - 1) break; if (playPos> =recPos) break; int data =buff [playPos]; int ángulo =datos &0xFFF; int servoNumber =data &0x3000; endOfData =datos &0x4000; switch (servoNumber) {caso 0x0000:posBase =ángulo; descanso; caso 0x1000:posShoulder =ángulo; descanso; caso 0x2000:posElbow =ángulo; descanso; caso 0x3000:posGripper =ángulo; dg =posGripper - lastGripper; descanso; } playPos ++; }} if (posBase> maxBase) posBase =maxBase; if (posShoulder> maxShoulder) posShoulder =maxShoulder; if (posElbow> maxElbow) posElbow =maxElbow; if (posGripper> maxGripper) posGripper =maxGripper; if (posBase  0) {posGripper =maxGripper; waitGripper =verdadero; } servoGripper.write (posGripper); if (reproducir &&waitGripper) {demora (1000); } if ((lastBase! =posBase) | (lastShoulder! =posShoulder) | (lastElbow! =posElbow) | (lastGripper! =posGripper)) {if (record) {if (recPos   

Esquemas

Controlador de joystick para robot MeArm ® con registro de coordenadas - diagrama esquemático Placa de prueba con solo dos servos conectados. Ver diagrama esquemático para conectar 4 servomotores.

Proceso de manufactura

  1. Controlador de juego Arduino
  2. Brazo robótico MeArm - Su robot - V1.0
  3. Coche RC controlado por joystick
  4. Robot seguidor de línea
  5. Calculadora UNO simple
  6. Robot controlado por voz
  7. Persistencia de la visión
  8. Joystick de Arduino
  9. Controlador de tester Arduino DMX-512
  10. Monitoreo de temperatura en teléfonos inteligentes
  11. Robot para navegación interior supercogedora