Pneumatic Pick and Place.
Brazo giratorio utilizado en anteriores montajes pero con una ventosa en su punta. Coge fichas de damas colocadas al azar en una columna y las va amontonando en 2 columnas según color.

59367d5f0a6ec.jpg

Dispone de 2 motores PAP, una bomba de aire, una válvula solenoide y de un sensor de luz al que se ha añadido un led. Una tarjeta de leds nos indica el estado de la bomba y válvula.

Video en acción

Para quien pueda interesar aquí está el código

#include "MeOrion.h"
#include <SoftwareSerial.h>
#include <AccelStepper.h> 
#include <Arduino.h>
#include <SoftwareSerial.h>
#include <Wire.h>

AccelStepper eje(AccelStepper::DRIVER, 10, 11); // 10-PUL,11-DIR 
// corresponde al PORT_1, eje
AccelStepper brazo(AccelStepper::DRIVER, 9, 3); // 9-PUL,3-DIR 
// corresponde al PORT_2, brazo
MeLightSensor sensor_luz(PORT_7);  
MeDCMotor bomba(M1);
MeDCMotor valvula(M2); 
MeRGBLed led(PORT_8);

int h_carga= 0, h_sup= -2700; // con 6 fichas
int h_sensor= -1250;
int h_descarga_b =1100, h_descarga_n =1100; 
int ang_sensor= -5100, ang_carga=0;
int ang_1= -1700, ang_2=-3400;
int tpo=600;
int fichas = 6;
int piso = 300;
int reflejo;      //variable para el sensor de luz
int umbral =800;  // para distinguir reflejo
int fuerza =150; // fuerza succion
bool flag;
int no; // numero de ficha

//==================================
void setup() {
Serial.begin(9600);
eje.enableOutputs(); 
eje.setMaxSpeed(10000);  
eje.setAcceleration(10000);
eje.setCurrentPosition(0); 
brazo.enableOutputs(); 
brazo.setMaxSpeed(10000);  
brazo.setAcceleration(10000);
brazo.setCurrentPosition(1); 
led.setColorAt(0, 0,0,0);
led.setColorAt(2, 0,0,0);
led.setColorAt(1, 0,0,0);
led.setColorAt(3, 0,0,0);
led.show();
}
//==================================
void loop() { 
Serial.println("Empezamos");
//aviso();
for (no=1;no<=fichas;no++){
    mover_brazo(h_carga+(piso*no)); 
    succion(1);
    mover_brazo(h_sup);  //
    girar_eje(ang_sensor);
    mover_brazo(h_sensor);
    delay(tpo);
    checkColor();
    mover_brazo(h_sup);
    if (reflejo > umbral){deja_blanca();}
    else {deja_negra();} 
    mover_brazo(h_sup);
    girar_eje(ang_carga);
 }
while(1){};
}
//=================================
void deja_blanca(){
  Serial.println("    Blanca");
  girar_eje(ang_1);
  mover_brazo(h_descarga_b);
  succion(0);
  delay(tpo);
  h_descarga_b = h_descarga_b-piso;
}
void deja_negra(){
  Serial.println("    Negra");
  girar_eje(ang_2);
  mover_brazo(h_descarga_n);
  succion(0);
  delay(tpo);
  h_descarga_n = h_descarga_n-piso;
}
void succion(bool flag){
  delay(100); 
  if(flag){     // succiona
    valvula.stop();
    led.setColorAt(1, 0,100,0);// valvula abierta
    bomba.run(fuerza);
    led.setColorAt(3, 100,0,0);// bomba activa
    led.show();
    delay(tpo);   
  }else{            // no succiona
    valvula.run(255);
    led.setColorAt(1, 100,0,0);// valvula cerrada
    bomba.stop();
    led.setColorAt(3, 0,100,0);// bomba en paro
    led.show();   
    delay(tpo);
    valvula.stop();
    led.setColorAt(1, 0,100,0);// valvula abiera
    led.show();
  }
}
void girar_eje(int angulo){
 eje.moveTo(angulo);  // 
    while (eje.currentPosition() != angulo)  
        {eje.run();} 
    delay(tpo);  
}
void mover_brazo(int posicion){
 brazo.moveTo(posicion);  //
 while (brazo.currentPosition() != posicion)   // se posiciona para cargar
    {brazo.run();} 
 delay(tpo);
}
int checkColor(){   //medir reflejo
  reflejo = sensor_luz.read();
  Serial.print("Ficha  " );
  Serial.print(no); 
  Serial.print("   Reflejo = " );                                            
  Serial.print(reflejo); 
  return reflejo;
}
void aviso(){   // aviso sonoro
for(int i = 0; i < 4; i++){ 
      buzzerOn();
      delay(10);
      buzzerOff();
      delay(10);
  }
}

Inspirado en uno de Kreativadelar.se

