Lanzador de sable de luz – (2)

Tras recibir el actuador lineal y las gomas elásticas, era el momento de terminar el montaje y comprobar que todo funcionaba correctamente.

El actuador lineal que he usado es este: https://www.banggood.com/9_5-15-30mm-or-s-DC-12V-50mm-Stroke-Mini-Electric-Linear-Actuator-Motor-Aluminum-Alloy-Linear-Actuators-Linear-Motor-Telescopic-Rod-Lifter-p-1786666.html?cur_warehouse=CN&ID=6297713

Es un poco más corto del que usa Doug, pero funciona perfectamente. Para que funcione necesitamos un relé doble. Estos actuadores funcionan invirtiendo las corrientes para que se estiren o encojan. Con un doble relé, jugando con que siempre un lado tenga tierra y el otro tenga 12V, veremos como se estira, y si invertimos las conexiones, se encoje.

Las gomas elásticas son de Usa. Decidí comprarme las mismas que usa Doug para ir a lo seguro. Han salido un pelín caras, pero bueno. La buena noticia es que tengo miles de repuestos y puedo mandar varias a quien esté interesado en hacer el proyecto XDD

En cualquier caso son gomas de tamaño 64 con 6mm de ancho.

El esquema eléctrico que he usado es muy simple. Os dejo la imagen como siempre:

Tras montar todo tocaba probar que funcionaba:

Y así quedaba montado en el plato del dome:

Tras eso, tocaba hacer el código. Constará de 2 partes:

Pulsando PS+Izquierda se producirá el lanzamiento:

  • Se abre el panel
  • Se inclina el tubo
  • A los 3 segundos sueltas el sable
  • Endereza tubo y cierra panel:

Pulsando PS+Derecha es la secuencia de recarga:

  • Se abre el panel
  • Se inclina el tuvo durante 10 segundos para tener tiempo de bajar el impulsor
  • El servo sujeta el impulsor
  • Permanece otros 10 segundos inclinado para que introduzcamos el sable
  • Se endereza el tubo y se cierra el panel. Ya está listo para otro lanzamiento.

El código es este:

#include <Servo.h>

//pines
#define RELE1 10
#define RELE2 11
#define LANZAR 12
#define RECARGAR 13
#define SERVO  9

bool Lanzado = false;

Servo servoMotor;

void setup() {

  pinMode(RELE1, OUTPUT);
  pinMode(RELE2, OUTPUT);
  pinMode(LANZAR, INPUT);
  pinMode(RECARGAR, INPUT);
  pinMode(SERVO, OUTPUT);
  
  //REPOSO
  digitalWrite(RELE1, LOW);
  digitalWrite(RELE2, HIGH);
  servoMotor.attach(SERVO);
  servoMotor.write(90);
  delay (2000);
  digitalWrite(RELE1, LOW);
  digitalWrite(RELE2, LOW);
  delay (10000);
  
}

void loop() {

 
  //---------------------------------------------------------------------------

  if (digitalRead(LANZAR)== HIGH && !Lanzado){
    // secuencia de lanzado del sable
    digitalWrite(RELE1, HIGH);
    digitalWrite(RELE2, LOW);
    delay(500);
    digitalWrite(RELE1, LOW);
    digitalWrite(RELE2, LOW);
    delay (3000);
    servoMotor.write(45);
    delay (3000);
    digitalWrite(RELE1, LOW);
    digitalWrite(RELE2, HIGH);
    delay(500);
    digitalWrite(RELE1, LOW);
    digitalWrite(RELE2, LOW);
    Lanzado = true;   
    
  }
  

 if (digitalRead(RECARGAR)== HIGH && Lanzado){
    // secuencia de recarga del sable
    digitalWrite(RELE1, HIGH);
    digitalWrite(RELE2, LOW);
    delay(400);
    digitalWrite(RELE1, LOW);
    digitalWrite(RELE2, LOW);
    delay (10000);
    servoMotor.write(90);
    delay (10000);
    digitalWrite(RELE1, LOW);
    digitalWrite(RELE2, HIGH);
    delay(500);
    digitalWrite(RELE1, LOW);
    digitalWrite(RELE2, LOW);
    Lanzado = false;   
  }
  
}  

Los paneles se abren tocando el código Shadow, no con este código. Eso lo tenéis que adaptar cada uno al sistema que usa. En el caso de Shadow es muy sencillo, pero si no sabes como hacerlo, escríbeme y te ayudo.

Resultado final:

Y esto es todo. Un nuevo gadget instalado en R2!!

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Blog de WordPress.com.

Subir ↑

A %d blogueros les gusta esto: