Brazo robótico que se mueve de forma automática cada x segundos (programable) y también permite accionarlo de forma manual para calibrar su posición.

Video

https://www.youtube.com/watch?v=fBL2MIFbImQ

Fotos

56f2f6c3bc2fb.jpg
56f2f6c5d48d2.jpg
56f2f6c6c15e5.jpg

Temporizador

56f2f6fb5b0f5.jpg

Dispositivo con el temporizador apagado (muestra un “0”) en este modo sólo podrá mover el brazo de forma manual (pulsando botón derecho)

56f2f733c789d.jpg

56f2f7352b2bd.jpg

Temporizador activado (pulsando botón Izquierdo). Se puede incrementar el tiempo de 10 en 10 segundos hasta 60, y si bajamos de 10s tendremos un rango de 1 a 10 segundos. (accionándolo con los botones arriba y abajo)

56f2f76db63e3.jpg

Botones de accionamiento y programación

Código fuente Arduino

#include <Makeblock.h>
#include <Arduino.>
#include <SoftwareSerial.h>
#include <Wire.h>

#include <Servo.h>    

MePort  port(PORT_6);           // Adaptador RJ25
Me4Button btn(PORT_7);          // Botones
Me7SegmentDisplay disp(PORT_3); // Display de 7 segmentos

Servo myservo1;
int servo1pin =  port.pin1();   // Servo en slot1 del adaptador

int speed = 10.5;  //- tiempo entre accionamientos
int onoff= 0;               



unsigned long tiempo = 0;

void setup()
{
    myservo1.attach(servo1pin);
    myservo1.write(15);
    Serial.begin(9600);

   //- inicializar display 
   disp.init();
   disp.set(BRIGHT_TYPICAL);
   disp.display(0, 0);  //- temporizador apagado inicialmente


}

void loop()
{

  switch(btn.pressed()) // check del botón presionado
  {
  case KEY1:
    Serial.println("Velocidad -");

   //- disminuir tiempo entre movimientos
    if(speed<=10)   speed--;
    if(speed>10)   speed-=10;
    if(speed<=0) speed = 1;

    mostar_tiempo();


    break;
  case KEY2:

  //- apagado / encendido
    Serial.println("On/Off");
    onoff=!onoff;

    if(onoff){
       disp.display(0x00,0x7f);
    }else{
      disp.clearDisplay();
      disp.display(0, 0);
    }

    mostar_tiempo();



    break;
  case KEY3:

  //- incremento de la velocidad o tiempo entre accionamientos
    Serial.println("Velocidad +");
    if(speed>=10)   speed+=10;
    if(speed<10)   speed+=1;

    if(speed>60)speed=60;

    mostar_tiempo();

    break;
  case KEY4:

  //- modo manual
    Serial.println("Test1");
    bajar_brazo();
    break;
  }
  delay(10);

  //- Si esté en ON ejectutar temporizador programado
  if(onoff){
    if(tiempo==0) tiempo = millis();

    if( millis()-tiempo >= speed*1000){

      Serial.println("Tiempo: ");
      Serial.println(tiempo);
      Serial.println(millis());
      Serial.println( millis()-tiempo );
      bajar_brazo();
      tiempo=millis();
    }

  }


}


void bajar_brazo(){

   Serial.println("Brazo");

  myservo1.write(0);  //- Bajo brazo
    delay(250);
  myservo1.write(15); //- Subo brazo

}

