POV klok & bericht weergeven w/RTC en PS/2-toetsenbord (6 / 7 stap)

Stap 6: De code die ik gebruikt

/ * ### # Arduino POV voor 5 LEDs # ### Circuit: 5 LEDs elk teken wordt gegeven een 5 x 5 raster om haar te vertegenwoordigen is zelf bijvoorbeeld "H" is O O O O OOOOO O O O O elk van deze verticale lijnen uit een enkel getal voor de "H bestaat" voorbeeld de nummers zijn 31,4,4,4,31 16 O O 8 O O 4 OOOOO 2 O O 1 O O 31 is 16 + 8 + 4 + 2 + 1 (alle leds verlicht) 4 is 0 + 0 + 4 + 0 + 0 (alleen het midden led brandt) / / 7/13 - begonnen met zieke fated project / / 11/13 V4 - neede overstappen fron byte op char voor de toetsenbord-streek. 11/29 V5 verwijderen invoegen spaties en bedrade schakelaar correct / / werkt vrij goed voor om het even welk bericht minder dan 11 tekens / / 12/2 v6 - beginnen met het toevoegen van de functie time / / 12/5 - v7 veranderd met de tijd als een standaard * / #define versie "1.00a0" #include / / gebruiken de RTC tijd #include "Wire.h" #define DS1307_ADDRESS 0x68 String stringOne = ""; Const int DataPin = 4; Const int IRQpin = 3; PS2Keyboard toetsenbord; Const korte int debug = 0; Const korte int debug2 = 0; Const korte int debug3 = 0; Const korte int debug4 = 0; int charBreak = 1750; char vertragen tijd int betweenColumns = 685; int LED1 = 6; int LED2 = 2; int LED3 = 5; int LED4 = 8; int LED5 = 7; int switchPina = 10; reed switch rietschakelaar naar het midden van de weergave int ps2Power = 11; vermogen voor keyboard / / voor de int keer tweede = 0, minuten = 0, uur = 0; de begintijd op 00:00:00 //needed aan recv gegevens const int totChar = 13; char textArray [totChar]; int textArrayindx = 0; char textDsply [totChar]; ---setup---void setup {keyboard.begin (DataPin, IRQpin); / / toetsenbord Wire.begin(); / / tijd / / Serial.begin(9600); if(debug) {delay(1000); Serial.println ("Test toetsenbord:");} stringOne = String(""); pinMode (LED1, uitvoer); pinMode (LED2, uitvoer); pinMode (LED3, uitvoer); pinMode (LED4, uitvoer); pinMode (LED5, uitvoer); pinMode (switchPina, INPUT); reed switch pinMode (ps2Power, OUTPUT); PS2 toetsenbord digitalWrite (switchPina, hoge); digitalWrite (ps2Power, hoge); testen om te zien alle leds licht digitalWrite (LED1, hoge); instellen van de LED op delay(500); digitalWrite (LED2, hoge); instellen van de LED op delay(500); digitalWrite (LED3, hoge); instellen van de LED op delay(500); digitalWrite (LED4, hoge); instellen van de LED op delay(500); digitalWrite (LED5, hoge); instellen van de LED op delay(500); } / /---/ /---loop---void loop {/ / idee is: / / standaard zal worden de tijd / / als belangrijkste lijn ingevoerd, dan tijd verstoren en bericht weergeven. Als (keyboard.available()) {/ / Lees de inkomende byte char c = keyboard.read(); if(debug) {/ / check voor een aantal van de speciale toetsen als (c == PS2_ENTER) {Serial.print("^");} anders als (c == PS2_TAB) {Serial.print("[Tab]");} anders als (c == PS2_ESC) {Serial.print("[ESC]");} anders als (c == PS2_PAGEDOWN) {Serial.print("[PgDn]")}; anders als (c == PS2_PAGEUP) {Serial.print("[PgUp]");} anders als (c == PS2_LEFTARROW) {Serial.print("[Left]");} anders als (c == PS2_RIGHTARROW) {Serial.print("[Right]");} anders als (c == PS2_UPARROW) {Serial.print("[Up]")}; anders als (c == PS2_DOWNARROW) {Serial.print("[Down]");} anders Als (c == PS2_DELETE) {Serial.print("[Del]");} else {/ / anders gewoon afdrukken alle normale tekens Serial.print(c);}} delay(10); voorkomt dat overweldigend de seriële poort / / als treffer naar de steken toonsoort en textarray is niet leeg als (c == PS2_ENTER) {als (textArrayindx > = 1) {showIt();} else {showTime();}} / / get hier middelen gewoon een ander deel van het bericht zo toe te voegen aan de array / / inkomende byte toevoegen aan het bericht matrix textArray [textArrayindx] = c; textArrayindx ++; } else {showTime();}} ---functies voor alleen de tijd---/ /---void showTime() {terwijl (keyboard.available() == 0) {/ / nu wilt maken van de tekenreeks die wordt weergegeven in plaats van alleen afdrukken op de / / serieel stream printDate(); / / delay(1000);}} / /---byte bcdToDec(byte val) {/ / Convert binary coded decimal naar gewone decimale getallen terugkeer ((val/16 * 10) + (val % 16));} / /---void printDate() {/ / Reset de aanwijzer register Wire.beginTransmission(DS1307_ADDRESS); byte nul = 0x00; Wire.write(Zero); Wire.endTransmission(); Wire.requestFrom (DS1307_ADDRESS, 7); int tweede = bcdToDec(Wire.read()); int minuut = bcdToDec(Wire.read()); int uur = bcdToDec(Wire.read() & 0b111111); 24 uur tijd int weekdag = bcdToDec(Wire.read()); 0-6-> zondag - zaterdag int monthDay = bcdToDec(Wire.read()); int maand = bcdToDec(Wire.read()); int. jaar = bcdToDec(Wire.read()); if(debug) {//print de datum EG 3/1/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); } / / create de tekenreeks worden van displayerd / / als uur = 0 dan overstappen op 12 / / als hr greter dan 12 dan 12 aftrekken als (uur > = 13) {uur = (uur - 12);} stringOne += uur; stringOne += ":"; stringOne += minuut; stringOne += ":"; stringOne += tweede; int val2 = digitalRead(switchPina); Als (val2 == LOW) {vertraging (26); / / displayString("12:34:00"); / / displayString(stringOne); voor (int i = 0; ik < = (stringOne.length()); i ++) {displayChar(stringOne[i]);}} stringOne = "";} ---functies voor het bericht alleen---/ /---void showIt() {terwijl (keyboard.available() == 0) {/ / test om te zien hoe de snaren eruit ziet if(debug3) {Serial.println(textArray); Serial.println(textDsply); delay(3000); } sensorTest(); } / / get hier betekent iets gedrukt / / als gewoon enter sleutel dan tijd weergeven / / als iets anders dan een nieuw bericht begint char c = keyboard.read(); Als (c == PS2_ENTER) {clearIt(); showTime();} else {clearIt(), textArray [textArrayindx] = c; textArrayindx ++;}} ---void sensorTest() {int val = digitalRead(switchPina); als (val == LOW) {/ / wilt uitstellen op basis van grootte van bericht int. numberBlanks = (totChar - textArrayindx) / 2; if(debug) {delay(1000); Serial.println(numberBlanks); } Als (numberBlanks < = 1) {vertraging (12);} anders als (numberBlanks == 2) {vertraging (26);} else if (numberBlanks == 3) {vertraging (30);} else if (numberBlanks == 4) {vertraging (35);} else if (numberBlanks == 5) {vertraging (40);} else if (numberBlanks == 6) {vertraging (45);} voor (int k = 0; k

