Paso 8: El código
Para escribir el código para el arduino, es necesario el arduino IDE (descargar aquí)Estoy usando la versión 1.0.5, sólo asegúrese de seleccionar el puerto COM correcto (windows) y tipo de la IDE del tablero después de usar el código y subir exitosa.
Nota: Los valores que utiliza en el código para establecer la desviación máxima de los servos están hechos exactamente para este cuadro teniendo en cuenta los servos posicionamiento, ejes y ángulos. Consegui esto a través de la prueba. Así que necesita elaborar sus propios valores según su cuadro y colocación del servo.
Para referencia, por debajo de los valores de mín/máx que utiliza para cada servo como verán les ocurre en el código:
La puerta:
80 ocultar, 155 Abra completamente
La mano:
ocultar, 129 empujando encendido 0
Aquí está el código (mejor descargar el archivo adjunto a este paso en vez de copiar/pegar desde abajo):
#include < Servo.h > int switch_pin = 2; Ponga el interruptor en el pin 2 variables de motor int pos = 0; void setup() void loop() } Biblioteca de movimientos movimiento básico
Servo doorServo;
Servo handServo;
int motorThrottle = 11;
int motorDirection = 13;
Resistancia de int = 8;
int selectedMove = 0; colocar el selector de
int Testmove = 0; modo de prueba: sistema para mover el número para probar sólo una jugada seleccionada
(establecido en cero para funcionar normalmente es decir: roundrobbin en el amm se mueve)
{
Serial.Begin(9600);
pinMode (switch_pin, entrada);
doorServo.attach(9); servo sistema puerta de 9 Pin pwm
handServo.attach(10); servo de mano set de 10 Pin pwm
doorServo.write(80); Set puerta para ocultar la posición
handServo.write(0); sistema mano para ocultar la posición
Canal B, de la instalación (desde canal A está reservado por servos de puerta y de la mano y no puede ber utilizado al mismo tiempo)
pinMode (motorDirection, salida); Clavija de iniciados Motor canal de B
pinMode (resistancia, salida); Pin de B inicia canal de freno
}
{
Si (Testmove! = 0) {}
selectedMove = Testmove;
}
Si el interruptor está encendido, luego mover la puerta y a mano para apagarlo...
if(digitalRead(switch_pin) == HIGH)
{
Si (selectedMove > 10) {selectedMove = 0;} //when se juegan todos los movimientos, repetir los movimientos desde
¿a continuación se muestran todas las "jugadas" que diseñé hasta el momento, cada uno es una función que está escrita a continuación en el código, execuse los nombres, abit extraño? sí, algunos están escritos en Árabe
Si (selectedMove == 0) {switchoff();}
else if (selectedMove == 1) {switchoff();}
else if (selectedMove == 2) {switchoffbitaraddod();}
else if (selectedMove == 3) {crazydoor();}
else if (selectedMove == 4) {crazyslow();}
else if (selectedMove == 5) {m7anika7anika();}
else if (selectedMove == 6) {m3alla2();}
else if (selectedMove == 7) {switchoff();}
else if (selectedMove == 8) {matrix();}
else if (selectedMove == 9) {sneak();}
else if (selectedMove == 10) {zee7();}
Si (Testmove == 0) {}
selectedMove ++; swith de la jugada si no en modo de prueba
}
}
void switchoff()
{
Puerta en movimiento
para (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
Movimiento de la mano
para (pos = 0; pos < 129; pos = 4)
{
handServo.write(pos);
Delay(15);
}
esconder la mano
para (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos);
Delay(15);
}
puerta oculta
para (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}
}
movimiento 3: abrir y esperar, luego mueva la mano y esperar, luego apague y ocultar
void switchoffbitaraddod()
{
Puerta en movimiento
para (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
Delay(800);
Movimiento de la mano
para (pos = 0; pos < 100; pos = 4)
{
handServo.write(pos);
Delay(15);
}
Delay(1000);
para (pos = 100; pos < 129; pos = 4)
{
handServo.write(pos);
Delay(15);
}
esconder la mano
para (pos = 129; pos > = 0; pos-= 5)
{
handServo.write(pos);
Delay(15);
}
puerta oculta
para (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}
}
movimiento 4: Abra la puerta luego cierre espera muchas veces, entonces rápidamente reoprn una nd apague y ocultar.
void crazydoor()
{
Puerta en movimiento
para (pos = 80; pos < 125; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
puerta oculta
para (pos = 125; pos > = 80; pos-= 5)
{
doorServo.write(pos);
Delay(15);
}
Puerta en movimiento
para (pos = 80; pos < 110; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
puerta oculta
para (pos = 110; pos > = 80; pos-= 15)
{
doorServo.write(pos);
Delay(15);
}
Delay(700);
Puerta en movimiento
para (pos = 80; pos < 125; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
Delay(700);
puerta oculta
para (pos = 125; pos > = 80; pos-= 5)
{
doorServo.write(pos);
Delay(15);
}
---del interruptor de---/ /
Puerta en movimiento
para (pos = 80; pos < 155; pos = 8)
{
doorServo.write(pos);
Delay(15);
}
Movimiento de la mano
para (pos = 0; pos < 129; pos = 3)
{
handServo.write(pos);
Delay(15);
}
esconder la mano
para (pos = 129; pos > = 0; pos-= 3)
{
handServo.write(pos);
Delay(15);
}
puerta oculta
para (pos = 155; pos > = 80; pos-= 15)
{
doorServo.write(pos);
Delay(15);
}
}
mover 5: Abra la puerta, luego mueva la mano lentamente hacia adelante y atrás para ocultar muy lentamente, luego rápidamente cierre puerta
void crazyslow()
{
Puerta en movimiento
para (pos = 80; pos < 155; pos = 1)
{
doorServo.write(pos);
Delay(30);
}
Movimiento de la mano
para (pos = 0; pos < 129; pos = 1)
{
handServo.write(pos);
Delay(30);
}
esconder la mano
para (pos = 129; pos > = 0; pos-= 1)
{
handServo.write(pos);
Delay(30);
}
puerta oculta
para (pos = 155; pos > = 125; pos-= 1)
{
doorServo.write(pos);
Delay(30);
}
Delay(100);
para (pos = 125; pos > = 80; pos-= 4)
{
doorServo.write(pos);
Delay(15);
}
}
movimiento 6:
void m7anika7anika() {}
Puerta en movimiento
para (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
Movimiento de la mano
para (pos = 0; pos < 70; pos = 1)
{
handServo.write(pos);
Delay(15);
}
Delay(800);
puerta oculta
para (pos = 155; pos > = 130; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}
puerta oculta
para (pos = 130; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
puerta oculta
para (pos = 155; pos > = 130; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}
puerta oculta
para (pos = 130; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
handServo.write(40);
Delay(1000);
Movimiento de la mano
para (pos = 40; pos < 129; pos = 4)
{
handServo.write(pos);
Delay(15);
}
esconder la mano
para (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos);
Delay(15);
}
para (pos = 120; pos > = 80; pos-= 1)
{
doorServo.write(pos);
Delay(15);
}
}
void m3alla2() {}
Puerta en movimiento
para (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
Movimiento de la mano
para (pos = 0; pos < 127; pos = 4)
{
handServo.write(pos);
Delay(15);
}
puerta oculta
para (pos = 155; pos > = 130; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}
Delay(2000);
para (pos = 130; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
para (pos = 155; pos > = 140; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}
para (pos = 140; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
Delay(500);
esconder la mano
para (pos = 127; pos > = 0; pos-= 4)
{
handServo.write(pos);
Delay(15);
}
puerta oculta
para (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}
}
matrix() vacío
{
Puerta en movimiento
para (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
Movimiento de la mano
para (pos = 0; pos < 80; pos = 4)
{
handServo.write(pos);
Delay(15);
}
para (pos = 80; pos < 129; pos = 1)
{
handServo.write(pos);
Delay(30);
}
Delay(300);
para (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos);
Delay(10);
}
puerta oculta
para (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}
}
void sneak()
{
Puerta en movimiento
para (pos = 80; pos < 130; pos = 1)
{
doorServo.write(pos);
Delay(30);
}
Delay(2000);
Movimiento de la mano
para (pos = 0; pos < 40; pos = 1)
{
handServo.write(pos);
Delay(30);
}
Delay(500);
para (pos = 130; pos < 155; pos = 4)
{
doorServo.write(pos);
Delay(15);
}
Delay(100);
para (pos = 40; pos < 90; pos = 4)
{
handServo.write(pos);
Delay(15);
}
Delay(500);
esconder la mano
para (pos = 90; pos > = 70; pos-= 4)
{
handServo.write(pos);
Delay(15);
}
Delay(100);
para (pos = 70; pos < 90; pos = 4)
{
handServo.write(pos);
Delay(15);
}
Delay(100);
para (pos = 90; pos > = 70; pos-= 4)
{
handServo.write(pos);
Delay(15);
}
Delay(100);
para (pos = 70; pos < 129; pos = 4)
{
handServo.write(pos);
Delay(15);
}
para (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos);
Delay(15);
}
puerta oculta
para (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}
}
void zee7()
{
Puerta en movimiento
para (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
Delay(2000);
hacia adelante a velocidad media a la izquierda
digitalWrite (motorDirection, bajo); Establece la dirección correcta del canal B
digitalWrite (resistancia, LOW); Soltar el freno para el canal B
analogWrite (motorThrottle, 100); Gira el motor en canal B a toda velocidad
Delay(300);
digitalWrite (resistancia, HIGH); Eengage el freno para el canal B
Delay(2000);
hacia atrás a velocidad media a la derecha
digitalWrite (motorDirection, HIGH); Establece la izquierda en dirección de canal B
digitalWrite (resistancia, LOW); Soltar el freno para el canal B
analogWrite (motorThrottle, 100); Gira el motor en canal B en la mitad de velocidad
Delay(300);
digitalWrite (resistancia, HIGH); Eengage el freno para el canal B
Delay(1000);
Movimiento de la mano
para (pos = 0; pos < 129; pos = 4)
{
handServo.write(pos);
Delay(15);
}
esconder la mano
para (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos);
Delay(15);
}
puerta oculta
para (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}
}