Sistema de cámara robótica de Dolly (28 / 49 paso)

Paso 28: Programa los Arduinos

Añadir este código para el Arduino controlar la pantalla táctil:

Controlador de pantalla de tactil cámara plataforma #include < Wire.h > #include < Adafruit_GFX.h > / / base biblioteca de gráficos #include < Adafruit_TFTLCD.h > / / Hardware específico biblioteca #include < TouchScreen.h > #if defined(__SAM3X8E__) #undef __FlashStringHelper::F(string_literal) #define F(string_literal) string_literal #endif #ifndef USE_ADAFRUIT_SHIELD_PINOUT #error "este bosquejo está diseñado para uso con la pantalla de LCD de TFT. Asegúrese de que USE_ADAFRUIT_SHIELD_PINOUT es #defined en el archivo de biblioteca de Adafruit_TFTLCD.h."#endif / / estos son los pines para el escudo! #define YP A1 / / debe ser un pin analógico, utilice "Una" notación! #define A2 XM / / debe ser un pin analógico, utilice "Una" notación! #define 7 YM / puede ser un pin digital #define XP 6 / / puede ser un pin digital #ifdef __SAM3X8E__ #define TS_MINX 125 #define TS_MINY 170 #define TS_MAXX 880 #define TS_MAXY 940 #else #define TS_MINX 150 #define TS_MINY 120 #define TS_MAXX 920 #define TS_MAXY 940 #endif / / para una mejor precisión de la presión, tenemos que saber la resistencia / / entre X + y X - uso cualquier multímetro para leer / / la versión que estamos usando , sus 300 ohmios a través de la X de la placa con pantalla táctil ts = pantalla táctil (XP, YP, XM, YM, 300); #define LCD_CS A3 #define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 / / asignar nombres legibles a algunos valores de color de 16 bits comunes: #define negro 0 x 0000 #define azul 0x001F #define rojo 0xF800 #define verde 0x07E0 #define cian 0x07FF #define MAGENTA 0xF81F #define amarillo 0xFFE0 #define blanco 0xFFFF #define LBLUE 0x65FF Adafruit_TFTLCD tft; int oldcolor, currentcolor; bool pan = 1; int panPosition1 = 20; int panPosition2 = 20; bool inclinación = 0; int tiltPosition1 = 20; int tiltPosition2 = 20; bool unidad = 0; int drivePosition1 = 20; int drivePosition2 = 20; bool tiempo = 0; int timePosition1 = 20; int timePosition2 = 20; int startSend = 0; int x; void setup(void) {Wire.begin(); / / Únete i2c bus (opcional para el master de dirección) Serial.begin(9600); tft.reset(); uint16_t identificador = tft.readID(); if(identifier == 0x9325) {Serial.println (F ("driver encontrado ILI9325 LCD"));} otro if(identifier == 0x9328) {Serial.println (F ("driver encontrado ILI9328 LCD"));} más if(identifier == 0x7575) {Serial.println (F ("driver encontrado HX8347G LCD"));} otro {Serial.print (F ("chip controlador de LCD desconocido:")); Serial.println (identificador, hexagonal); retorno; } tft.begin(identifier); tft.setRotation(1); tft.fillScreen(BLACK); drawMenu(); tft.drawRect (0, 0, 58, 40, blanco); Set cursor inicial Estados tft.drawRect (19, 89, 272, 6, blanco); tft.fillRect (20, 90, 270, 4, amarilla); tft.drawRect (panPosition1, 71, 17, 42, blanco); tft.fillRect ((panPosition1 + 1), 72, 15, 40, MAGENTA); tft.drawRect (19, 169, 272, 6, blanco); tft.fillRect (20, 170, 270, 4, amarilla); tft.drawRect (panPosition2, 151, 17, 42, blanco); tft.fillRect ((panPosition2 + 1), 152, 15, 40, MAGENTA); currentcolor = rojo; pinMode (13, salida); } #define MINGRADO 10 #define MAXPRESSURE 1000 void loop() {digitalWrite (13, HIGH); Punto p = ts.getPoint(); digitalWrite (13, bajo); compartiendo pins, usted necesitará fijar las direcciones de la pantalla táctil pines pinMode (XM, salida); pinMode (YP, salida); tenemos cierta presión mínima que consideramos 'válidos' / / presión de 0 no significa presionar! Si (p.z > MINGRADO & & p.z < MAXPRESSURE) {/ / escala de 0 -> 1023 a tft.width p.x = mapa (p.x, TS_MINX, TS_MAXX, tft.width(), 0); py = mapa (PY, TS_MINY, TS_MAXY, tft.height(), 0); / / *** / superior menú selección código!!! / / *** si (p.x > 300) {oldcolor = currentcolor; si (PY < 58) {currentcolor = rojo; tft.drawRect (0, 0, 58, 40, blanco); pan = 1; inclinación = 0; unidad = 0; tiempo = 0; drawSliders();} else if (PY < 140) {currentcolor = LBLUE; tft.drawRect (58 0, 82, 40, BLANCO); pan = 0; inclinación = 1; unidad = 0; tiempo = 0; drawSliders(); } else if (PY < 180) {currentcolor = azul; tft.drawRect (140, 0, 96, 40, blanco); pan = 0; inclinación = 0; unidad = 1; tiempo = 0; drawSliders();} else if (PY < 240) {currentcolor = verde; tft.drawRect (0, 82, 236, 40, blanco); pan = 0; inclinación = 0; unidad = 0; tiempo = 1; drawSliders();}} //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! NECESITO ESTO EN TODO??? PUEDE LEER MENÚ??? Si (oldcolor! = currentcolor) {si (oldcolor == rojo) drawMenu(); si (oldcolor == LBLUE) drawMenu(); si (oldcolor == verde) drawMenu(); si (oldcolor == azul) drawMenu();} / / *** / / comienzo selección código!!!!!! Si (p.x < 40) {si (PY > 180) {tft.drawRect (220, 200, 96, 40, blanco); startSend = 1;}} / / *** //SLIDER código!!!!!! //Top SLIDER si (p.x > 180 & & p.x < 260) {si (PY < 350) {si (PY > = 20) {/ / o así que... para el primer negro cuadrados... reasignación de //need inferior y superior reasignación!!!!
! py = mapa (PY, 240, 0, 0, 300); tft.fillRect (10, 71, (PY - 10), negro, 50); } tft.drawRect ((p.y-1), 71, 17, 42, blanco); tft.fillRect (PY, 72, 15, 40, MAGENTA); tft.fillRect ((p.y + 16), 71, (282 - py), negro, 50); tft.drawRect ((p.y + 15), 89, (272 - py), blanco 6,); tft.fillRect ((p.y + 16), 90, (270 - py), 4, amarillo); tft.drawRect (19, 89, (PY - 19), 6, blanco); tft.fillRect (20, 90, (PY - 20), 4, amarillo); Si (pan == 1) {panPosition1 = py; / / Serial.println(panPosition1);} else if(tilt == 1) {tiltPosition1 = py;} otro if(drive == 1) {drivePosition1 = py;} más if(time == 1) {timePosition1 = py;}} } //BOTTOM SLIDER si (p.x > 80 & & p.x < 160) {si (PY < 350) {si (PY > = 20) {/ / o así que... para el primer negro cuadrados... reasignación de //need inferior y superior reasignación!!! py = mapa (PY, 240, 0, 0, 300); tft.fillRect (10, 151, (PY - 10), 50, negro);} tft.drawRect ((p.y-1), 151, 17, 42, blanco); tft.fillRect (PY, 152, 15, 40, MAGENTA); tft.fillRect ((PY + 16) 151, (282 - py), negro, 50); tft.drawRect ((p.y + 15), 169, (272 - py), blanco 6,); tft.fillRect ((p.y + 16), 170, (270 - py), 4, amarillo); tft.drawRect (19, 169, (PY - 19), 6, blanco); tft.fillRect (20, 170, (PY - 20), 4, amarillo); Si (pan == 1) {panPosition2 = py; Serial.println(panPosition2); } else if(tilt == 1) {tiltPosition2 = py;} else if(drive == 1) {drivePosition2 = py;} else if(time == 1) {timePosition2 = py;}} } / / *** //TRANSMITS a otro ARDUINO / / *** if(startSend == 1) {transmitValues(); startSend = 0; delay(2000); drawMenu(); si (pan == 1) tft.drawRect (0, 0, 58, 40, blanco); si (inclinación == 1) tft.drawRect (0, 82, 58, 40, blanco); si (unidad == 1) tft.drawRect (140, 0, 96, 40, blanco); si (tiempo == 1) tft.drawRect (0, 82, 236, 40, blanco);}} } void transmitValues() {Wire.beginTransmission(2); / / transmitir al dispositivo #2 x = panPosition1; Wire.Write("a"); envía cinco bytes Wire.write(x); Wire.endTransmission(); interrumpir la transmisión a delay(100); Wire.beginTransmission(2); transmitir al dispositivo #2 x = panPosition2; Wire.Write("b"); envía cinco bytes Wire.write(x); Wire.endTransmission(); interrumpir la transmisión a delay(100); Wire.beginTransmission(2); transmitir al dispositivo #2 x = tiltPosition1; Wire.Write("c"); Wire.Write(x); Wire.endTransmission(); interrumpir la transmisión a delay(100); Wire.beginTransmission(2); transmitir al dispositivo #2 x = tiltPosition2; Wire.Write("d"); Wire.Write(x); Wire.endTransmission(); interrumpir la transmisión a delay(100); Wire.beginTransmission(2); transmitir al dispositivo #2 x = drivePosition1; Wire.Write("e"); envía cinco bytes Wire.write(x); Wire.endTransmission(); interrumpir la transmisión a delay(100); Wire.beginTransmission(2); transmitir al dispositivo #2 x = drivePosition2; Wire.Write("f"); envía cinco bytes Wire.write(x); Wire.endTransmission(); interrumpir la transmisión a delay(100); Wire.beginTransmission(2); transmitir al dispositivo #2 x = timePosition1; Wire.Write("g"); Wire.Write(x); Wire.endTransmission(); interrumpir la transmisión a delay(100); Wire.beginTransmission(2); transmitir al dispositivo #2 x = timePosition2; Wire.Write("h"); Wire.Write(x); Wire.endTransmission(); interrumpir la transmisión a delay(100); Wire.beginTransmission(2); transmitir al dispositivo #2 x = startSend; Wire.Write("i"); Wire.Write(x); Wire.endTransmission(); parada de transmisión} void drawSliders() {si (oldcolor ! = currentcolor) {tft.fillRect (10, 60, 300, 200, negro);} if(pan == 1) {tft.drawRect (19, 89, 272, 6, blanco); tft.fillRect (20, 90, 270, 4, amarillo); tft.drawRect (panPosition1, 71, 17, 42, blanco); tft.fillRect ((panPosition1 + 1) 72, 15, 40, MAGENTA); tft.drawRect (19, 169, 272, 6, blanco); tft.fillRect (20, 170, 270, 4, amarillo); tft.drawRect (panPosition2, 151, 17, 42, blanco); tft.fillRect ((panPosition2 + 1), 152, 15, 40, MAGENTA);} else if(tilt == 1) {tft.drawRect (19 89, 272, 6, BLANCO); tft.fillRect (20, 90, 270, 4, amarilla); tft.drawRect (tiltPosition1, 71, 17, 42, blanco); tft.fillRect ((tiltPosition1 + 1), 72, 15, 40, MAGENTA); tft.drawRect (19, 169, 272, 6, blanco); tft.fillRect (20, 170, 270, 4, amarilla); tft.drawRect (tiltPosition2, 151, 17, 42, blanco); tft.fillRect ((tiltPosition2 + 1), 152, 15, 40, MAGENTA); } else if(drive == 1) {tft.drawRect (19, 89, 272, 6, blanco); tft.fillRect (20, 90, 270, 4, amarillo); tft.drawRect (drivePosition1, 71, 17, 42, blanco); tft.fillRect ((drivePosition1 + 1) 72, 15, 40, MAGENTA); tft.drawRect (19, 169, 272, 6, blanco); tft.fillRect (20, 170, 270, 4, amarillo); tft.drawRect (drivePosition2, 151, 17, 42, blanco); tft.fillRect ((drivePosition2 + 1) 152, 15, 40, MAGENTA);} más if(time == 1) {tft.drawRect (19, 89 272, 6, BLANCO); tft.fillRect (20, 90, 270, 4, amarilla); tft.drawRect (timePosition1, 71, 17, 42, blanco); tft.fillRect ((timePosition1 + 1), 72, 15, 40, MAGENTA); tft.drawRect (19, 169, 272, 6, blanco); tft.fillRect (20, 170, 270, 4, amarilla); tft.drawRect (timePosition2, 151, 17, 42, blanco); tft.fillRect ((timePosition2 + 1), 152, 15, 40, MAGENTA); }} void drawMenu() {tft.fillRect (0, 82, 236, 40, verde); tft.fillRect (140, 0, 96, 40, azul); tft.fillRect (0, 82, 58, 40, LBLUE); tft.fillRect (0, 0, 58, 40, rojo); tft.drawChar (2, 10, 'P', blanco, rojo, 3); tft.drawChar (20, 10, 'A', blanco, rojo, 3); tft.drawChar (38, 10, ' n ', blanco, rojo, 3); tft.drawChar (64, 10, ' t ', blanco, LBLUE, 3); tft.drawChar (82, 10, 'I', blanco, LBLUE, 3); tft.drawChar (100 EL 10, L, BLANCO, LBLUE, 3); tft.drawChar (118, 10, ' t ', blanco, LBLUE, 3); tft.drawChar (144, 10, sería ', blanco, azul, 3); tft.drawChar (162, 10, R, blanco, azul, 3); tft.drawChar (180, 10, 'I', blanco, azul, 3); tft.drawChar (198, 10, 'V', blanco, azul, 3); tft.drawChar (216, 10, 'E', blanco, azul, 3); tft.drawChar (242, 10, ' t ', blanco, verde, 3); tft.drawChar (260, 10, 'I', blanco, verde, 3); tft.drawChar (278, 10, am', blanco, verde, 3); tft.drawChar (296, 10, 'E', blanco, verde, 3); tft.fillRect (220, 200, 96, 40, azul); tft.drawChar (224, 210, de ', blanco, azul, 3); tft.drawChar (242, 210, ' t ', blanco, azul, 3); tft.drawChar (260, 210, 'A', blanco, azul, 3); tft.drawChar (278, 210, R, blanco, azul, 3); tft.drawChar (296, 210, ' t ', blanco, azul, 3); } < br >

