Etape 8: Logiciel - le Code principal !
3 - code principalOK, c’est le programme principal - vous remplacez le programme de test avec cela.
Vous devez installer la bibliothèque de « Time », même si je pense que c’est installé par défaut.
Je vais vous parler à travers les principales fonctions du code. Je suis toujours très bien un apprenant donc je peux bien choisi certaines méthodes maladroits, mais ça marche.
Les obstacles principaux sont :
-Lire l’heure
-Convertir les heures du format de 24 heures au format 12 heures et arrêter le 0 partir le 1er chiffre - ne le veux pas dessin "08 32" - perte de temps, le zéro de dessin.
-prendre les procès-verbaux et dépouiller en chiffres individuels.
-attirer à la fois, chaque chiffre prenant la même quantité d’espace pour que le curseur sur l’EAS retourne toujours à la même place, prête pour la prochaine mise à jour de temps.
J’ai fait les conversions de temps avec des appels de fonction distants (getDigit et hourConverter). print2digits n’est pas utilisé, mais faisait partie de l’essai.
Il y a beaucoup de gauche test dans code commenté pour votre bénéfice. L’essai du temps réel gardant un important a été réalisé via le moniteur série IDE - l’EAS est beaucoup trop lent pour tester ce genre de chose.
/ *---(Importation préalable bibliothèques)---* / void setup() {} void loop() {} Efface l’écran EAS à l’aide d’un EasyDriver câblé avec broche de Direction sur la broche 8 de Arduino et la broche d’étape jusqu'à la broche 9 de la Aruino digitalWrite (8, faible) ;
#include < DS1307RTC.h >
#include < Time.h >
#include < Wire.h >
#include < Stepper.h >
/ *---(Déclarer des constantes, NIP)---* /
#define 32 étapes //Number de pas par tour
#define STEPSSIDE 200 //number étapes côté moteur
/ *---(Déclarer des objets)---* /
Créez une instance de la classe de moteurs, spécifiant
le nombre d’étapes du moteur et les broches il a
attaché à
Les raccordements de NIP doivent être 4 broches reliés
inscrit à moteur pilote In1, In2, In3, In4, puis les broches
ici dans l’ordre 1-3-2-4 pour un enchaînement approprié
Stepper small_stepperV (étapes, 4, 5, 6, 7) ;
Stepper small_stepperH (marches, 2, 3, 12, 13) ;
Serial.Begin(9600) ;
régler la vitesse du moteur
small_stepperH.setSpeed(700) ;
small_stepperV.setSpeed(700) ;
pinMode (sortie 8) ;
pinMode (sortie 9) ;
digitalWrite (8, faible) ;
digitalWrite (9, faible) ;
}
tmElements_t tm ;
RTC.read(tm) ;
SECTION de majeurs de IF - vérifier si la minute est un multiple de 5
Si ((getDigit (tm. Minute, 1)) == 5 || (getDigit (tm. Minute, 1)) == 0) {/ / réactiver pour mise à jour 5 MIN
pour (int micropas = 1; micropas < 1400 ; micropas ++) {}
digitalWrite (9, HIGH) ;
Delay(1) ;
digitalWrite (9, faible) ;
Delay(1) ;
}
Delay(1000) ;
digitalWrite (8, HIGH) ;
pour (int micropas = 1; micropas < 1400 ; micropas ++) {}
digitalWrite (9, HIGH) ;
Delay(1) ;
digitalWrite (9, faible) ;
Delay(1) ;
}
/ * Serial.print (« Ok, heure = ") ;
Serial.Print (hourConverter (tm. Heure)) ;
hourConvert (tm. Heure) ;
Serial.Print (tm. Heure) ;
Serial.Write (',') ;
Serial.Print ("Minutes =") ;
print2digits(TM. Minute) ;
Serial.Print (tm. Minute) ;
Serial.println() ;
*/
Article principal de l’heure d’extraction
Extraire et attirer l’heure
Si ((hourConverter (tm. Heure)) == 1) {}
sketchBlank () ;
sketchSpaceSml () ;
Esquisse1 () ;
} else if ((hourConverter (tm. Heure)) == 2) {}
sketchBlank () ;
sketchSpaceSml () ;
Sketch2 () ;
} else if ((hourConverter (tm. Heure)) == 3) {}
sketchBlank () ;
sketchSpaceSml () ;
Esquisse3 () ;
} else if ((hourConverter (tm. Heure)) == 4) {}
sketchBlank () ;
sketchSpaceSml () ;
Esquisse4 () ;
} else if ((hourConverter (tm. Heure)) == 5) {}
sketchBlank () ;
sketchSpaceSml () ;
Esquisse5 () ;
} else if ((hourConverter (tm. Heure)) == 6) {}
sketchBlank () ;
sketchSpaceSml () ;
sketch6 () ;
} else if ((hourConverter (tm. Heure)) == 7) {}
sketchBlank () ;
sketchSpaceSml () ;
sketch7 () ;
} else if ((hourConverter (tm. Heure)) == 8) {}
sketchBlank () ;
sketchSpaceSml () ;
sketch8 () ;
} else if ((hourConverter (tm. Heure)) == 9) {}
sketchBlank () ;
sketchSpaceSml () ;
sketch9 () ;
} else if ((hourConverter (tm. Heure)) == 10) {}
Esquisse1 () ;
sketchSpaceSml () ;
sketch0 () ;
} else if ((hourConverter (tm. Heure)) == 11) {}
Esquisse1 () ;
sketchSpaceSml () ;
Esquisse1 () ;
} else if ((hourConverter (tm. Heure)) == 12) {}
Esquisse1 () ;
sketchSpaceSml () ;
Sketch2 () ;
}
espace avant minutes
sketchBlank () ;
Extrait et tirage Minute 1er chiffre
Si ((getDigit (tm. Minute, 2)) == 1) {}
Esquisse1 () ;
} else if ((getDigit (tm. Minute, 2)) == 2) {}
Sketch2 () ;
} else if ((getDigit (tm. Minute, 2)) == 3) {}
Esquisse3 () ;
} else if ((getDigit (tm. Minute, 2)) == 4) {}
Esquisse4 () ;
} else if ((getDigit (tm. Minute, 2)) == 5) {}
Esquisse5 () ;
} else {}
sketch0 () ;
}
Espace avant le 2e chiffre minute
sketchSpaceSml () ;
Extrait et tirage Minute 2e chiffre
Si ((getDigit (tm. Minute, 1)) == 1) {}
Esquisse1 () ;
} else if ((getDigit (tm. Minute, 1)) == 2) {}
Sketch2 () ;
} else if ((getDigit (tm. Minute, 1)) == 3) {}
Esquisse3 () ;
} else if ((getDigit (tm. Minute, 1)) == 4) {}
Esquisse4 () ;
} else if ((getDigit (tm. Minute, 1)) == 5) {}
Esquisse5 () ;
} else if ((getDigit (tm. Minute, 1)) == 6) {}
sketch6 () ;
} else if ((getDigit (tm. Minute, 1)) == 7) {}
sketch7 () ;
} else if ((getDigit (tm. Minute, 1)) == 8) {}
sketch8 () ;
} else if ((getDigit (tm. Minute, 1)) == 9) {}
sketch9 () ;
} else {}
sketch0 () ;
}
Curseur de retour pour commencer
small_stepperH.Step(-11800) ; gauche
small_stepperH.Step(1200) ; droit
test pour extraire le 1er ou deuxième chiffre (chiffres de droite) c'est-à-dire « 12 » - chiffre 1 = 2
/ * Serial.print ("Min numéro 2 =") ;
Serial.Print (getDigit (tm. Minute, 2)) ;
Serial.println() ;
Serial.Print ("Min chiffre 1 =") ;
Serial.Print (getDigit (tm. Minute, 1)) ;
Serial.println() ;
extraire le nombre d’heures de test
Si ((hourConverter (tm. Heure)) == 9) {}
Serial.Print (« heure chiffres = neuf!! ") ;
} else if ((hourConverter (tm. Heure)) == 10) {}
Serial.Print (« heure chiffres = dix!! ") ;
}
Serial.println() ;
*/
Delay(59500) ; Un délai décent entre les mises à jour
} //remove le délai ci-dessus et re-anable met à jour cette ligne pendant 5 min
}
FIN DE LA BOUCLE PRINCIPALE
void print2digits (int nombre) {}
Si (nombre > = 0 & & nombre < 10) {}
Serial.Write('0') ;
}
Serial.Print(Number) ;
}
int getDigit (unsigned int number, int digit) {//Takes un nombre et renvoie le chiffre de x'th)
pour (int i = 0; i < chiffre-1; i ++) {
numéro / = 10 ;
}
retour effectif % 10 ;
}
int hourConverter (int nombre) {//Takes 24 heures et soustrait 12, ou ajoute 12 si il est 00 : heure)
Si (numéro > 12) {}
Nombre = Nombre - 12 ;
} ElseIf (nombre == 0) {}
Nombre = Nombre + 12 ;
}
retourner nombre ;
}
Sub Esquisse1 () {}
small_stepperH.Step(700) ; droit
small_stepperV.Step(3100) ; vers le haut
small_stepperH.Step(500) ; droit
small_stepperV.Step(-3090) ; vers le bas
small_stepperH.Step(-1000) ; gauche
small_stepperH.Step(1700) ; droit
}
Sub sketch2 () {}
small_stepperV.Step(2000) ; vers le haut
small_stepperH.Step(1400) ; droit
small_stepperV.Step(600) ; vers le haut
small_stepperH.Step(-1750) ; gauche
small_stepperV.Step(500) ; vers le haut
small_stepperH.Step(2200) ; droit
small_stepperV.Step(-1950) ; vers le bas
small_stepperH.Step(-1600) ; gauche
small_stepperV.Step(-600) ; vers le bas
small_stepperH.Step(1600) ; droit
small_stepperV.Step(-500) ; vers le bas
small_stepperH.Step(-2200) ; gauche
small_stepperH.Step(2200) ; droit
}
void Esquisse3 () {}
small_stepperH.Step(2000) ; droit
small_stepperV.Step(3100) ; vers le haut
small_stepperH.Step(-2250) ; gauche
small_stepperV.Step(-950) ; vers le bas
small_stepperH.Step(1700) ; droit
small_stepperV.Step(-500) ; vers le bas
small_stepperH.Step(-1650) ; gauche
small_stepperV.Step(-550) ; vers le bas
small_stepperH.Step(1650) ; droit
small_stepperV.Step(-550) ; vers le bas
small_stepperH.Step(-1700) ; gauche
small_stepperV.Step(-550) ; vers le bas
small_stepperH.Step(2150) ; droit
}
void Esquisse4 () {}
small_stepperH.Step(1800) ; droit
small_stepperV.Step(3100) ; vers le haut
small_stepperH.Step(-950) ; gauche
small_stepperV.Step(-1500) ; vers le bas
small_stepperH.Step(-650) ; gauche
small_stepperV.Step(1500) ; vers le haut
small_stepperH.Step(-600) ; gauche
small_stepperV.Step(-1950) ; vers le bas
small_stepperH.Step(1600) ; droit
small_stepperV.Step(-1130) ; vers le bas
small_stepperH.Step(630) ; droit
}
Sub Esquisse5 () {}
small_stepperV.Step(1000) ; vers le haut
small_stepperH.Step(1300) ; droit
small_stepperV.Step(600) ; vers le haut
small_stepperH.Step(-1700) ; gauche
small_stepperV.Step(1500) ; vers le haut
small_stepperH.Step(2100) ; droit
small_stepperV.Step(-950) ; vers le bas
small_stepperH.Step(-1700) ; gauche
small_stepperV.Step(-650) ; vers le bas
small_stepperH.Step(1700) ; droit
small_stepperV.Step(-1450) ; vers le bas
small_stepperH.Step(-2200) ; gauche
small_stepperH.Step(2200) ; droit
}
void sketch6 () {}
small_stepperV.Step(3100) ; vers le haut
small_stepperH.Step(1750) ; droit
small_stepperV.Step(-950) ; vers le bas
small_stepperH.Step(-1650) ; gauche
small_stepperV.Step(-700) ; vers le bas
small_stepperH.Step(1650) ; droit
small_stepperV.Step(-1450) ; vers le bas
small_stepperH.Step(-2200) ; gauche
small_stepperH.Step(950) ; droit
small_stepperV.Step(1500) ; vers le haut
small_stepperH.Step(800) ; droit
small_stepperV.Step(-1000) ; vers le bas
small_stepperH.Step(-1150) ; gauche
small_stepperV.Step(-480) ; vers le bas
small_stepperH.Step(1650) ; droit
}
void sketch7 () {}
small_stepperH.Step(1250) ; droit
small_stepperV.Step(2600) ; vers le haut
small_stepperH.Step(-1100) ; gauche
small_stepperV.Step(-1200) ; vers le bas
small_stepperH.Step(-600) ; gauche
small_stepperV.Step(1670) ; vers le haut
small_stepperH.Step(2200) ; droit
small_stepperV.Step(-3020) ; vers le bas
small_stepperH.Step(-900) ; gauche
small_stepperH.Step(1000) ; droit
}
void sketch8 () {}
small_stepperV.Step(3100) ; vers le haut
small_stepperH.Step(1750) ; droit
small_stepperV.Step(-950) ; vers le bas
small_stepperH.Step(-1650) ; gauche
small_stepperV.Step(-700) ; vers le bas
small_stepperH.Step(1150) ; droit
small_stepperV.Step(1200) ; vers le haut
small_stepperH.Step(470) ; droit
small_stepperV.Step(-2600) ; vers le bas
small_stepperH.Step(-2200) ; gauche
small_stepperH.Step(950) ; droit
small_stepperV.Step(1500) ; vers le haut
small_stepperH.Step(800) ; droit
small_stepperV.Step(-1000) ; vers le bas
small_stepperH.Step(-1160) ; gauche
small_stepperV.Step(-500) ; vers le bas
small_stepperH.Step(1700) ; droit
}
void sketch9 () {}
small_stepperH.Step(1250) ; droit
small_stepperV.Step(2650) ; vers le haut
small_stepperH.Step(-1100) ; gauche
small_stepperV.Step(-1200) ; vers le bas
small_stepperH.Step(1050) ; droit
small_stepperV.Step(-450) ; vers le bas
small_stepperH.Step(-1550) ; gauche
small_stepperV.Step(2050) ; vers le haut
small_stepperH.Step(2150) ; droit
small_stepperV.Step(-3050) ; vers le bas
small_stepperH.Step(-900) ; gauche
small_stepperH.Step(1000) ; droit
}
void sketch0 () {}
small_stepperV.Step(3100) ; vers le haut
small_stepperH.Step(1850) ; droit
small_stepperV.Step(-3050) ; vers le bas
small_stepperH.Step(-2200) ; gauche
small_stepperH.Step(800) ; droit
small_stepperV.Step(2500) ; vers le haut
small_stepperH.Step(850) ; droit
small_stepperV.Step(-2000) ; vers le bas
small_stepperH.Step(-1150) ; gauche
small_stepperV.Step(-530) ; vers le bas
small_stepperH.Step(1800) ; droit
}
void sketchBlank () {}
small_stepperH.Step(2000) ; droit
}
void sketchSpaceSml () {}
small_stepperH.Step(500) ; droit
}