Arduino Etch-A-Sketch horloge (8 / 9 étapes)

Etape 8: Logiciel - le Code principal !

3 - code principal

OK, 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)---* /
#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) ;

void setup() {}
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) ;
}

void loop() {}
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

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) ;
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
}

Articles Liés

Arduino contrôlée poche Etch A Sketch Random Walk Simulation

Arduino contrôlée poche Etch A Sketch Random Walk Simulation

ce projet est le résultat de Wal-Mart, achat d'impulsion des voies de départ de format de poche Etch A Sketch pour 3,99 $.Deux moteurs pas à pas conduire les arbres de bouton d'Etch A Sketch, et un moteur d'asservissement flips Etch A Sketch pour eff
Arduino basé Etch A Sketch Laser Cutter.

Arduino basé Etch A Sketch Laser Cutter.

Dans ce projet, je prends un Arduino Pro Mini Connectez-le à une coutume fait Etch A Sketch panneau et il permet de contrôler un museau noir laser cutter. Le résultat est des heures de plaisir de découpe laser fou, qui nous aura autour de la plupart
Telecran (Etch a Sketch) + Arduino = Telecranduino !

Telecran (Etch a Sketch) + Arduino = Telecranduino !

je suis tombé sur un tas de moteurs pas à pas et je cherche depuis pour un projet à faire avec les enfants.Un vieux Telecran (Français pour Etch-a-Sketch) plus tard, nous sommes en affaires !Ce que j'ai utilisé pour ce projet :-un arduino Uno-2 moteu
EtchABot : Une CNC polyvalente Etch A Sketch

EtchABot : Une CNC polyvalente Etch A Sketch

La EtchABot utilise un Arduino pour transformer une Etch A Sketch en une effacement automatique machine à dessiner CNC (Computer Numerical Control). Il est loin d'être le premier motorisé Etch A Sketch sur l'internet. Autres projets ont utilisé des m
Etch-a-Sketch LOGO - EASiLOGO

Etch-a-Sketch LOGO - EASiLOGO

Ce que vous obtenez lorsque vous traversez une tortue avec un Etch-a-Sketch ?Etch-A-Sketch LOGO interactif - « EASiLOGO » !C'est le premier langage de programmation conçu spécifiquement pour le jouet célèbre monde de Ohio Arts - le Etch-a-Sketch. Si
Robot de dessin de peinture murale de 100 $ (fonctionne aussi comme un géant etch-a-sketch)

Robot de dessin de peinture murale de 100 $ (fonctionne aussi comme un géant etch-a-sketch)

en vedette sur Hack-un-jour!Ce que j'aime sur les robots, c'est que vous pouvez faire une chose qui rend les autres choses.  Meta Oui !  Il utilise gcode tirage toute image que vous aimez, ou vous pouvez conduire autour comme une etch-a-sketch.  Vous
SK3TCH - Balance Board contrôlé Etch-A-Sketch

SK3TCH - Balance Board contrôlé Etch-A-Sketch

SK3TCHComment utiliser une Wii Balance Board pour contrôler une Etch-A-SketchWindows uniquementTable des matières :1. intro et nomenclature2. gears3. mise en place du cadre4. montage5. connexion WiiMote et Balance Board6. GlovePIE7. Arduino + contrôl
LED Etch-a-Sketch (Instructable complet)

LED Etch-a-Sketch (Instructable complet)

My LED Etch-a-Sketch est mon premier projet électronique dûment rempli. Quand je suis arrivé en Electronique, que je cherchais à commencer par un projet et Pendant que vous naviguez sur Sparkfun.com je suis tombé sur des matrices de LED et j'ai su qu
NES contrôlée Etch-A-Sketch

NES contrôlée Etch-A-Sketch

S'appuyant sur une etch-a-sketch à l'aide d'un contrôleur d'origine Nintendo. J'ai raccordé les boutons etch-a-sketch pour moteurs pas à pas, qui sont ensuite contrôlées par un microcontrôleur Arduino. Le programme Arduino, que j'ai écrit prend des s
Virtuel Etch A Sketch

Virtuel Etch A Sketch

The Etch A Sketch : célèbre, créatif et unique. Malheureusement je n'ai aucune idée où celle de mon enfance est, j'ai décidé de faire mes propres virtuel ! Check it out (et mes compétences en dessin terrible) ci-dessous.Cette Etch A Sketch est tout à
VHDL Etch-a-Sketch

VHDL Etch-a-Sketch

Pour notre projet Final de 133 CPE à Cal Poly, San Luis Obispo, nous avons construit une Etch-a-Sketch à l'aide de VHDL sur le plateau de nexys 3 Diligant. Une planche nexys 3 qui peut construire des circuits de logique sans se soucier des interfaces
Informatisé de Etch a Sketch

Informatisé de Etch a Sketch

lorsque les seigneurs de robot prennent en charge, ils auront besoin pour utiliser nos etch-a-sketches. Voici comment faire un ordinateur attirer l'art vectoriel en utilisant votre jouet d'enfance préférés.** Que je traverse et un tas de vieux instru
Etch-i-Sketch

Etch-i-Sketch

« Nous ne pouvons pas rivaliser avec qui! »--Steve Jobs('s doppleganger)« « Zune » ?  Ce que nous avons pensé ?  C'est ce que nous avons besoin. "--Bill Gates('s likely thoughts)« Mais qui ont besoin d'une source d'alimentation de ruines le point...
Comment faire pour définir A Permanent Etch A Sketch (comme les Pros)

Comment faire pour définir A Permanent Etch A Sketch (comme les Pros)

As an Sketchist Etch A moi-même, je pense que le pire que n'importe quel artiste EAS peut faire pour eux-mêmes doit obtenir trop attaché à l'un de leurs « ouvrages de croquis ». J'ai vu cela arriver avant et artistes ont devenu fous d'essayer de prot