Añadir este código para el Arduino que será controlar el motor:

Cámara controlador Motor plataforma #include < Servo.h > #define ENC_A 14 #define ENC_B 15 #define ENC_PORT PINC Servo panServo; Servo tiltServo; int distancia = 0; bool estadoCambiar = 0; motorPin int = 3; LED conectado al pin digital 9 flotador driveX = 0; Float tiltX = 0; panX del flotador = 0; timeX de flotador = 0; driveZ del flotador = 0; Float tiltZ = 0; panZ de flotador = 0; picZ de flotador = 0; int distanceToGo = 0; para programa int progStart = 0; para pruebas progStart //int = 1; int motorSpeed; Float totalTilt; Float totalPan; Float totalDrive; Float panIncrement; Float tiltIncrement; Float driveIncrement; Float picsPerPanIncrement = 1; Float picsPerTiltIncrement = 1; Float picsPerDriveIncrement = 1; int panSteps = 0; int tiltSteps = 0; int driveSteps = 0; dataRx Char [20]; #include < Wire.h > void setup() {Wire.begin(2); / / Únete a bus i2c con dirección 2 # Wire.onReceive(receiveEvent); / / registro de eventos Serial.begin(9600); / / start de serie para salida panServo.attach(4) tiltServo.attach(5); tiltServo.writeMicroseconds(1100); panServo.writeMicroseconds(1500); delay(10000); pinMode (8, salida); pinMode (ENC_A, entrada); digitalWrite (ENC_A alta); pinMode (ENC_B, entrada); digitalWrite (ENC_B, alto);} void loop() {if(progStart == 1) {tiltX = mapa (tiltX 0, 255, 750, 1450); tiltZ = mapa (tiltZ, 0, 255, 750, 1450); panX = mapa (panX, 0, 255, 600, 2200); panZ = mapa (panZ, 0, 255, 600, 2200); Serial.println(panX); Serial.println(panZ); if(timeX < 5) {motorSpeed = 150; driveX = (driveX, 180, 0, 0, 255); timeX = 0;} else {motorSpeed = 75; driveX = (driveX, 255, 0, 0, 360);} totalPan = (panX - panZ); totalPan = abs(totalPan); totalTilt = tiltX - tiltZ; totalTilt = abs(totalTilt); totalDrive = driveX; Serial.println(totalPan); //Figure cómo ahora avanzar antes de tomar fotos / / alternativamente, cuántas fotos para tomar antes de avanzar / / *** / / ¡!!!!!!!!!!!!!!!!!! ESTOS DEBEN SER CARROZAS DE MIERDA Y MIERDA! //! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! panIncrement = totalPan / picZ; if(totalPan < picZ) {picsPerPanIncrement = 1 / panIncrement; panIncrement = 1;} tiltIncrement = totalTilt / picZ; if(totalTilt < picZ) {picsPerTiltIncrement = 1 / tiltIncrement; tiltIncrement = 1;} driveIncrement = totalDrive / picZ; if(totalDrive < picZ) {picsPerDriveIncrement = 1 / driveIncrement; driveIncrement = 1;} / / *** //move servos en las posiciones iniciales / / *** tiltServo.writeMicroseconds(tiltX); panServo.writeMicroseconds(panX); Delay(10000); //Take algunas fotos y algunas cosas / / *** para (int takingPictures = 0; takingPictures < picZ; takingPictures ++) {si (panSteps > = picsPerPanIncrement) {if(panX > panZ) {panServo.writeMicroseconds (panX - panIncrement); panX = panX - panIncrement;} otra cosa if(panX < panZ) {panServo.writeMicroseconds (panX + panIncrement); panX panX = panIncrement;} Else {panServo.writeMicroseconds(panX);} panSteps = 0; } Si (tiltSteps > = picsPerTiltIncrement) {if(tiltX > tiltZ) {tiltServo.writeMicroseconds (tiltX - tiltIncrement); tiltX = tiltX - tiltIncrement;} otra cosa if(tiltX < tiltZ) {tiltServo.writeMicroseconds (tiltX + tiltIncrement); tiltX = tiltX + tiltIncrement;} Else {tiltServo.writeMicroseconds(tiltX);} tiltSteps = 0; } Si (driveSteps > = picsPerDriveIncrement) {analogWrite (motorPin, motorSpeed) while(distance < distanceToGo) {callEncoder();} analogWrite (motorPin, 0); driveSteps = 0;} distanceToGo = distanceToGo + driveIncrement; Delay(timeX * 500); Serial.println ("SHOOT!!
!"); tomar foto digitalWrite (8, HIGH); Conecte la cámara disparador delay(500); Espere un segundo digitalWrite (8, bajo); Desconecte la cámara disparador delay(500); panSteps = panSteps + 1; tiltSteps = tiltSteps + 1; driveSteps = driveSteps + 1; progStart = 0; }}} / / función que se ejecuta siempre que se soliciten por el maestro / / esta función se registra como un evento, ver receiveEvent void setup() (soporte de int) {int index = 0; mientras que (1 < Wire.available()) / / recorrer todos pero el último {char c = Wire.read(); / / recibir el byte como un carácter / / Serial.print(c); / / imprimir el carácter dataRx [índice ++] = c; dataRx [índice] = '\0';} int x = Wire.read(); / / recibir el byte como un número entero / / Serial.println(x); / / imprimir el entero si (* dataRx == 'a') {panX = x; Serial.Print ("OMG análisis PANX:"); Serial.println(panX); } else if (* dataRx == 'b') {panZ = x; Serial.Print ("OMG análisis PANZ:"); Serial.println(panZ); } else if (* dataRx == 'c') {tiltX = x; Serial.Print ("OMG TILTX de análisis:"); Serial.println(tiltX); } else if (* dataRx == había ') {tiltZ = x; Serial.Print ("OMG TILTZ de análisis:"); Serial.println(tiltZ); } else if (* dataRx == 'e') {driveX = x; Serial.Print ("OMG análisis DRIVEX:"); Serial.println(driveX); } else if (* dataRx == 'f') {driveZ = x; Serial.Print ("OMG análisis DRIVEZ:"); Serial.println(driveZ); } else if (* dataRx == 'g') {timeX = x; Serial.Print ("OMG análisis TIMEX:"); Serial.println(timeX); } else if (* dataRx == 'h') {picZ = x; Serial.Print ("OMG PICZ de análisis:"); Serial.println(picZ); } else if (* dataRx == 'i') {progStart = x; Serial.Print ("OMG análisis inicial:"); Serial.println(progStart); }} / * Devuelve cambio en estado del encoder (-1,0,1) * / int8_t read_encoder() {int8_t estática enc_states [] = {0, 1,1,0,1,0,0, -1, 1,0,0,1,0,1,-1,0}; estático uint8_t old_AB = 0; / ** / old_AB << = 2; //remember estado previa old_AB | = (ENC_PORT & 0 x 03); //add estado actual retorno (enc_states [(old_AB & 0x0f)]);} void callEncoder() {/ / analogWrite (motorPin, 0); / / delay(1000); / / / / //30Dst a 150Sp / / //60Dst a 75PS / / //60Dst a 50Sp / / / / mientras (distancia < 240) {/ / analogWrite (motorPin 75); } uint8_t estática contador = 0; Esta variable será cambiada por codificador int8_t entrada tmpdata; / ** / tmpdata = read_encoder(); Si (tmpdata) {/ / Serial.print ("contador valor:"); Serial.println (contador, DEC); contador += tmpdata; if(Counter == 255) {estadoCambiar = 1;} if(counter == 0) {if(stateChange == 1) {estadoCambiar = 0; distancia += 1; Serial.Print ("incrementos:"); Serial.println (distancia, DEC); }}}} < br >

