POV klocka & meddelande Visa w/RTC och PS/2 tangentbord (6 / 7 steg)

Steg 6: Koden jag använde


/ * ### # Arduino POV för 5 lysdioder # ### krets: 5 lysdioder varje tecken ges en 5 x 5 rutnät för att representera den sig själv till exempel "H" är O O O O OOOOO O O O O vart och ett av dessa vertikala linjer är gjord av ett enda nummer för "H" exempel siffrorna är 31,4,4,4,31 16 O O 8 O O 4 OOOOO 2 O O 1 O O 31 är 16 + 8 + 4 + 2 + 1 (alla LED lyser) 4 är 0 + 0 + 4 + 0 + 0 (endast mitten led lyser) / / 7/13 - började med olycksalige projekt / / 11/13 V4 - neede att ändra fron byte till röding för tangentbord stroke. 11/29 V5 bort infoga tomma celler och trådbunden switch korrekt / / fungerar ganska bra för någon meddelande mindre än 11 tecken / / 12/2 v6 - börja att lägga till tidsfunktion / / 12/5 - v7 förändrats visar tid som standard * / #define VERSION "1.00a0" #include / / använda RTC tid #include "Wire.h" #define DS1307_ADDRESS 0x68 String stringOne = ""; CONST int DataPin = 4; CONST int IRQpin = 3; PS2Keyboard tangentbord; CONST kort int debug = 0; CONST kort int debug2 = 0; CONST kort int debug3 = 0; CONST kort int debug4 = 0; int charBreak = 1750; char fördröja tiden int betweenColumns = 685; int LED1 = 6; int LED2 = 2; int LED3 = 5; int LED4 = 8; int LED5 = 7. int switchPina = 10; Reed switch att centrera display int ps2Power = 11; Power för tangentbord / för tiden int näst = 0, minut = 0, timme = 0; starttid på 00:00:00 //needed att ta emot data const int totChar = 13. char textArray [totChar]; int textArrayindx = 0; char textDsply [totChar]; ---setup---void setup() {keyboard.begin (DataPin, IRQpin); / / tangentbord Wire.begin(); / / tid / / Serial.begin(9600), if(debug) {delay(1000); Serial.println ("tangentbord Test:");} stringOne = String(""); pinMode (LED1, OUTPUT); pinMode (LED2, OUTPUT); pinMode (LED3, OUTPUT); pinMode (LED4, OUTPUT); pinMode (LED5, OUTPUT); pinMode (switchPina, ingång); Reed switch pinMode (ps2Power, produktionen); PS2 Tangentbord digitalWrite (switchPina, hög); digitalWrite (ps2Power, hög); testa för att se alla lysdioder ljus digitalWrite (LED1, hög); Set LED på delay(500); digitalWrite (LED2, hög); Set LED på delay(500); digitalWrite (LED3, hög); Set LED på delay(500); digitalWrite (LED4, hög); Set LED på delay(500); digitalWrite (LED5, hög); Set LED på delay(500); } / /---/ /---slinga---void loop() {/ / idén är: / / standard kommer att vara i tid. / / om tangentnedslag, sedan störa tid och Visa meddelande. om (keyboard.available()) {/ / läsa inkommande byte char c = keyboard.read(); if(debug) {/ / kontrollera om några av de speciella tangenterna om (c == PS2_ENTER) {Serial.print("^");} else om (c == PS2_TAB) {Serial.print("[Tab]");} annars om (c == PS2_ESC) {Serial.print("[ESC]");} else om (c == PS2_PAGEDOWN) {Serial.print("[PgDn]");} annars om (c == PS2_PAGEUP) {Serial.print("[PgUp]");} annars om (c == PS2_LEFTARROW) {Serial.print("[Left]");} annars om (c == PS2_RIGHTARROW) {Serial.print("[Right]");} annars om (c == PS2_UPARROW) {Serial.print("[Up]");} annars om (c == PS2_DOWNARROW) {Serial.print("[Down]");} annat om (c == PS2_DELETE) {Serial.print("[Del]");} annat {/ / annars, bara Skriv ut alla vanliga tecken Serial.print(c);}} Delay(10); förhindrar överväldigande den seriella porten / / om tryck på Enter och textarray inte är tom om (c == PS2_ENTER) {om (textArrayindx > = 1) {showIt();} annat {showTime();}} / / få här innebär bara en del av meddelandet så Lägg det till matrisen / / Lägg till inkommande byte till meddelande array textArray [textArrayindx] = c; textArrayindx ++; {} annat {showTime();}} ---funktioner för tiden bara---/ /---void showTime() {medan (keyboard.available() == 0) {/ / nu måste skapa strängen ska visas i stället för att bara skriva ut till den / / seriell ström printDate(); / / delay(1000);}} / /---byte bcdToDec(byte val) {/ / konvertera binary coded decimal till normala decimal nummer tillbaka ((val/16 * 10) + (val % 16));} / /---void printDate() {/ / Reset register pekaren Wire.beginTransmission(DS1307_ADDRESS); byte noll = 0x00; Wire.write(Zero); Wire.endTransmission(); Wire.requestFrom (DS1307_ADDRESS, 7); int näst = bcdToDec(Wire.read()); int minut = bcdToDec(Wire.read()); int timme = bcdToDec(Wire.read() & 0b111111); 24 timmars tid int vardag = bcdToDec(Wire.read()); 0-6-> söndag - lördag int monthDay = bcdToDec(Wire.read()); int månad = bcdToDec(Wire.read()); int år = bcdToDec(Wire.read()); IF(debug) {//print dag 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); } / / skapa strängen för att vara displayerd / / om timme = 0 då ändra till 12 / / om hr greter än 12 subtrahera sedan 12 om (timme > = 13) {timme = (timme - 12);} stringOne += timme; stringOne += ":"; stringOne += minut. stringOne += ":"; stringOne += andra; int värde2 = digitalRead(switchPina); om (värde2 == låg) {fördröjning (26). / / displayString("12:34:00"); / / displayString(stringOne); för (int jag = 0; jag < = (stringOne.length()); i ++) {displayChar(stringOne[i]);}} stringOne = "";} ---funktioner för meddelandet endast---/ /---void showIt() {medan (keyboard.available() == 0) {/ / test för att se hur strängarna ser ut if(debug3) {Serial.println(textArray); Serial.println(textDsply); Delay(3000); } sensorTest(); } / / få här betyder något tryckte / / om bara anger du nyckeln och sedan Visa tid / om något annat då ett nytt meddelande börjar char c = keyboard.read(); om (c == PS2_ENTER) {clearIt(); showTime();} annat {clearIt(); textArray [textArrayindx] = c; textArrayindx ++;}} ---void sensorTest() {int val = digitalRead(switchPina); om (val == låg) {/ / behöver fördröja baserat på storleken på meddelandet int numberBlanks = (totChar - textArrayindx) / 2, if(debug) {delay(1000); Serial.println(numberBlanks); } om (numberBlanks < = 1) {dröjsmål 12.} annars om (numberBlanks == 2) {fördröjning (26);} else om (numberBlanks == 3) {fördröjning (30);} annat if (numberBlanks == 4) {fördröjning (35);} annat if (numberBlanks == 5) {fördröjning (40);} annat if (numberBlanks == 6) {fördröjning (45);} för (int k = 0; k