void mostar_tiempo(){

   if(!onoff) return;

   if(speed>=10){

     disp.display(2, speed/10);
     disp.display(3, 0);
    }else{

       disp.display(0x02,0x7f);
       disp.display(3, speed);


   }

}
Brazo robótico que se mueve de forma automática cada x segundos (programable) y también permite accionarlo de forma manual para calibrar su posición. Video ------------------ https://www.youtube.com/watch?v=fBL2MIFbImQ Fotos ------------------ ![56f2f6c3bc2fb.jpg](serve/attachment&path=56f2f6c3bc2fb.jpg) ![56f2f6c5d48d2.jpg](serve/attachment&path=56f2f6c5d48d2.jpg) ![56f2f6c6c15e5.jpg](serve/attachment&path=56f2f6c6c15e5.jpg) ### Temporizador ![56f2f6fb5b0f5.jpg](serve/attachment&path=56f2f6fb5b0f5.jpg) Dispositivo con el temporizador apagado (muestra un “0”) en este modo sólo podrá mover el brazo de forma manual (pulsando botón derecho) ![56f2f733c789d.jpg](serve/attachment&path=56f2f733c789d.jpg) ![56f2f7352b2bd.jpg](serve/attachment&path=56f2f7352b2bd.jpg) Temporizador activado (pulsando botón Izquierdo). Se puede incrementar el tiempo de 10 en 10 segundos hasta 60, y si bajamos de 10s tendremos un rango de 1 a 10 segundos. (accionándolo con los botones arriba y abajo) ![56f2f76db63e3.jpg](serve/attachment&path=56f2f76db63e3.jpg) Botones de accionamiento y programación Código fuente Arduino ------------------ ```` #include <Makeblock.h> #include <Arduino.> #include <SoftwareSerial.h> #include <Wire.h> #include <Servo.h> MePort port(PORT_6); // Adaptador RJ25 Me4Button btn(PORT_7); // Botones Me7SegmentDisplay disp(PORT_3); // Display de 7 segmentos Servo myservo1; int servo1pin = port.pin1(); // Servo en slot1 del adaptador int speed = 10.5; //- tiempo entre accionamientos int onoff= 0; unsigned long tiempo = 0; void setup() { myservo1.attach(servo1pin); myservo1.write(15); Serial.begin(9600); //- inicializar display disp.init(); disp.set(BRIGHT_TYPICAL); disp.display(0, 0); //- temporizador apagado inicialmente } void loop() { switch(btn.pressed()) // check del botón presionado { case KEY1: Serial.println("Velocidad -"); //- disminuir tiempo entre movimientos if(speed<=10) speed--; if(speed>10) speed-=10; if(speed<=0) speed = 1; mostar_tiempo(); break; case KEY2: //- apagado / encendido Serial.println("On/Off"); onoff=!onoff; if(onoff){ disp.display(0x00,0x7f); }else{ disp.clearDisplay(); disp.display(0, 0); } mostar_tiempo(); break; case KEY3: //- incremento de la velocidad o tiempo entre accionamientos Serial.println("Velocidad +"); if(speed>=10) speed+=10; if(speed<10) speed+=1; if(speed>60)speed=60; mostar_tiempo(); break; case KEY4: //- modo manual Serial.println("Test1"); bajar_brazo(); break; } delay(10); //- Si esté en ON ejectutar temporizador programado if(onoff){ if(tiempo==0) tiempo = millis(); if( millis()-tiempo >= speed*1000){ Serial.println("Tiempo: "); Serial.println(tiempo); Serial.println(millis()); Serial.println( millis()-tiempo ); bajar_brazo(); tiempo=millis(); } } } void bajar_brazo(){ Serial.println("Brazo"); myservo1.write(0); //- Bajo brazo delay(250); myservo1.write(15); //- Subo brazo } void mostar_tiempo(){ if(!onoff) return; if(speed>=10){ disp.display(2, speed/10); disp.display(3, 0); }else{ disp.display(0x02,0x7f); disp.display(3, speed); } } ````
editado 25 Mar '16 a las 9:55 am

Curiosa idea, y tambien muy buena publicar el codigo, siempre se aprende de la buena programacion.

Curiosa idea, y tambien muy buena publicar el codigo, siempre se aprende de la buena programacion.
452
vistas
1
respuestas
2
seguidores
vista previa (en vivo)
introduzca al menos un 10 caracteres
Advertencia: Mencionaste a %MENTIONS%, pero ellos no pueden ver el mensaje y no serán notificados
Guardando...
Guardado
Todos los posteos de este tema serán borrados ?
Borrador pendiente ... Click para continuar editando
Descartar borrador