Artículos Relacionados

Guía completa de Motor para la robótica

Guía completa de Motor para la robótica

Robot es un dispositivo electromecánico que es capaz de reaccionar de alguna manera a su entorno y toma decisiones autónomas o acciones para lograr una tarea específica.Entre desarrolla dispositivos mecánicos provocados por el hombre que puede mover
Barato, fácil de robótica para el programador no

Barato, fácil de robótica para el programador no

Hey robótica-programador-quiere a abejas! ¿Cansado de tratar de hacen varios ambientes sólo para encontrar que hay una curva de aprendizaje entre usted y esos robot fresco trucos a tus amigos geek? ¿Los kits comerciales son demasiado caros? Entonces
Aerobox - un sistema de Control robótica suave

Aerobox - un sistema de Control robótica suave

Suave robótica es un nuevo campo de la robótica que ha sido realmente calentando últimamente. Muchos robots suaves son accionados neumáticamente, significa que se mueven cuando están llenos de aire. Para rellenar estos robots con aire, muchos proyect
FPGA robótica visión para nadie

FPGA robótica visión para nadie

¿Como yo había interesado en tecnología y siempre quería usar una de esas fichas pesadas llamadas de FPGA? ¿Está usted interesado en visión y robótica?Mi objetivo era traer FPGA visión a las personas, accesibles a todos. Decidí construir mi propio si
Introducción a la robótica

