Étape 3: Écrire votre Sketch Arduino
L’idée derrière ce projet est que chaque étape d’un stepper motor correspondra à un changement d’angle fixe. Par exemple si un moteur pas à pas a 500 pas par tour, chaque étape doit comptabiliser 360/500 = 0,72 degrés de différence. Basés sur ces connaissances, nous pouvons aligner le télescope en conséquence.
Cependant, tout premier.
Permet de configurer notre croquis pour le clavier à touches un fil
vous aurez besoin de télécharger la bibliothèque OnewireKeypad.h de l' Arduino Playground (http://playground.arduino.cc/Code/OneWireKeyPad)
Puis mise en place du constructeur qu’il devrait être facile suivant les exemples.
Je testerait tout d’abord les lectures de clavier pour voir si vous obtenez une valeurs fiables et cohérentes
définir les clés de votre personnage :
Char [] KEYS =
{ '1', '2', '3',
'4', '5', 6',
« 7 », '8', 9 »,
'*', '0', '#',};
Utilisez les fonctions « Key_State » et « Getkey ». Voici un croquis rapide pour envoyer la valeur de la clé à imprimer série
#include
Char [clés] = {"
1', « 2 », « 3 »,
'4', '5',' 6',
« 7 », '8',' 9 »,
'*','0','#',
};
OnewireKeypad
Clavier (série, clés, 5, 3, A0, 4700, 1000) ;
void setup() {}
Serial.Begin(115200) ;
}
void loop() {}
Keypad.SetHoldTime(100) ;
Keypad.SetDebounceTime(50) ;
Si ((Keypad.Key_State() == 3)) {}
char de keypress = Keypad.Getkey() ;
Serial.println ("touche du pavé:") ;
Serial.println(KeyPress) ;
tandis que ((Keypad.Key_State())) {}
}
}
Le croquis Main dépendra le moteur pas à pas et le bouclier que vous utilisez.
J’ai utilisé 3 moteurs différents et bouclier, leur photo sont attachés au dessus.
croquis pour le bouclier Seeed v2.0 avec le moteur pas à pas de Nema 11
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Moteur pas à pas NEMA pins définitions
#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()
{
Définir les broches de sortie pour la commande de moteur nema
pinMode (MOTORSHIELD_IN1, sortie) ;
pinMode (MOTORSHIELD_IN2, sortie) ;
pinMode (MOTORSHIELD_IN3, sortie) ;
pinMode (MOTORSHIELD_IN4, sortie) ;
}
void loop()
{
Déplacer les commandes de moteur stepper Nema
numberOfSteps = 500 ;
while(numberOfSteps>0)
{mémoire ;
numberOfSteps--; }
Delay(2000) ;
}
Sub 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) ;
}
mémoire Sub {}
Step_A1() ;
Delay(DelayTime) ;
Step_B1() ;
Delay(DelayTime) ;
Step_C1() ;
Delay(DelayTime) ;
Step_D1() ;
Delay(DelayTime) ;
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Croquis pour le bouclier EasyDrive et petit Stepper moteur ROB - 10551
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Smaall commande de moteur Qu'easydrive bouclier épingle
int EASYSHIELDdir = 2 ;
int EASYSHIELDstep = 3 ;
void setup() {}
Broches de sortie EasyShield
pinMode (EASYSHIELDdir, sortie) ;
pinMode (EASYSHIELDstep, sortie) ;
}
void loop() {}
Exécutez le moteur pas à pas connecté avec EasyShield
pour (i = 0; i < numberOfStep; i ++)
{
digitalWrite(EASYSHIELDstep,LOW) ;
digitalWrite(EASYSHIELDstep,HIGH) ;
delayMicroseconds(5000) ;
}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Bouclier et moteur pas à pas 28BYJ
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Définitions de broche 28BYJ moteur pas à pas
#define STEPPER1 4
#define STEPPER2 5
#define STEPPER3 6
#define STEPPER4 7
#define delaytime 8
void setup() {}
Définir les broches de sortie pour le moteur pas à pas 28BYj
pinMode (STEPPER1, sortie) ;
pinMode (STEPPER2, sortie) ;
pinMode (STEPPER3, sortie) ;
pinMode (STEPPER4, sortie) ;
void loop() {}
while(numberOfSteps>0) {}
stepperforward() ;
numberOfSteps--;
}
}
void Step_A() {}
digitalWrite (STEPPER1, élevé) ;
digitalWrite (STEPPER2, élevé) ;
digitalWrite (STEPPER3, basse) ;
digitalWrite (STEPPER4, basse) ;
}
void Step_B() {}
digitalWrite (STEPPER1, basse) ;
digitalWrite (STEPPER2, élevé) ;
digitalWrite (STEPPER3, élevé) ;
digitalWrite (STEPPER4, basse) ;
}
void Step_C() {}
digitalWrite (STEPPER1, basse) ;
digitalWrite (STEPPER2, basse) ;
digitalWrite (STEPPER3, élevé) ;
digitalWrite (STEPPER4, élevé) ;
}
void Step_D() {}
digitalWrite (STEPPER1, élevé) ;
digitalWrite (STEPPER2, basse) ;
digitalWrite (STEPPER3, basse) ;
digitalWrite (STEPPER4, élevé) ;
}
void stepperforward() {}
une dent vers l’avant
Step_A() ; Delay(DelayTime) ;
Step_B() ; Delay(DelayTime) ;
Step_C() ; Delay(DelayTime) ;
Step_D() ; Delay(DelayTime) ;
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Après avoir écrit l’esquisse pour chaque moteur pas à pas, nous pouvons utiliser la fonction OnewireKeypad « addEventKey() » et « ListenforEventKey() » à appeler pour chaque moteur pas à pas et entrez une valeur numérique pour leur taille d’étape individuelle.
Regardez le croquis ci-joint complet pour voir le croquis complet avec tous les moteurs pas à pas, écran LCD et code d’événement clés.