displayChar(textArray[k]); {}}} / /---void clearIt() {/ / få här innebär en annan ström har startat / / så behöver tömma textArray och börja om / / loop genom matrisen och ersätta tecken / / och återställa indexnumret för (int z = 0; z

(textDsply [z] = ' "); (textArray [z] = ' "); textArrayindx = 0; {}} int en [] = {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 jag [] = {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}; nummer 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 exkl [] = {0, 29, 0, 0, 0}; int frå [] = {8, 19, 20, 8, 0}; int equ [] = {0, 10,10,10,0}; int kolon [] = {0,10,0}; void displayLine (int linje) {int Linnea; Linnea = linje; om (Linnea > = 16) {digitalWrite (LED1, hög), Linnea-= 16.} annat {digitalWrite (LED1, låg);} om (Linnea > = 8) {digitalWrite (LED2, hög), Linnea-= 8.} annat {digitalWrite (LED2, låg);} om (Linnea > = 4) {digitalWrite (LED3, hög); Linnea-= 4.} annat {digitalWrite (LED3, låg);} om (Linnea > = 2) {digitalWrite (LED4, hög), Linnea-= 2;} annat {digitalWrite (LED4, låg);} om (Linnea > = 1) {digitalWrite (LED5 HÖG); Linnea-= 1.} annat {digitalWrite (LED5, låg);}} void displayChar (char c) {om (c == "a") {för (int jag = 0; jag < 5; i ++) {displayLine (en [i]), delayMicroseconds (betweenColumns) ;} displayLine(0);} om (c == 'b') {för (int jag = 0; jag < 5; i ++) {displayLine b [i], delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "c") {för (int jag = 0; jag < 5; i ++) {displayLine (c2 [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == hade ") {för (int jag = 0; jag < 5; i ++) {displayLine d [i], delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "e") {för (int jag = 0; jag < 5; i ++) {displayLine e [i], delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "f") {för (int jag = 0; jag < 5; i ++) {displayLine f [i]; delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "g") {för (int jag = 0; jag < 5; i ++) {displayLine (g [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "h") {för (int jag = 0; jag < 5; i ++) {displayLine (h [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "i") {för (int det = 0; det < 5; it ++) {displayLine i [it], delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "j") {för (int jag = 0; jag < 5; i ++) {displayLine (j [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "k") {för (int jag = 0; jag < 5; i ++) {displayLine (k [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "l") {för (int jag = 0; jag < 5; i ++) {displayLine (l [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == är ") {för (int jag = 0; jag < 5; i ++) {displayLine (m [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == 'n') {för (int jag = 0; jag < 5; i ++) {displayLine (n [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "o") {för (int jag = 0; jag < 5; i ++) {displayLine (o [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "p") {för (int jag = 0; jag < 5; i ++) {displayLine (p [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "q") {för (int jag = 0; jag < 5; i ++) {displayLine (q [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "r") {för (int jag = 0; jag < 5; i ++) {displayLine (r [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == 's ") {för (int jag = 0; jag < 5; i ++) {displayLine s [i]; delayMicroseconds (betweenColumns);} displayLine(0);} om (c == 't') {för (int jag = 0; jag < 5; i ++) {displayLine t [i], delayMicroseconds (betweenColumns);} displayLine(0);} om (c == 'u') {för (int jag = 0; jag < 5; i ++) {displayLine (u [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "v") {för (int jag = 0; jag < 5; i ++) {displayLine (v [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "w") {för (int jag = 0; jag < 5; i ++) {displayLine (w [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "x") {för (int jag = 0; jag < 5; i ++) {displayLine (x [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "y") {för (int jag = 0; jag < 5; i ++) {displayLine (y [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "z") {för (int jag = 0; jag < 5; i ++) {displayLine (z [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == '!') {för (int jag = 0; jag < 5; i ++) {displayLine (exkl [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "?') {för (int jag = 0; jag < 5; i ++) {displayLine (frå [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == ".") {för (int jag = 0; jag < 5; i ++) {displayLine (eos [i]), delayMicroseconds (betweenColumns) ;} displayLine(0);} om (c == '=') {för (int jag = 0; jag < 5; i ++) {displayLine (equ [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == ':') {för (int jag = 0; jag < 3; i ++) {displayLine (kolon [i]), delayMicroseconds (betweenColumns);} displayLine(0);} numrerar om (c == '1') {för (int jag = 0; jag < 5; i ++) {displayLine (n1 [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == '2') {för (int jag = 0; jag < 5; i ++) {displayLine (n2 [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == '3') {för (int jag = 0; jag < 5; i ++) {displayLine (n3 [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == '4') {för (int jag = 0; jag < 5; i ++) {displayLine (n4 [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == "5") {för (int jag = 0; jag < 5; i ++) {displayLine (n5 [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == '6') {för (int jag = 0; jag < 5; i ++) {displayLine (n6 [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == '7') {för (int jag = 0; jag < 5; i ++) {displayLine (n7 [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == '8') {för (int jag = 0; jag < 5; i ++) {displayLine (n8 [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == '9') {för (int jag = 0; jag < 5; i ++) {displayLine (n9 [i]), delayMicroseconds (betweenColumns);} displayLine(0);} om (c == '0') {för (int jag = 0; jag < 5; i ++) {displayLine (n0 [i]), delayMicroseconds (betweenColumns);} displayLine(0);} delayMicroseconds(charBreak); }

Se Steg
Relaterade Ämnen

Klocka med termometer med Arduino, i2c 16 x 2 lcd, DS1307 RTC och DHT11 sensor.

Hello! Det var ett tag jag har inte postat något på Instructables, men nu gjorde jag ett enkelt projekt som jag sett på internet i olika former. Jag lyckades bygga en kod med hjälp av andra koder som jag har hittat på internet och jag måste säga det...

LCD klocka med hebreiska kalendern daterar, och en termometer

Detta projekt är en klocka som kan visa tid, datum och temperatur. Den huvudsakliga unika funktionen av denna klocka är möjligheten att visa datum på hebreiska (judiska) kalenderformat. Vissa andra särskilda funktioner är:Du kan ställa in tid och dat...

Arduino Analog hård driva POV klocka

detta arbete baseras bort av två andra personer som gjorde ett utmärkt jobb med att bana väg för mitt projekt.Författare: vishnubobHans arbete var baserat off Ian Smiths version av samma typ av klocka.http://www.Ian.org/HD-Clock/Med hjälp av vishnubo...

POV klocka $

POV klocka med PIC16F84A genom 5VOLTS...

7 segment klocka med temperatur display [ds18b20 och 5 siffrig display]

5 siffrigt sju segment klocka med temperatur display.PIC16F877A baserade klocka1, hög precision temperatur sensor ds18b202, ds1307 RTC3, 4 växlar, lätt tid justera alternativ4, omväxlande temperatur och tid visningsmetod5, pic16f877a mikro-controller...

Fyra bokstäver Word klocka med Akafugu ordet Generator och inspirerande fraser

Detta är min version av fyra brev ord klockan, en idé som har sitt ursprung tillbaka i 1970. Klockan visar en serie av fyra - brev ord som genereras från antingen en random ord generator algoritm eller från en databas med tillhörande fyra - brev ord....

Infinity spegel klocka med mönster, datum och Chime

Detta är en oändlighet spegel realtidsklocka med datumvisning, mönster och viloläge.Micro controller är en PIC18F2550. ett billigt 8 bit mikro controller.running i PLL läge på 48MHz.Det finns också en timlön melodin spelas baserat på UM66TXXL chip.Re...

Bygga ett nätverk klocka (NCLK) med Microduino-RTC

resolvent av klocksynkronisering över internet. av PKJ,Den web−based klocka management systemet kan du övervaka klocka status från oavsett var de är och centralt ändra inställningar. och denna lilla enhet är byggd med PoE teknik, således IP klockor f...

Elektroniska säkerhetssystem med RTC och användaren definiera pin-kod

Hej killar!Detta är ett projekt som jag gjorde med hjälp av pic mikrokontroller dess en elektronisk PIN kod säkerhetssystem med realtidsklocka och användaren definiera pin Kodfunktioner, denna sida innehåller alla Detaljer för att göra en själv.DESS...

Bygga en riktig bell-slående klocka för din dator och en brandsläckare-slående klocka.

En mässing klocka, ett litet relä några saker och en riktig klocka kan slå timmarna på skrivbordet.Om detta projekt kan köras på Windows och Mac OS X också, jag idecided att installera Ubuntu Linux på en PC jag hittade i papperskorgen och jobbar på d...

Visa väder och läge med chipKIT WF32 och LabVIEW

För detta projekt, som chipKIT WF32, LabVIEW och LabVIEW MakerHub LINX används visas både nuvarande utanför temperatur i ditt område genom att trycka på en av knapparna ombord, och din nuvarande position genom att trycka på en annan ombord knapp.LINX...

Bil till Arduino meddelande: CAN-Bus sniffning och sänder med Arduino

Från Wikipedia är Controller Area Network (CAN) bussen en "fordonet buss standard syftar till att mikrokontroller och enheter att kommunicera med varandra inom ett fordon utan värddator." Dessa enheter kan också betecknas som elektroniska styren...

DIY klocka läder manschetten (klocka/armband kan tas bort och ersättas)

Har du en favorit armband eller klocka som du verkligen vill ha men...Du har någon slags kemisk reaktion med metaller?Jag hade denna fråga och jag tittade över till någon form av slip manschetten.Efter att inte hitta vad jag letade efter, beslöt jag...

Visa bokstäver och ord på oscilloskopet

"Varför du göra det här? Eftersom det är coolt och det gör mig så nörd. Och alla älskar nördar!Steg 1: Vad du behöver göra detta1 x oscilloskop med XY läge1 x skärbräda1 x Arduino eller en Fartduino eller vad du vill som har en keramisk resonator 16...

Billig och enkel fotpedal tangentbord

detta är en enkel fotpedal tangentbord jag har satt ihop resonantly.Paddlar kontrollerar en av tangenterna 1, 2, 3, 4 eller 5.Jag blev inspirerad för detta bygga av MAKEmagazine (http://www.youtube.com/watch?v=FmIGPmp31JI) där de bygger en google rea...

Smart Park använder Laser kommunikation (Intel IoT)

Med tanke på den nuvarande parkering krisen i vårt land och den nya lösningar liksom multilevel system, hjälper inte mycket. Vårt projekt är ett försök att spara tid, kraft och ekonomi är associerad med parkering. Check-in, parkering slot tilldelning...

Klocka, RTC DS1307 ange och Visa tiden på din LCD.

Baserat på mitt första Instructable.Baserat på WWC skissLägg till Rtc(realtimeclock) till dina Instructable.Artiklar1 Arduino1 USB-uttag tråd1 RTC DS13071 ledningar1 enheten ladda upp skisser.1 gång / DS1307RTC bibliotek http://playground.arduino.cc/...

Med en enda RGB LED (eller en LED strip) för att visa information: klocka, termometer och en konstig kommunikatör

En av de första projekten som jag gjorde med en Arduino var en jul ljus krans. I själva verket var det tillverkade av en enkel RGB LED strip skär i två, som Arduino har endast 6 hårdvara PWM utgångar. Jag ville inte det att Visa trivial regnbågar och...

12 tim binär klocka, timmar och minuter bara, DS1307 RTC, i2C, Arduino-Nano

Ett tag nu har jag velat göra en binär klocka, men efter att ha tittat jag bestämde mig något bara lite annorlunda. Så jag beslöt att endast visar timmar och minuter och endast visa en 12 timmars klocka, innebär detta du bara behöver 3 kolumner och m...