Introducción a la robótica

Robots están moviendo rápidamente de personajes y conceptos que sólo se encuentra en la ciencia ficción a parte de nuestra vida cotidiana. Aunque a veces puede parecer ser misterios de electromecánica, robótica personal es cada vez más accesible cada
BristleSwarm: Exploraciones en robótica del enjambre

BristleSwarm: Exploraciones en robótica del enjambre

Una creciente rama de la investigación de la robótica es el estudio de organización enjambre, comportamiento emergente e inteligencia artificial mediante el uso de agentes robóticos autónomos. En este Instructable, voy a guiarte a través de un proyec
Impreso en 3D Biologically-Inspired robótica

Impreso en 3D Biologically-Inspired robótica

yo he estado pasando los últimos pocos meses haciendo investigación en estructuras robóticas inspiradas biológicamente. Mientras que mi enfoque puede parecer formal en la naturaleza, estos dispositivos eran simplemente un medio para llevar a cabo, en
Plataforma robótica Arduino simple!

Plataforma robótica Arduino simple!

Acabo de recibir un Arduino después de jugar un rato con algunos Microcontroladores AVR durante reuniones del equipo de robótica.  Me gustó la idea de un chip programable realmente barato que podría ejecutar cualquier cosa desde una interfaz de compu
Sir Kitt, presentadora de televisión robótica

