Paso 3: Escribir su Sketch de Arduino
La idea detrás de este proyecto es que con cada paso de un paso a paso motor corresponde a un cambio de ángulo fijo. Por ejemplo si un motor paso a paso tiene 500 pasos por revolución, debe registrar cada paso 360/500 = 0,72 grados diferencia. Partiendo de ese conocimiento, nos podemos alinear el telescopio por consiguiente.
Sin embargo, lo primero es lo primero.
Permite configurar nuestro bosquejo para el teclado de un alambre
usted tendrá que descargar la biblioteca de OnewireKeypad.h de la Arduino Playground (http://playground.arduino.cc/Code/OneWireKeyPad)
Luego configurar el constructor para él debería ser fácil siguiendo los ejemplos.
Yo primero pondría a prueba las lecturas de teclado para ver si usted está recibiendo una confiable y constante en valores
definir las teclas de caracteres:
Char [] las llaves =
{ '1', '2', '3',
'4', '5', 6',
'7', '8', 9',
'*', '0', '#',};
Utilizar las funciones "Key_State" y "Getkey". Aquí está un boceto rápido para enviar el valor de clave Serial imprimir
#include
char las teclas [] = {'
1', '2', '3',
'4', '5',' 6',
'7', '8',' 9',
'*','0','#',
};
OnewireKeypad
Teclado (serie, llaves, 5, 3, A0, 4700, 1000);
void setup() {}
Serial.Begin(115200);
}
void loop() {}
Keypad.SetHoldTime(100);
Keypad.SetDebounceTime(50);
Si ((Keypad.Key_State() == 3)) {}
char el keypress = Keypad.Getkey();
Serial.println ("tecla:");
Serial.println(KeyPress);
mientras que ((Keypad.Key_State())) {}
}
}
El bosquejo principal depende el motor paso a paso y protector que está utilizando.
He utilizado 3 diferentes motores y escudo, su cuadro se unen por encima.
Boceto para el escudo de Seeed v2.0 con el motor de pasos Nema 11
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Motor de pasos NEMA pins definiciones
#define MOTORSHIELD_IN1 //8 8
#define MOTORSHIELD_IN2 //11 11
#define MOTORSHIELD_IN3 //12 12
#define MOTORSHIELD_IN4 //13 13
#define CTRLPIN_A 9 //9
#define CTRLPIN_B 10 //10
#define delaytime 10
int numberOfSteps;
void setup()
{
Definir los pines de salida para el motor de pasos nema
pinMode (MOTORSHIELD_IN1, salida);
pinMode (MOTORSHIELD_IN2, salida);
pinMode (MOTORSHIELD_IN3, salida);
pinMode (MOTORSHIELD_IN4, salida);
}
void loop()
{
Mover comandos motor de pasos Nema
numberOfSteps = 500;
while(numberOfSteps>0)
{forward();
numberOfSteps--; }
Delay(2000);
}
void Step_A1()
{digitalWrite(MOTORSHIELD_IN1,HIGH);
digitalWrite(MOTORSHIELD_IN2,LOW);
digitalWrite(MOTORSHIELD_IN3,LOW);
digitalWrite(MOTORSHIELD_IN4,LOW);
digitalWrite(CTRLPIN_A,HIGH);
digitalWrite(CTRLPIN_B,LOW);
}
void Step_B1() {}
digitalWrite(MOTORSHIELD_IN1,LOW);
digitalWrite(MOTORSHIELD_IN2,LOW);
digitalWrite(MOTORSHIELD_IN3,HIGH);
digitalWrite(MOTORSHIELD_IN4,LOW);
digitalWrite(CTRLPIN_A,LOW);
digitalWrite(CTRLPIN_B,HIGH);
}
void Step_C1() {}
digitalWrite(MOTORSHIELD_IN1,LOW);
digitalWrite(MOTORSHIELD_IN2,HIGH);
digitalWrite(MOTORSHIELD_IN3,LOW);
digitalWrite(MOTORSHIELD_IN4,LOW);
digitalWrite(CTRLPIN_A,HIGH);
digitalWrite(CTRLPIN_B,LOW);
}
void Step_D1() {}
digitalWrite(MOTORSHIELD_IN1,LOW);
digitalWrite(MOTORSHIELD_IN2,LOW);
digitalWrite(MOTORSHIELD_IN3,LOW);
digitalWrite(MOTORSHIELD_IN4,HIGH);
digitalWrite(CTRLPIN_A,LOW);
digitalWrite(CTRLPIN_B,HIGH);
}
{} void forward()
Step_A1();
Delay(Delaytime);
Step_B1();
Delay(Delaytime);
Step_C1();
Delay(Delaytime);
Step_D1();
Delay(Delaytime);
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Boceto para el EasyDrive protector y pequeño paso a paso motor ROB - 10551
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Motor de pasos de pequeño que escudo EasyDrive pins
int EASYSHIELDdir = 2;
int EASYSHIELDstep = 3;
void setup() {}
Clavijas de salida de EasyShield
pinMode (EASYSHIELDdir, salida);
pinMode (EASYSHIELDstep, salida);
}
void loop() {}
Funcionamiento motor de pasos conectado con EasyShield
para (i = 0; i < numberOfStep; i ++)
{
digitalWrite(EASYSHIELDstep,LOW);
digitalWrite(EASYSHIELDstep,HIGH);
delayMicroseconds(5000);
}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Escudo y motor paso a paso de 28BYJ
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Definiciones de pines 28BYJ motor paso a paso
#define STEPPER1 4
#define STEPPER2 5
#define STEPPER3 6
#define STEPPER4 7
#define delaytime 8
void setup() {}
Definir los pines de salida para el motor de pasos 28BYj
pinMode (STEPPER1, salida);
pinMode (STEPPER2, salida);
pinMode (STEPPER3, salida);
pinMode (STEPPER4, salida);
void loop() {}
while(numberOfSteps>0) {}
stepperforward();
numberOfSteps--;
}
}
void Step_A() {}
digitalWrite (STEPPER1, alto);
digitalWrite (STEPPER2, alto);
digitalWrite (STEPPER3, bajo);
digitalWrite (STEPPER4, bajo);
}
void Step_B() {}
digitalWrite (STEPPER1, LOW);
digitalWrite (STEPPER2, alto);
digitalWrite (STEPPER3, alto);
digitalWrite (STEPPER4, bajo);
}
void Step_C() {}
digitalWrite (STEPPER1, LOW);
digitalWrite (STEPPER2, bajo);
digitalWrite (STEPPER3, alto);
digitalWrite (STEPPER4, alto);
}
void Step_D() {}
digitalWrite (STEPPER1, alto);
digitalWrite (STEPPER2, bajo);
digitalWrite (STEPPER3, bajo);
digitalWrite (STEPPER4, alto);
}
void stepperforward() {}
un diente de adelante
Step_A(); Delay(Delaytime);
STEP_B(); Delay(Delaytime);
Step_C(); Delay(Delaytime);
Step_D(); Delay(Delaytime);
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Después de escribir el bosquejo para cada motor paso a paso, podemos usar la función de OnewireKeypad "addEventKey()" y "ListenforEventKey()" para cada motor paso a paso y de entrada un valor numérico para su tamaño de paso individual.
Miren el bosquejo completo adjunto para ver el sketch completo con todos los motores paso a paso, pantalla LCD y código de eventos claves.