displayChar(textArray[k]); }}} / /---void clearIt() {/ / get hier betekent is begonnen met een andere stroom / / moeten dus leeg textArray en herbegin / / lus via de array en vervang de tekens / / en reset het indexnummer voor (int z = 0; z

(textDsply [z] = ' '); (textArray [z] = ' '); textArrayindx = 0; }} int een [] = {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 ik [] = {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 [] = {1, 1, 30, 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}; getallen 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 vragen [] = {8, 19, 20, 8, 0}; int equ [] = {0, 10,10,10,0}; int dubbele punt [] = {0,10,0}; VOID displayLine (int lijn) {int myline; myline = lijn; als (myline > = 16) {digitalWrite (LED1, hoge); myline-= 16;} else {digitalWrite (LED1, laag);} als (myline > = 8) {digitalWrite (LED2, hoge); myline-= 8;} anders {digitalWrite (LED2, laag);} als (myline > = 4) {digitalWrite (LED3, hoge); myline-= 4;} anders {digitalWrite (LED3, laag);} als (myline > = 2) {digitalWrite (LED4, hoge); myline-= 2;} else {digitalWrite (LED4, laag);} als (myline > = 1) {digitalWrite (LED5 HOGE); myline-= 1;} else {digitalWrite (LED5, laag);}} VOID displayChar (char c) {als (c == 'a') {voor (int i = 0; ik < 5; i ++) {displayLine (een [i]); delayMicroseconds (betweenColumns) ;} displayLine(0);} Als (c == 'b') {voor (int i = 0; ik < 5; i ++) {displayLine (b [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 'c') {voor (int i = 0; ik < 5; i ++) {displayLine (c2 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == had') {voor (int i = 0; ik < 5; i ++) {displayLine (d [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == "e") {voor (int i = 0; ik < 5; i ++) {displayLine (e [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 'f') {voor (int i = 0; ik < 5; i ++) {displayLine (f [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 'g') {voor (int i = 0; ik < 5; i ++) {displayLine (g [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 'h') {voor (int i = 0; ik < 5; i ++) {displayLine (h [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 'i') {voor (int het = 0; het < 5; it ++) {displayLine (i [it]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 'j') {voor (int i = 0; ik < 5; i ++) {displayLine (j [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 'k') {voor (int i = 0; ik < 5; i ++) {displayLine (k [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 'l') {voor (int i = 0; ik < 5; i ++) {displayLine (l [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == ben ') {for (int i = 0; ik < 5; i ++) {displayLine (m [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 'n') {for (int i = 0; ik < 5; i ++) {displayLine (n [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 'o') {voor (int i = 0; ik < 5; i ++) {displayLine (o [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 'p') {voor (int i = 0; ik < 5; i ++) {displayLine (p [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 'q') {voor (int i = 0; ik < 5; i ++) {displayLine (q [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 'r') {voor (int i = 0; ik < 5; i ++) {displayLine (r [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == de ') {voor (int i = 0; ik < 5; i ++) {displayLine (s [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 't') {voor (int i = 0; ik < 5; i ++) {displayLine (t [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 'u') {voor (int i = 0; ik < 5; i ++) {displayLine (u [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == "v") {voor (int i = 0; ik < 5; i ++) {displayLine (v [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 'w') {voor (int i = 0; ik < 5; i ++) {displayLine (w [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 'x') {for (int i = 0; ik < 5; i ++) {displayLine (x [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c 'y' ==) {voor (int i = 0; ik < 5; i ++) {displayLine (y [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == 'z') {voor (int i = 0; ik < 5; i ++) {displayLine (z [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == '!') {for (int i = 0; ik < 5; i ++) {displayLine (excl [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == '?') {for (int i = 0; ik < 5; i ++) {displayLine (vragen [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == '.') {for (int i = 0; ik < 5; i ++) {displayLine (eos [i]); delayMicroseconds (betweenColumns) ;} displayLine(0);} Als (c == '=') {for (int i = 0; ik < 5; i ++) {displayLine (equ [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == ':') {voor (int i = 0; ik < 3; i ++) {displayLine (dikke darm [i]); delayMicroseconds (betweenColumns);} displayLine(0);} getallen als (c == '1') {voor (int i = 0; ik < 5; i ++) {displayLine (n1 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == '2') {voor (int i = 0; ik < 5; i ++) {displayLine (n2 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == '3') {voor (int i = 0; ik < 5; i ++) {displayLine (n3 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == '4') {voor (int i = 0; ik < 5; i ++) {displayLine (n4 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == '5') {voor (int i = 0; ik < 5; i ++) {displayLine (n5 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == "6") {voor (int i = 0; ik < 5; i ++) {displayLine (n6 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c '7' ==) {voor (int i = 0; ik < 5; i ++) {displayLine (n7 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == '8') {voor (int i = 0; ik < 5; i ++) {displayLine (n8 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == '9') {voor (int i = 0; ik < 5; i ++) {displayLine (n9 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Als (c == '0') {voor (int i = 0; ik < 5; i ++) {displayLine (n0 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} delayMicroseconds(charBreak); }

Gerelateerde Artikelen

Arduino analoge Hard Drive POV klok

Arduino analoge Hard Drive POV klok

dit werk is gebaseerd op het werk van twee andere personen die uitstekend werk heeft van de weg vrijmaakt voor mijn project.Auteur: vishnubobZijn werk was gebaseerd uit Ian Smiths versie van hetzelfde type klok.http://www.Ian.org/HD-Clock/Met behulp
POV klok $

POV klok $

POV klok PIC16F84A via 5VOLTS
Kleurrijke bericht weergeven In beperkte middelen

Kleurrijke bericht weergeven In beperkte middelen

In vele projecten van de MCU zijn er een grote uitdaging op een menselijk leesbaar bericht weergeven.Deze Instructables demonstreren hoe met een zeer beperkte middelen (1 KB ROM, 64 Bytes RAM en 60 LEDs) een kleurrijke bericht weergeven.Stap 1: Wat i
Volledige digitale klok met aanwezigheid Sensor (RTC - Alarm - PIR - temperatuur - vochtigheid - dauwpunt)

Volledige digitale klok met aanwezigheid Sensor (RTC - Alarm - PIR - temperatuur - vochtigheid - dauwpunt)

HoiIk heb al enkele digitale klokken projecten gedaan met Arduino met inbegrip van LED en LCD schermen, maar deze is specialer omdat ik hebben een nieuwe functie ingevoerd met een bewegingssensor (PIR).Zie VIDEOBelangrijkste kenmerkenPIR (aanwezighei
Bouwen van een netwerk-klok (NCLK) met Microduino-RTC

Bouwen van een netwerk-klok (NCLK) met Microduino-RTC

de oplosmethode voor kloksynchronisatie via internet. door PKJ,De web−based klok managementsysteem kunt u controleren klok status van waar ze zijn en Centraal instellingen te wijzigen. en dit kleine apparaat is gebouwd met PoE-technologie, dus IP-klo
LED klok 7-Seg, DS1307 RTC, toetsenbord 4 x 4 Controller

LED klok 7-Seg, DS1307 RTC, toetsenbord 4 x 4 Controller

Stap 1: Circuit Stap 2: vastleggen Stap 3: Simulator &. Hex bestandStap 4: PCB-LayoutOpmerking:-1 AT89S52 of AT89C52 - 4 IC 74HC573 - 1 CMOS baterry - 1 DS1307 - 4 LED 7seg 4digit - 8 A1013 - 1 Respack 8 - Crystal 12MHz - 2 CONDENSATOR 33pF - 2 conde
Gerecycled harde schijf klok - FuneLab

Gerecycled harde schijf klok - FuneLab

Hallo iedereen!Dit is mijn vijfde project op Instructables & dankzij iedereen graag dit.Hebt u een kapotte harde schijf? Je zou hem in de prullenmand of op Ebay te verkopen voor een paar dollar? Oh neen!Maak je klaar om te zetten van uw gecrashte har
Klok van de harde schijf (HDD klok met Arduino Uno)

Klok van de harde schijf (HDD klok met Arduino Uno)

Dit is een leuke project dat kan voordelig ook. In dit instructable zullen we uitleggen stap voor stap hoe te maken van deze mooie POV klok.Gebruikt materiaal:Arduino Uno,Tiny RTC modul,ULN 2003,IR diode en transistor van IR (gebruikt als een sensor,
3D POV Clock from a HDD

3D POV Clock from a HDD

In dit Instructable gaan we een oude harde schijf converteren naar een 3D persistentie van de klok van de visie.POV klokken is een eenvoudige methode tijd wilt weergeven in een echt nette manier. Een POV klok draait een aantal LEDs echt snel, in het
Houten Gear klok met Stepper Motor rijden

Houten Gear klok met Stepper Motor rijden

Nog een andere klok met houten versnellingen. Dit ontwerp is geïnspireerd op DickB1 de Instructable (zie afbeelding hier onderaan).Echter, in plaats van rijden de klok met een magnetisch gepulseerde slinger, gebruikte ik een kleine stappenmotor.Eerst
Pong klok met geval

Pong klok met geval

Deze klok maakt gebruik van het klassieke videospel Pong de tijd te vertellen.De 2 spelers automatisch winnen en verliezen zodat hun scores hoeveel uren en minuten tonen.Dit is MrNick1234567 Pong klok ontwerp en dit Instructable toont hoe het passen
Propeller klok

Propeller klok

Hallo vrienden,nu de propeller klok beschikbaar maken met behulp van 8051 controller familie.De 8051 controller wordt meestal gebruikt in school project, zodat u kunt uw eigen propeller met 8051,borstel de levering voor deze schroef u vereist 1200 RP
HDD klok - persistentie van de visie

HDD klok - persistentie van de visie

1. een flink POV klokken die er zijn, waarom is dit speciale?Nou, vooral omdat het is de mijne. Er zijn een flink aantal POV klokken die er op het web met behulp van allerlei display mechanismen, chassis, controllers. Enerzijds die heb ik besloten om
POV met behulp van de Arduino Nano

POV met behulp van de Arduino Nano

Hoi allemaalIk was onder de indruk van twee artikelen over Instructables.com Magic-POV-Wand-yet-another-POV-toy en persistentie-van-visie-Wand. Zij hebben uitgelegd in groot detail, om te bouwen van een LED POV en meestal een naam of een bericht weer