Sir Kitt, presentadora de televisión robótica

Generación completa detalles en www.ukrobotgroup.comBien, ¿por dónde comienzo?Alrededor de noviembre de 2008 una compañía de producción de la TV vino en busca de un entusiasta que podría construir un robot para interactuar con los huéspedes detrás de
Conectar las ruedas robóticas a su viejo ordenador portátil

Conectar las ruedas robóticas a su viejo ordenador portátil

¿tienes un portátil antiguo a poner alrededor, mientras utiliza su brillante uno nuevo para jugar WoW y navegar por la interweb? ¿Has pensado "Me gustaría algunas ruedas del perno en esa viejo portátil y llevarlo alrededor"? Tal vez solo desea u
Prototipos de robótica Mecano

Prototipos de robótica Mecano

tengo un montón de meccano. Lo amé como un niño, usó un par de veces en adolescentes tempranos, y ahora, con un poco de ingenio y unas cuantas piezas de encargo, estoy disfrutando lo como herramienta para la creación de prototipos de robótica.¿Qué es
Mano robótica modular y brazo (con rango extendido de movimiento) (impresión 3D)

Mano robótica modular y brazo (con rango extendido de movimiento) (impresión 3D)

Hola a todos! Este es mi prótesis de mano y el brazo de prototipo he estado diseñando desde hace varios meses. Es todavía un poco de un trabajo en progreso, y ya que estoy terminando con clases en la Universidad para el semestre aún no he tenido tiem
CupBots - 3D plataforma robótica impresa para Arduino y frambuesa Pi

CupBots - 3D plataforma robótica impresa para Arduino y frambuesa Pi

Aquí es un proyecto de robótica de gran fin de semana para emprender con amigos o gente en su espacio local del fabricante. Usted necesitará una impresora 3D práctico 3D impresión los archivos STL adjuntan como parte de los pasos a continuación y una
Adaptador de 90 grados para VexPro VersaPlanetary caja de engranajes para la robótica primera

Adaptador de 90 grados para VexPro VersaPlanetary caja de engranajes para la robótica primera

El equipo de robótica de las abejas asesinas desarrolló esta solución en el 2015 y ahora nos gustaría compartir con todos de la primera comunidad de robótica.El sistema de caja de engranajes de VersaPlanetary VexPro es uno de los componentes más flex