#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); } }
Het bouwen van een robot die uw muiscursor volgt (6 / 35 stap)
Gerelateerde Artikelen
Het bouwen van een Robot
droomt u van het leven gemakkelijker te maken? Met robots te helpen leven? Ook u kunt het bouwen van een robot vandaag. Hoewel het misschien niet de dienaren van de robot het kan u helpen in eenvoudige takenHeb ik besloten om een robot uit de Lego Mi
Het bouwen van een Robot met behulp van MSP430 Launchpad
In dit Instructable gaan we aan het bouwen van een kleine robot met behulp van MSP430 Launchpad van TI. De robot zal gebruik maken van twee gericht gelijkstroommotoren en differentiële aandrijfsysteem zal tewerkstellen.De intelligentie is voorzien va
Hoe 3D printen in huizen en kantoren om veiliger te maken, door het bouwen van een behuizing die Filters gassen en zwevende deeltjes
Mijn doel met dit project was om het maken van 3D printen in kleine huizen en kantoren gelegen in een stedelijke omgeving met geen speciale workshop veiliger, omdat 3D printen gaat om mogelijke gezondheidsrisico's. Dit zal dus een instructie over het
Hoe het bouwen van een schakeling die worden omgezet in wisselstroom van een fiets dynamo de USB-standaard
wat: ik zal u tonen hoe te bouwen van een schakeling die worden omgezet in wisselstroom van een fiets dynamo de USB-standaard voor charing USB-apparaten.Wat niet wordt behandeld: Koppelen en het gebruik van een fiets dynamo, gedetailleerde de fijne d
Hoe het bouwen van een Robot - The BeetleBot v2 (Revisited)
dit is de kever robot instructables revisited a la MythBusters stijl!Oorspronkelijk maakte ik een instructables over mijn kever robot versie 1.Het is nu tijd om u te tonen een nieuwe versie van deze prachtige robot. Deze nieuwe versie is veel gemakke
Laten we het bouwen van een Robot!
ik heb het opbouwen van dit soort dingen omdat ik ongeveer 10 of zo jaar oud was... en I love it!Het is verbazingwekkend hoe fabrication technieken hebben verbeterd in de afgelopen jaren. Goedkope hardware, 3D-printers en awesome boutique elektronica
Hoe het bouwen van een robot MiniBiped
ik schreef onlangs een afbeelding instructable over mijn wiebelende MiniBiped robot, maar ik dacht dat misschien iemand zullen geïnteresseerd zijn in het opbouwen van een. Dus besloten heb ik om te schrijven stap voor stap instructies.Wiebelig is een
Hoe het bouwen van een Robotic Hand met haptische Feedback
voor wetenschap fair dit jaar, ik voelde me zoals het bouwen van iets in plaats van het doen van een experiment. Alles wat ik moest doen was Instructables rondkijken voor een idee van het project. Ik was geïnspireerd door njkl44 van robotic hand aang
Hoe het bouwen van een Robot gewicht trekken
In dit instructable zal tonen we u de materialen en de stappen om u te bouwen en draaien een gewicht trekken robot. Dit was alles voor een Engineering klassenproject hadden we te vullen aan het einde van het schooljaar om te zien wie de beste verhoud
Hoe het bouwen van een klok die de tijd op de muur projecten
dit Instructable toont u hoe te bouwen van een projector klok. Dit apparaat kunt u projecttijd op de muur. Op basis van een kleine LCD alarmklok (niet te klein, in plaats daarvan, zult u kunnen aan het project en te werken aan het), dit is een goede
Maken van een Robot die uw Hand volgt
In deze tutorial leert u hoe maak je deze kleine "robot", die uw hand volgt (of wat is het dichtst bij het).Vergeet niet te volgen mij voor meer informatie, en favoriet deze instelling als u bevalt!Stap 1: materialenVoor dit project moet u de vo
Hoe het bouwen van een robot BEAM
een symet is een BEAM robot die elektriciteit uit een zonnecel opgeslagen totdat er genoeg energie om de motor kramp. In dit instructable ik zal u tonen hoe te bouwen uw eigen bundel symet! Als u wilt bekijken video's en lees meer over het dan kunt u
3 basisprincipes van het bouwen van een Robot
Stap 1: De Input u een inbreng hebben een sensor te hebben als een input nodig. Uw sensor zou een schakelaar, ultrasone sensor, potmeter, etc.Stap 2: De Processor Dit is het brein van de operatie. U kunt een arduino of een andere eenvoudige schakelin
FREEDMAN v2: het bouwen van een Robot met beeld stream functie
Dit is gelijkaardig een humanoïde robot. het 6-assige en beeld stream functie hebben.Stap 1: Voorbereiden materialenMaterialen:1. WIZwiki-W7500-De belangrijkste Raad van bestuur2. WizFi250-Wifi module3. image sensor(LS-DSC02)-Image sensing4. Actuator