Étape 6: Le code que j’ai utilisé
/ * ### # Arduino POV pour 5 LEDs # ### Circuit: 5 LEDs chaque caractère est donné un 5 x 5 grille pour le représenter est auto, par exemple, « H » est O O O O OOOOO O O O O chacune de ces lignes verticales est issu d’un seul numéro pour le « H » exemple les nombres sont 16 31,4,4,4,31 O O 8 O O 4 OOOOO 2 O O 1 O O 31 est de 16 + 8 + 4 + 2 + 1 (tous les voyants sont allumés) 4 est 0 + 0 + 4 + 0 + 0 (seulement le milieu dirigé allumé) / / 7/13 - a commencé avec l’infortuné projet / / 11/13 V4 - neede changer fron octets de char pour la course du clavier. 11/29 V5 enlever insert flans et interrupteur câblé correctement / / fonctionne assez bien pour tout message de moins de 11 caractères / / 12/2 v6 - commencer à ajouter la fonction heure / / 12/5 - v7 changé indiquant l’heure par défaut * / #define VERSION « 1.00a0 » #include / / utiliser le CCF temps #include « Wire.h » #define DS1307_ADDRESS 0x68 String stringOne = "" ; const int DataPin = 4 ; const int IRQpin = 3 ; PS2Keyboard clavier ; const int court debug = 0 ; const int court debug2 = 0 ; const int court debug3 = 0 ; const short int debug4 = 0 ; int charBreak = 1750 ; retarder le char temps int betweenColumns = 685 ; int LED1 = 6 ; int LED2 = 2 ; int DEL3 = 5 ; int LED4 = 8 ; int DEL5 = 7 ; int switchPina = 10 ; interrupteur Reed pour centrer l’affichage int ps2Power = 11 ; alimentation pour clavier / / pour le moment int second = 0, minutes = 0, heure = 0 ; l’heure de début sur 00:00:00 //needed à recv données const int totChar = 13 ; char textArray [totChar] ; int textArrayindx = 0 ; char textDsply [totChar] ; ---installation---void setup() {keyboard.begin (DataPin, IRQpin); / / clavier Wire.begin(); / / time / / Serial.begin(9600) ; if(debug) {delay(1000) ; Serial.println ("Test de clavier:");} stringOne = String("") ; pinMode (LED1, sortie) ; pinMode (LED2, sortie) ; pinMode (DEL3, sortie) ; pinMode (LED4, sortie) ; pinMode (DEL5, sortie) ; pinMode (switchPina, entrée) ; Reed switch pinMode (ps2Power, sortie) ; PS2 clavier digitalWrite (switchPina, HIGH) ; digitalWrite (ps2Power, HIGH) ; tester pour voir toutes les leds lumière digitalWrite (LED1, élevé) ; la valeur de la LED sur delay(500) ; digitalWrite (LED2, élevé) ; la valeur de la LED sur delay(500) ; digitalWrite (DEL3, élevé) ; la valeur de la LED sur delay(500) ; digitalWrite (LED4, élevé) ; la valeur de la LED sur delay(500) ; digitalWrite (DEL5, élevé) ; la valeur de la LED sur delay(500) ; } / /---/ /---boucle---void loop() {/ / l’idée est: / / par défaut sera le temps. / / si AVC clé entré, puis perturber le temps et montrer le message. Si (keyboard.available()) {/ / lire la nouvelle byte char c = keyboard.read() ; if(debug) {/ / check pour certains des touches spéciales si (c == PS2_ENTER) {Serial.print("^");} ElseIf (c == PS2_TAB) {Serial.print("[Tab]");} ElseIf (c == PS2_ESC) {Serial.print("[ESC]");} ElseIf (c == PS2_PAGEDOWN) {Serial.print("[PgDn]");} ElseIf (c == PS2_PAGEUP) {Serial.print("[PgUp]");} ElseIf (c == PS2_LEFTARROW) {Serial.print("[Left]");} ElseIf (c == PS2_RIGHTARROW) {Serial.print("[Right]");} ElseIf (c == PS2_UPARROW) {Serial.print("[Up]");} ElseIf (c == PS2_DOWNARROW) {Serial.print("[Down]");} else Si (c == PS2_DELETE) {Serial.print("[Del]");} else {/ / sinon, viens d’imprimer tous les caractères normaux Serial.print(c);}} Delay(10) ; empêche une écrasante le port série / / if Appuyez sur la touche entrée et textarray n’est pas vide si (c == PS2_ENTER) {si (textArrayindx > = 1) {showIt();} else {showTime();}} / / get ici signifie juste une autre partie du message donc l’ajouter au tableau / / ajouter les octets entrants pour le message tableau textArray [textArrayindx] = c ; textArrayindx ++ ; } else {showTime();}} ---fonctions pour le moment seulement---/ /---void showTime() {tandis que (keyboard.available() == 0) {/ / besoin maintenant créer la chaîne à afficher au lieu d’imprimer juste au / / série stream printDate(); / / delay(1000);}} / /---octets bcdToDec(byte val) {/ / Convert décimale codée en binaire en décimal normal nombres retour ((val/16 * 10) + (val % 16));} / /---void printDate() {/ / réinitialiser le registre de pointeur Wire.beginTransmission(DS1307_ADDRESS) ; octet zéro = 0 x 00 ; Wire.Write(Zero) ; Wire.endTransmission() ; Wire.requestFrom (DS1307_ADDRESS, 7) ; int = deuxième bcdToDec(Wire.read()) ; minute d’int = bcdToDec(Wire.read()) ; int h = bcdToDec(Wire.read() & 0b111111) ; 24 heures temps int jour de la semaine = bcdToDec(Wire.read()) ; 0-6-> dimanche - samedi int monthDay = bcdToDec(Wire.read()) ; int mois = bcdToDec(Wire.read()) ; année int = bcdToDec(Wire.read()) ; if(Debug) {//print la date EG 01/03/11 23:59:59 Serial.print(month) ; Serial.Print("/") ; Serial.Print(monthday) ; Serial.Print("/") ; Serial.Print(Year) ; Serial.Print("") ; Serial.Print(Hour) ; Serial.Print(":") ; Serial.Print(minute) ; Serial.Print(":") ; Serial.println(second) ; } / / Créez la chaîne pour être displayerd / / if heure = 0 puis changer à 12 / / if greter hr à 12 puis soustraire 12 si (heure > = 13) {heure = (h - 12);} stringOne += heure ; stringOne += ":" ; stringOne += minute ; stringOne += ":" ; stringOne += deuxième ; val2 int = digitalRead(switchPina) ; Si (val2 == faible) {retard (26); / / displayString("12:34:00"); / / displayString(stringOne) ; pour (int i = 0; j’ai < = (stringOne.length()); i ++) {displayChar(stringOne[i]);}} stringOne = "";} ---fonctions du message seulement---/ /---void showIt() {si (keyboard.available() == 0) {/ / test pour voir ce que les chaînes ressemblent if(debug3) {Serial.println(textArray) ; Serial.println(textDsply) ; Delay(3000) ; } sensorTest() ; } / / get ici signifie quelque chose de pressé / / si juste saisie touche puis sur Afficher l’heure / / si rien d’autre, puis un nouveau message commence char c = keyboard.read() ; Si (c == PS2_ENTER) {clearIt() ; showTime();} else {clearIt() ; textArray [textArrayindx] = c; textArrayindx ++;}} ---void sensorTest() {int val = digitalRead(switchPina) ; if (val == faible) {/ / besoin de retarder la fonction de taille de message int numberBlanks = (totChar - textArrayindx) / 2; if(debug) {delay(1000) ; Serial.println(numberBlanks) ; } Si (numberBlanks < = 1) {retard (12);} ElseIf (numberBlanks == 2) {retard (26);} else if (numberBlanks == 3) {retard (30);} ElseIf (numberBlanks == 4) {retard (35);} ElseIf (numberBlanks == 5) {retard (40);} ElseIf (numberBlanks == 6) {retard (45);} pour (int k = 0; kdisplayChar(textArray[k]) ; }}} / /---void clearIt() {/ / get ici signifie un autre flux a commencé / / donc besoin de vider les textArray et recommencer / / boucle à travers le tableau et remplacer les caractères / / et réinitialiser le numéro d’index de (int z = 0; z
(textDsply [z] = ' ') ; (textArray [z] = ' ') ; textArrayindx = 0 ; }} int a [] = {1, 6, 26, 6, 1} ; int b [] = {31, 21, 21, 10, 0} ; int c2 [] = {14, 17, 17, 10, 0} ; int [] d = {31, 17, 17, 14, 0} ; int e [] = {31, 21, 21, 17, 0} ; int f [] = {31, 20, 20, 16, 0} ; int g [] = {14, 17, 19, 10, 0} ; int [h] = {31, 4, 4, 4, 31} ; int i [] = {0, 17, 31, 17, 0} ; int j [] = {0, 17, 30, 16, 0} ; int k [] = {31, 4, 10, 17, 0} ; int l [] = {31, 1, 1, 1, 0} ; int m [] = {31, 12, 3, 12, 31} ; int [] n = {31, 12, 3, 31, 0} ; int, [o] = {14, 17, 17, 14, 0} ; int p [] = {31, 20, 20, 8, 0} ; int q [] = {14, 17, 19, 14, 2} ; int r [] = {31, 20, 22, 9, 0} ; int s [] = {8, 21, 21, 2, 0} ; int t [] = {16, 16, 31, 16, 16} ; int u [] = {30, 1, 1, 30, 0} ; int v [] = {24, 6, 1, 6, 24} ; int [w] = {28, 3, 12, 3, 28} ; int x[] = {17, 10, 4, 10, 17} ; int y [] = {17, 10, 4, 8, 16} ; int z [] = {19, 21, 21, 25, 0} ; les numéros int n1 [] = {0, 0, 31, 0, 0} ; int n2 [] = {17, 19, 21, 25, 0} ; int n3 [] = {0, 17, 21, 21, 31} ; int n4 [] = {28, 4, 4, 31, 0} ; int n5 [] = {0, 29, 21, 21, 23} ; int n6 [] = {31, 5, 5, 7, 0} ; int n7 [] = {0, 16, 16, 16,31} ; int n8 [] = {0, 31, 21, 21, 31} ; int n9 [] = {0, 28,20, 20,31} ; int n0 [] = {0,31,17, 17,31} ; int eos [] = {0, 1, 0, 0, 0} ; int excl [] = {0, 29, 0, 0, 0} ; int ques [] = {8, 19, 20, 8, 0} ; int equ [] = {0, 10,10,10,0} ; int du côlon [] = {0,10,0} ; void displayLine (int ligne) {int myline ; myline = ligne ; if (myline > = 16) {digitalWrite (LED1, élevé); myline-= 16;} else {digitalWrite (LED1, LOW);} si (myline > = 8) {digitalWrite (LED2, élevé); myline-= 8;} else {digitalWrite (LED2, LOW);} si (myline > = 4) {digitalWrite (DEL3, élevé); myline-= 4;} else {digitalWrite (DEL3, LOW);} si (myline > = 2) {digitalWrite (LED4, élevé); myline-= 2;} else {digitalWrite (LED4, LOW);} si (myline > = 1) {digitalWrite (DEL5 ÉLEVÉ) ; myLine-= 1;} else {digitalWrite (DEL5, LOW);}} void displayChar (char c) {si (c == « a ») {pour (int i = 0; j’ai < 5; i ++) {displayLine (un [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « b ») {pour (int i = 0; j’ai < 5; i ++) {displayLine (b [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « c ») {pour (int i = 0; i < 5; i ++) {displayLine (c2 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == avait ') {pour (int i = 0; j’ai < 5; i ++) {displayLine (d [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « e ») {pour (int i = 0; i < 5; i ++) {displayLine (e [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « f ») {pour (int i = 0; j’ai < 5; i ++) {displayLine (f [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « g ») {pour (int i = 0; j’ai < 5; i ++) {displayLine (g [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « h ») {pour (int i = 0; j’ai < 5; i ++) {displayLine (h [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « i ») {pour (int il = 0; il < 5; TI ++) {displayLine (i [it]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « j ») {pour (int i = 0; j’ai < 5; i ++) {displayLine (j [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « k ») {pour (int i = 0; i < 5; i ++) {displayLine (k [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « l ») {pour (int i = 0; j’ai < 5; i ++) {displayLine (l [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == suis ') {pour (int i = 0; j’ai < 5; i ++) {displayLine (m [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == ' ne) {pour (int i = 0; i < 5; i ++) {displayLine (n [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « o ») {pour (int i = 0; i < 5; i ++) {displayLine (o [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « p ») {pour (int i = 0; i < 5; i ++) {displayLine (p [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « q ») {pour (int i = 0; i < 5; i ++) {displayLine (q [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « r ») {pour (int i = 0; i < 5; i ++) {displayLine (r [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == de ') {pour (int i = 0; j’ai < 5; i ++) {displayLine (s [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c ' t ==') {pour (int i = 0; j’ai < 5; i ++) {displayLine (t [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « u ») {pour (int i = 0; i < 5; i ++) {displayLine (u [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « v ») {pour (int i = 0; i < 5; i ++) {displayLine (v [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « w ») {pour (int i = 0; j’ai < 5; i ++) {displayLine (w [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « x ») {pour (int i = 0; i < 5; i ++) {displayLine (x [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « y ») {pour (int i = 0; j’ai < 5; i ++) {displayLine (y [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « z ») {pour (int i = 0; i < 5; i ++) {displayLine (z [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == '!') {pour (int i = 0; i < 5; i ++) {displayLine (excl [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == '?') {pour (int i = 0; i < 5; i ++) {displayLine (ques [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == '.') {pour (int i = 0; i < 5; i ++) {displayLine (eos [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « = ») {pour (int i = 0; i < 5; i ++) {displayLine (equ [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == ':') {pour (int i = 0; j’ai < 3; i ++) {displayLine (côlon [i]); delayMicroseconds (betweenColumns);} displayLine(0);} numéros si (c == « 1 ») {pour (int i = 0; i < 5; i ++) {displayLine (n1 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « 2 ») {pour (int i = 0; i < 5; i ++) {displayLine (n2 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « 3 ») {pour (int i = 0; i < 5; i ++) {displayLine (n3 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « 4 ») {pour (int i = 0; i < 5; i ++) {displayLine (n4 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « 5 ») {pour (int i = 0; i < 5; i ++) {displayLine (n5 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « 6 ») {pour (int i = 0; i < 5; i ++) {displayLine (n6 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « 7 ») {pour (int i = 0; i < 5; i ++) {displayLine (n7 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « 8 ») {pour (int i = 0; i < 5; i ++) {displayLine (n8 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « 9 ») {pour (int i = 0; i < 5; i ++) {displayLine (n9 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == « 0 ») {pour (int i = 0; i < 5; i ++) {displayLine (n0 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} delayMicroseconds(charBreak) ; }