Étape 1: ARDUINO CODE
/******************************************
BUT : Pour l’exploitation d’une boule Disco
Créé par George K Nkrumah
DATE : 01/04/2015
*******************************************/
#include
#include
#include
#include //include la bibliothèque I2C, celui-ci est une bibliothèque standard de package Arduino
#include
Il s’agit de la bibliothèque d’affichage LCD I2C spéciale fourni avec l’écran
LiquidCrystal_I2C myDisplay(0x27,16,2) ; Il instancie un objet de LCD, nommé « myDisplay »
Nous avons mis l’adresse LCD à 0 x 27 (il s’agit d’un nombre hexadécimal, qui est égal à 0b100111) ; Il s’agit de l’I2C
adresse pour la puce d’extension de port PCF8574 qui gère l’affichage de bus (voir le tutoriel vidéo)
et définir le nombre de colonnes (16) et les lignes (2) de l’écran
Cela indique les méthodes dans la bibliothèque quel affichage que nous traitons
#define pin1 0 / / Voici les broches de l’Arduino que nous utilisons pour activer les bobines 1-4 de la commande de moteur
#define pin2 1
#define broche 3 2
#define pin4 3
#define delaytime 8 //delay temps en ms pour contrôler la /Delay moteur pas à pas.
Nos tests ont montré que 8 est sur le plus rapide qui peuvent provoquer un fonctionnement fiable sans étapes manquantes
int LED1 = 10 ;
int LED2 = 11 ;
int DEL3 = 12 ;
int j = 0 ;
int m = 5 ;
int n = 10 ;
/************************set-up function******************************************************************/
void setup()
{
myDisplay.init() ; initialiser l’écran lcd - Ceci affecte la toile de caractère 5 x 8 pixels et quelques autres détails de matériel
Remarque : Cette méthode .init() commence également le bus I2C, c.-à-d. il n’a pas besoin d’être
un séparé « Wire.begin(); » énoncé dans le programme d’installation.
myDisplay.backlight (); //this s’allume le rétro-éclairage
Imprimer un message à l’écran LCD.
myDisplay.print ("Dj Kwame... Repping GH!!!") ;
Delay(1000) ; attendre 1000msec
initialiser la broche 8 en tant que sortie :
pinMode (pin1, sortie) ;
pinMode (pin2, sortie) ;
pinMode (broche 3, sortie) ;
pinMode (pin4, sortie) ;
pinMode (LED1, sortie) ;
pinMode (LED2, sortie) ;
pinMode (DEL3, sortie) ;
}
/*************************main loop************************************************************************/
void loop()
{
digitalWrite (LED1, élevé) ; allumer la LED (HIGH est le niveau de tension)
Delay(1000) ; Attendez une seconde
digitalWrite (LED2, élevé) ; allumer la LED (HIGH est le niveau de tension)
Delay(1000) ; Attendez une seconde
digitalWrite (DEL3, élevé) ; allumer la LED (HIGH est le niveau de tension)
Delay(1000) ; Attendez une seconde
Nous allons jouer avec certaines des méthodes inclus dans la bibliothèque :
int numberOfSteps = 2048 ;
step_OFF() ; désactiver toutes les batteries
while(numberOfSteps>0) {}
mémoire ; aller de l’avant
numberOfSteps--; //counting vers le bas le nombre d’étapes
Si (j < 15)
{
digitalWrite (LED1, faible) ; allumer la LED (HIGH est le niveau de tension)
j ++ ;
}
Si (j > = 15)
{
digitalWrite (LED1, élevé) ; allumer la LED (HIGH est le niveau de tension)
j = 0 ;
}
Si (m < 15)
{
digitalWrite (LED2, faible) ; allumer la LED (HIGH est le niveau de tension)
digitalWrite (DEL3, faible) ; allumer la LED (HIGH est le niveau de tension)
m ++ ;
}
Si (m > = 15)
{
digitalWrite (LED2, élevé) ; allumer la LED (HIGH est le niveau de tension)
digitalWrite (DEL3, élevé) ; allumer la LED (HIGH est le niveau de tension)
m = 0 ;
}
}
pour (int i = 0; j’ai < 10; i ++) {//this fait défiler les positions de texte 10 à droite
myDisplay.scrollDisplayRight() ;
Delay(200) ;
}
pour (int i = 0; j’ai < 10; i ++) {//and vers la gauche
myDisplay.scrollDisplayLeft() ;
Delay(200) ;
}
Delay(2) ;
step_OFF() ; désactiver toutes les batteries
numberOfSteps = 2048 ;
while(numberOfSteps>0) {}
Backward() ; en reculant
numberOfSteps--; //counting vers le bas le nombre d’étapes
}
Delay(200) ;
digitalWrite (LED1, faible) ; allumer la LED (HIGH est le niveau de tension)
Delay(1000) ; Attendez une seconde
digitalWrite (LED2, faible) ; allumer la LED (HIGH est le niveau de tension)
Delay(1000) ; Attendez une seconde
digitalWrite (DEL3, faible) ; allumer la LED (HIGH est le niveau de tension)
Delay(1000) ; Attendez une seconde
Ceci définit le curseur de l’écran à la deuxième rangée et la 9e position du caractère dans la même rangée
myDisplay.setCursor(1,8) ;
Ensuite, nous imprimons à la position du curseur
myDisplay.print ("See you plus tard!!!") ;
Découvrez les autres méthodes intéressantes pour faire fonctionner ce LCD qui sont inclus dans la bibliothèque !
charger le fichier .h de la bibliothèque dans un éditeur de texte et lire la liste des méthodes... la plupart est explicites, plus détaillée se trouve dans le fichier .cpp
}
Bibliothèque de moteur pas à pas :
ces fonctions de définissent les paramètres de code pin pour chacune des quatre étapes par la rotation du moteur (amirouche à l’esprit que le moteur du kit est orienté vers le bas,
c'est-à-dire, il existe de nombreuses mesures nécessaires par rotation
void Step_A() {}
digitalWrite (pin1, HIGH); //turn sur la bobine 1
digitalWrite (pin2, faible) ;
digitalWrite (pin3, faible) ;
digitalWrite (pin4, faible) ;
}
void Step_B() {}
digitalWrite (pin1, faible) ;
digitalWrite (pin2, HIGH); //turn sur bobine 2
digitalWrite (pin3, faible) ;
digitalWrite (pin4, faible) ;
}
void Step_C() {}
digitalWrite (pin1, faible) ;
digitalWrite (pin2, faible) ;
digitalWrite (broche 3, HIGH) ; Allumez la bobine 3
digitalWrite (pin4, faible) ;
}
void Step_D() {}
digitalWrite (pin1, faible) ;
digitalWrite (pin2, faible) ;
digitalWrite (pin3, faible) ;
digitalWrite (pin4, HIGH) ; Allumez la bobine 4
}
void step_OFF() {}
digitalWrite (pin1, faible) ; Éteignez toutes les batteries
digitalWrite (pin2, faible) ;
digitalWrite (pin3, faible) ;
digitalWrite (pin4, faible) ;
}
ces fonctions exécutent les configurations ci-dessus dans l’ordre avant et arrière
la direction d’un moteur pas à pas dépend de l’ordre dans lequel les bobines sont allumés.
mémoire Sub {//one dent vers l’avant
Step_A() ;
Delay(DelayTime) ;
Step_B() ;
Delay(DelayTime) ;
Step_C() ;
Delay(DelayTime) ;
Step_D() ;
Delay(DelayTime) ;
}
void backward() {//one dent de descendante
Step_D() ;
Delay(DelayTime) ;
Step_C() ;
Delay(DelayTime) ;
Step_B() ;
Delay(DelayTime) ;
Step_A() ;
Delay(DelayTime) ;
}