#include <Servo.h> // to activate debug outputs, uncomment the following line: //#define DEBUG Servo servoLeft; Servo servoRight; Servo servoUp; const float pi = 3.14159; float RadianToDegree = 180/pi; float DegreeToRadian = pi/180; // the length of the arm segment (dimensions are scaled so that arm segment length is equal to 1.) const float a = 1.; // the offset between the two servomotor axes: const float d = 5.7/14.7; // to convert incoming bytes to float values: const float ByteToFloat = 1.0/255.0; // security margins to avoid exiting the safe drawing zone: // note that the drawing area has the same x/y ratio here than in the processing sketch const float thetaMax = acos(d/2. - 1.); const float YMin = sin(thetaMax) + d; const float XAmplitude = 2.2; const float YAmplitude = 1.1; const float XMin = -0.5*(XAmplitude-d); const float XMax = d-XMin; const float YMax = YMin+YAmplitude; // pen position (dimensions are scaled so that arm segment length is equal to 1.) float x=0.; float y=1.2; // for serial port communication: int MyDelay=10; int incomingByteX = 0; int incomingByteY = 0; int incomingByteU = 0; // initialize servomotor positions and serial port void setup() { Serial.begin(9600); servoLeft.attach(9); servoRight.attach(10); servoUp.attach(6); servoLeft.writeMicroseconds(1940); servoRight.writeMicroseconds(1095); servoUp.writeMicroseconds(1100); } // the following method reads the serial inputs, // converts incoming data to pen positions // converts pen positions to servomotor angles // sends angle values to servomotors void loop() { // wait for 3 bytes if(Serial.available() >= 3) ; { incomingByteX = Serial.read(); incomingByteY = Serial.read(); incomingByteU = Serial.read(); // check that incoming data respects the convetions we set in the processing sketch // this avoids misinterpreting data that comes unordered if((incomingByteU==100 || incomingByteU==200) && incomingByteX>=0 && incomingByteX<=127 && incomingByteY>=127 && incomingByteY<=255) { #ifdef DEBUG Serial.print("SERIAL X : ");Serial.print(incomingByteX); Serial.print(" || SERIAL Y : ");Serial.print(incomingByteY); Serial.print(" || SERIAL U : ");Serial.print(incomingByteU);Serial.println(); #endif x = incomingByteX*ByteToFloat*2*(XMax-XMin) + XMin; y = (incomingByteY*ByteToFloat - .5)*2*(YMax-YMin) + YMin; // convert (x,y) values to servomotor angles float ThetaLeft = GetThetaLeft(x,y); float ThetaRight = GetThetaRight(x,y); // send the positions to the servomotors SetServoLeftToTheta(ThetaLeft); SetServoRightToTheta(ThetaRight); ServoUp(incomingByteU==100); } } delay(MyDelay); } // the following methods convert (x,y) positions to servomotor angles float GetThetaLeft(float x, float y){ float R = hypot (x,y); float Theta = atan2(y,x); float Phi = acos(R/2.); float Out = RadianToDegree*(Theta + Phi); return Out; } float GetThetaRight(float x, float y){ x = (x-d); float R = hypot (x,y); float Theta = atan2(y,x); float Phi = acos(R/2.); float Out = RadianToDegree*(Theta - Phi); return Out; } // the following methods set angular positions on the two arm servomotors float SetServoLeftToTheta(float ThetaLeft){ // calibration for left servo Hitech-5645MG // theta | uS //--------------------------- // 2200 // 90 1940 // 180 1020 // 750 float mS = 1940. + (ThetaLeft-90.)*(1020.-1940.)/90.; servoLeft.writeMicroseconds(round(mS)); } float SetServoRightToTheta(float ThetaRight){ // calibration for left servo Hitech-5645MG // theta | uS //--------------------------- // 2200 // 0 1995 // 90 1095 // 750 float mS = 1995. + (ThetaRight)*(1095.-1995.)/90.; servoRight.writeMicroseconds(round(mS)); } // the following method brings the lifting servo to pen-up or pen-down position void ServoUp(boolean PenUp){ if(PenUp){ servoUp.writeMicroseconds(1000); } else { servoUp.writeMicroseconds(1200); } }
Construir un robot que sigue el cursor del mouse (6 / 35 paso)
Artículos Relacionados
Crear un Robot que sigue la mano
En este tutorial, usted aprenderá cómo crear este pequeño "robot" que sigue a la mano (o lo que es más cercano a él).No te olvides de seguir me para más y favorito este si te gusta!Paso 1: materialesPara este proyecto, necesita los siguientes ma
Cómo construir un Robot que tira 5 libras
Agnes Koroma, Areej Ali, Safiyya QadirPaso 1: Traslado de Control Mover el control y colóquela plana en el robot.Paso 2: batería Cinta de la batería en la parte superior del control.Paso 3: las ruedas usar la rueda de 100mm para añadir a cada ladoPas
Construir STEMbot1 - un Robot que hace de programación fácil y divertido
El moderno smartphone o tableta (dispositivo móvil) tiene más potencia informática de equipos de escritorio tenían apenas 10 años atrás. Los dispositivos móviles modernos están llenos de sensores incluyendo: GPS, compás, 3 ejes acelerómetros, girosco
Así que quieres construir un robot gigante. ¿
Dices que quieres construir un robot gigante? ¿Cuál es su propósito? ¿Dominación del mundo? ¿Tu novia no tendrá esa cerveza para usted? Sea lo que sea, aquí es cómo empezar a construir usted mismo un robot.El propósito de este robot era para un apoyo
Cómo construir un robot BEAM
un symet es un robot BEAM que almacena electricidad de una célula solar hasta que tenga suficiente energía para hacer la contracción motor. En este instructable le mostraré cómo crear tu propio symet viga! Si quieres ver videos y leer más sobre ella
Un robot que he construido para 2009 mundo Robot Olimpiada abierta robot artista de categoría (campeón)
por favor mira el video de ella (hecho en el nivel nacional)video del robot en acción aquí http://www.youtube.com/watch?v=ZZwF1Y9GgYoLo sentimos, no tiene muchas fotos del robot más de los productosEcha un vistazo en el robot que construyó en 2008 qu
Dell mouse mod
que sea más ligero y silenciosomateriales necesarios:ratón 1 dell1 destornilladorseeso es todoEste es mi primer instructible así que por favor ir fácil en mí y sí estas fotos son malas pero eso es porque he usado mi maquinilla de afeitar.Paso 1: abre
LINUS: La línea que sigue el robot
Este es mi intento de una línea que sigue el robot. Básicamente lo actualicé cuando fui así que sólo voy a dar y Resumen de la estructura y le permiten usar su pensamiento. Había usado Lego como la base y entonces mi sensor de matriz. El primer senso
Cómo hacer una línea que sigue el Robot
Hola Instructables,Esta mi primera vez haciendo un robot. En este instructable les mostraré cómo hacer una línea que sigue el robot. Nota que esto un instructable para principiantes que quiere hacer un robot para la diversión de aprenderla. No será b
Línea que sigue el Robot controlado por Arduino
Se trata de una línea que sigue el robot que he hecho utilizando un Arduino (DFRduino), Ardumoto escudo, 6 baterías de x AA, 4 LEDs de color ámbar x, 3 x LDRs y algunos negro cinta aislante pegada a mi piso de la cocina (sucio).
Construir tu Robot de Streaming de Video en Internet controlado con Arduino y frambuesa Pi
< el instructivo y el código están listos. ¡ Disfrute! Dejo un comentario Comentarios! >Yo soy (aka LiquidCrystalDisplay / Italia), un estudiante de 14 años de aprendizaje de Israel en el Max Shein secundaria para matemáticas y ciencia avanzada. Est
Construir un Robot muy pequeño: hacer el mundo más pequeño de ruedas Robot con una pinza.
Construir un robot de 1/20 pulgada cúbica con una pinza que puede recoger y mover pequeños objetos. Es controlado por un microcontrolador Picaxe. En este momento, creo que esto puede ser más pequeño robot con ruedas del mundo con una pinza. Cambiará
Hexabot: Construir un robot de seis patas resistente!
Este Instructable va a mostrar cómo crear Hexabot, una plataforma de gran robot de seis patas que es capaz de transportar un pasajero humano! El robot también puede hacer completamente autónomo con la adición de unos sensores y un poco de reprogramac
Robot que se separa de la semilla
el verano pasado fue traído a mi atención que se podía comprar casi todo lo necesario para automatizar cuidado césped pero una semilla propagación robot. Esto me intrigó. Para empezar, ¿por qué en la tierra nadie haría robots de cuidado de césped en