_**Pneumatic Pick and Place.**_ Brazo giratorio utilizado en anteriores montajes pero con una ventosa en su punta. Coge fichas de damas colocadas al azar en una columna y las va amontonando en 2 columnas según color. ![59367d5f0a6ec.jpg](serve/attachment&path=59367d5f0a6ec.jpg) Dispone de 2 motores PAP, una bomba de aire, una válvula solenoide y de un sensor de luz al que se ha añadido un led. Una tarjeta de leds nos indica el estado de la bomba y válvula. [Video en acción](https://vimeo.com/218121962 "Vimeo") -- Para quien pueda interesar aquí está el código ```` #include "MeOrion.h" #include <SoftwareSerial.h> #include <AccelStepper.h> #include <Arduino.h> #include <SoftwareSerial.h> #include <Wire.h> AccelStepper eje(AccelStepper::DRIVER, 10, 11); // 10-PUL,11-DIR // corresponde al PORT_1, eje AccelStepper brazo(AccelStepper::DRIVER, 9, 3); // 9-PUL,3-DIR // corresponde al PORT_2, brazo MeLightSensor sensor_luz(PORT_7); MeDCMotor bomba(M1); MeDCMotor valvula(M2); MeRGBLed led(PORT_8); int h_carga= 0, h_sup= -2700; // con 6 fichas int h_sensor= -1250; int h_descarga_b =1100, h_descarga_n =1100; int ang_sensor= -5100, ang_carga=0; int ang_1= -1700, ang_2=-3400; int tpo=600; int fichas = 6; int piso = 300; int reflejo; //variable para el sensor de luz int umbral =800; // para distinguir reflejo int fuerza =150; // fuerza succion bool flag; int no; // numero de ficha //================================== void setup() { Serial.begin(9600); eje.enableOutputs(); eje.setMaxSpeed(10000); eje.setAcceleration(10000); eje.setCurrentPosition(0); brazo.enableOutputs(); brazo.setMaxSpeed(10000); brazo.setAcceleration(10000); brazo.setCurrentPosition(1); led.setColorAt(0, 0,0,0); led.setColorAt(2, 0,0,0); led.setColorAt(1, 0,0,0); led.setColorAt(3, 0,0,0); led.show(); } //================================== void loop() { Serial.println("Empezamos"); //aviso(); for (no=1;no<=fichas;no++){ mover_brazo(h_carga+(piso*no)); succion(1); mover_brazo(h_sup); // girar_eje(ang_sensor); mover_brazo(h_sensor); delay(tpo); checkColor(); mover_brazo(h_sup); if (reflejo > umbral){deja_blanca();} else {deja_negra();} mover_brazo(h_sup); girar_eje(ang_carga); } while(1){}; } //================================= void deja_blanca(){ Serial.println(" Blanca"); girar_eje(ang_1); mover_brazo(h_descarga_b); succion(0); delay(tpo); h_descarga_b = h_descarga_b-piso; } void deja_negra(){ Serial.println(" Negra"); girar_eje(ang_2); mover_brazo(h_descarga_n); succion(0); delay(tpo); h_descarga_n = h_descarga_n-piso; } void succion(bool flag){ delay(100); if(flag){ // succiona valvula.stop(); led.setColorAt(1, 0,100,0);// valvula abierta bomba.run(fuerza); led.setColorAt(3, 100,0,0);// bomba activa led.show(); delay(tpo); }else{ // no succiona valvula.run(255); led.setColorAt(1, 100,0,0);// valvula cerrada bomba.stop(); led.setColorAt(3, 0,100,0);// bomba en paro led.show(); delay(tpo); valvula.stop(); led.setColorAt(1, 0,100,0);// valvula abiera led.show(); } } void girar_eje(int angulo){ eje.moveTo(angulo); // while (eje.currentPosition() != angulo) {eje.run();} delay(tpo); } void mover_brazo(int posicion){ brazo.moveTo(posicion); // while (brazo.currentPosition() != posicion) // se posiciona para cargar {brazo.run();} delay(tpo); } int checkColor(){ //medir reflejo reflejo = sensor_luz.read(); Serial.print("Ficha " ); Serial.print(no); Serial.print(" Reflejo = " ); Serial.print(reflejo); return reflejo; } void aviso(){ // aviso sonoro for(int i = 0; i < 4; i++){ buzzerOn(); delay(10); buzzerOff(); delay(10); } }```` Inspirado en uno de Kreativadelar.se
editado 6 Jun '17 a las 11:11 am

Tus montajes los tendrían que poner en la sección de Kits, son todos una pasada.

¿Sueles hacer el despiece de ellos o el material que usas para tenerlo de referencia? Esque ya sólo con eso y los videos que subes nos serviría para poder replicarlos

Tus montajes los tendrían que poner en la sección de Kits, son todos una pasada. ¿Sueles hacer el despiece de ellos o el material que usas para tenerlo de referencia? Esque ya sólo con eso y los videos que subes nos serviría para poder replicarlos

Gracias por tu comentario.

No suelo hacer la relación del material empleado en cada montaje, pero pensando en que tal vez haya quien pueda interesarle, de hecho yo suelo inspirarme normalmente en montajes de otros sean de Makeblock o no, acompaño cada descripción o video con una serie de imágenes elegidas para que se pueda seguir y replicar el montaje.

Divertidas y retantes construcciones.

Salu2

Gracias por tu comentario. No suelo hacer la relación del material empleado en cada montaje, pero pensando en que tal vez haya quien pueda interesarle, de hecho yo suelo inspirarme normalmente en montajes de otros sean de Makeblock o no, acompaño cada descripción o video con una serie de imágenes elegidas para que se pueda seguir y replicar el montaje. Divertidas y retantes construcciones. Salu2
371
vistas
2
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