Satura rādītājs:
Video: Arduino ritināšanas teksta pulkstenis: 3 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:55
Šī projekta mērķis ir izveidot ritinošu teksta pulksteni, kas parāda laiku, kad tas tiek runāts (piemēram, “ir pusnakts”).
Šis ir ātrs projekts - mēs jums dodam pietiekami daudz, lai sāktu darbu ar aparatūru un skicēm, un tad jūs varat to virzīt tālāk atbilstoši savām vajadzībām.
1. darbība. Aparatūra
Jums būs nepieciešami trīs galvenie priekšmeti -
- ar Arduino Uno saderīga tāfele
- reālā laika pulksteņa ķēde vai modulis, izmantojot DS1307 vai DS3231 IC
- un vienkrāsains P10 stila LED displejs
Jūs varētu vēlēties ārēju barošanas avotu, bet mēs pie tā nonāksim vēlāk.
Pirmais posms ir pielāgot jūsu reālā laika pulksteni. Noklikšķiniet šeit, lai iegūtu apmācību, ja jums nepieciešama palīdzība šajā jautājumā.
Tagad es ceru, ka jūs domājat: “Kā noteikt laiku?”.
Uz šo jautājumu ir divas atbildes. Ja izmantojat DS3231, vienkārši iestatiet to skicē (skatiet zemāk), jo precizitāte ir ļoti laba, jums ir nepieciešams augšupielādēt skici ar jauno laiku divas reizes gadā, lai segtu vasaras laiku.
Pretējā gadījumā pievienojiet vienkāršu lietotāja interfeisu-pāris pogas to varētu izdarīt. Visbeidzot, jums vienkārši jāievieto aparatūra DMD aizmugurē. Ir daudz iespēju, lai apmierinātu savas vajadzības, vienkāršs risinājums varētu būt vadības paneļa izlīdzināšana, lai jūs varētu viegli piekļūt USB ligzdai - un pēc tam pielīmējiet to ar dažiem Sugru.
Kas attiecas uz pulksteņa barošanu - no Arduino varat darbināt VIENU LED displeju, un tas darbojas labā spilgtumā lietošanai iekštelpās. Ja vēlaties, lai DMD darbotos ar pilnu, tīklenes degšanas spilgtumu, jāizmanto atsevišķs 5V 4A līdzstrāvas avots. Ja izmantojat divus DMD - tas ir līdz 8A utt. Vienkārši pievienojiet ārējo barošanu vienam DMD terminālim (pievienojiet šiem termināļiem otro vai vairākus DMD).
Ja nevēlaties sasmalcināt strāvas padeves kabeļa galu, izmantojiet līdzstrāvas kontaktligzdas sadalītāju.
2. solis: Arduino skice
Jums būs jāinstalē šādas divas Arduino bibliotēkas - TimerOne un DMD. Pēc tam augšupielādējiet skici:
// RTC #ietver "Wire.h" #define DS1307_I2C_ADDRESS 0x68 // DS1307 RTC ir 0x68
// LED displejam
#include "SPI.h" #include "DMD.h" #include "TimerOne.h" #include "SystemFont5x7.h" #include "Arial_black_16.h" #define DISPLAYS_ACROSS 1 // jums varētu būt vairāk nekā viens DMD rinda #define DISPLAYS_DOWN 1 DMD dmd (DISPLAYS_ACROSS, DISPLAYS_DOWN);
String finalString; // izmanto, lai turētu pēdējo teikumu, lai to parādītu DMD
void ScanDMD () // nepieciešams DMD
{dmd.scanDisplayBySPI (); }
anulēts iestatījums ()
{// DMD Timer1.initialize (5000); Timer1.attachInterrupt (ScanDMD); dmd.clearScreen (patiess);
// RTC
Wire.begin (); // aizdedzināt I2C autobusa baitu sekunde, minūte, stunda, diena, Nedēļa, diena, mēnesis, mēnesis, gads; // mainiet mainīgos un noņemiet komentārus setDateDs1307, lai iestatītu laiku // pēc tam atkārtoti komentējiet funkciju un augšupielādējiet skici vēlreiz second = 0; minūte = 13; stunda = 23; dayOfWeek = 4; dayOfMonth = 19; mēnesis = 5; gads = 13; // setDateDs1307 (sekunde, minūte, stunda, diena, Nedēļa, diena, mēnesis, mēnesis, gads); }
// parastās RTC funkcijas
// Pārvērst parastos decimāldaļskaitļus par bināriem kodētiem decimālajiem baitiem decToBcd (baitu val) {return ((val/10*16) + (val%10)); }
// Pārvērst bināro kodēto decimāldaļu par parastajiem decimāldaļskaitļiem
baits bcdToDec (baitu val) {return ((val/16*10) + (val%16)); }
void setDateDs1307 (baits otrais, // 0-59
baitu minūte, // 0-59 baitu stunda, // 1-23 baitu diena nedēļā, // 1-7 baitu diena mēnesī, // 1-28/29/baitu mēnesis, // 1-12 baitu gads) // 0- 99 {Wire.beginTransmission (DS1307_I2C_ADDRESS); Wire.write (0); Wire.write (decToBcd (otrais)); // no 0 līdz 7. bitam sākas pulkstenis Wire.write (decToBcd (minūte)); Wire.write (decToBcd (stunda)); Wire.write (decToBcd (dayOfWeek)); Wire.write (decToBcd (dayOfMonth)); Wire.write (decToBcd (mēnesis)); Wire.write (decToBcd (gads)); Wire.write (00010000); // nosūta 0x10 (hex) 00010000 (bināro) uz reģistru - ieslēdz kvadrātveida vilni Wire.endTransmission (); }
// Iegūst datumu un laiku no ds1307
void getDateDs1307 (baits *sekunde, baits *minūte, baits *stunda, baits *dayOfWeek, baits *dayOfMonth, baits *mēnesis, baits *gads) {// Atiestatīt reģistra rādītāju Wire.beginTransmission (DS1307_I2C_ADDRESS); Wire.write (0); Wire.endTransmission ();
Wire.requestFrom (DS1307_I2C_ADDRESS, 7);
// Dažiem no tiem ir vajadzīgas maskas, jo daži biti ir kontroles biti
*otrais = bcdToDec (Wire.read () & 0x7f); *minūte = bcdToDec (Wire.read ()); *stunda = bcdToDec (Wire.read () & 0x3f); // Nepieciešams to mainīt, ja 12 h/pm *dayOfWeek = bcdToDec (Wire.read ()); *dayOfMonth = bcdToDec (Wire.read ()); *mēnesis = bcdToDec (Wire.read ()); *gads = bcdToDec (Wire.read ()); }
void drawText (String oldString)
{dmd.clearScreen (true); dmd.selectFont (Arial_Black_16); char newString [256]; int sLength = oldString.length (); oldString.toCharArray (newString, sLength+1); dmd.drawMarquee (newString, sLength, (32*DISPLAYS_ACROSS) -1, 0); garš sākums = milis (); ilgs taimeris = sākums; ilgs taimeris2 = sākums; Būla ret = nepatiess; while (! ret) {if ((taimeris+20) <millis ()) {ret = dmd.stepMarquee (-1, 0); taimeris = milis (); }}}
void createTextTime (int hh, int mm)
// tas visu laiku apkopo datus tekstā kā vienu teikumu {finalString = ""; // noslaukiet teikumu īpašiem gadījumiem (zemāk) finalString = finalString+"It's";
// tagad pievienojiet stundu
ja (hh == 1 || hh == 13) {finalString = finalString+"viens"; } ja (hh == 2 || hh == 14) {finalString = finalString+"divi"; } ja (hh == 3 || hh == 15) {finalString = finalString+"trīs"; } ja (hh == 4 || hh == 16) {finalString = finalString+"četri"; } ja (hh == 5 || hh == 17) {finalString = finalString+"pieci"; } ja (hh == 6 || hh == 18) {finalString = finalString+"seši"; } ja (hh == 7 || hh == 19) {finalString = finalString+"septiņi"; } ja (hh == 8 || hh == 20) {finalString = finalString+"astoņi"; } ja (hh == 9 || hh == 21) {finalString = finalString+"deviņi"; } ja (hh == 10 || hh == 22) {finalString = finalString+"desmit"; } ja (hh == 11 || hh == 23) {finalString = finalString+"vienpadsmit"; }
// tagad pievienojiet minūtes
slēdzis (mm) {1. gadījums: finalString = finalString+"oh one"; pārtraukums; 2. gadījums: finalString = finalString+"oh two"; pārtraukums; 3. gadījums: finalString = finalString+"ak trīs"; pārtraukums; 4. gadījums: finalString = finalString+"ak četri"; pārtraukums; 5. gadījums: finalString = finalString+"ak pieci"; pārtraukums; 6. gadījums: finalString = finalString+"oh six"; pārtraukums; 7. gadījums: finalString = finalString+"ak septiņi"; pārtraukums; 8. gadījums: finalString = finalString+"oh astoņi"; pārtraukums; 9. gadījums: finalString = finalString+"ak deviņi"; pārtraukums; 10. gadījums: finalString = finalString+"desmit"; pārtraukums; 11. gadījums: finalString = finalString+"vienpadsmit"; pārtraukums; 12. gadījums: finalString = finalString+"divpadsmit"; pārtraukums; 13. gadījums: finalString = finalString+"thirteen"; pārtraukums; 14. gadījums: finalString = finalString+"četrpadsmit"; pārtraukums; 15. gadījums: finalString = finalString+"piecpadsmit"; pārtraukums; 16. gadījums: finalString = finalString+"sešpadsmit"; pārtraukums; 17. gadījums: finalString = finalString+"septiņpadsmit"; pārtraukums; 18. gadījums: finalString = finalString+"astoņpadsmit"; pārtraukums; 19. gadījums: finalString = finalString+"deviņpadsmit"; pārtraukums; 20. gadījums: finalString = finalString+"divdesmit"; pārtraukums; 21. gadījums: finalString = finalString+"divdesmit viens"; pārtraukums; 22. gadījums: finalString = finalString+"divdesmit divi"; pārtraukums; 23. gadījums: finalString = finalString+"divdesmit trīs"; pārtraukums; 24. gadījums: finalString = finalString+"divdesmit četri"; pārtraukums; 25. gadījums: finalString = finalString+"divdesmit pieci"; pārtraukums; 26. gadījums: finalString = finalString+"divdesmit seši"; pārtraukums; 27. gadījums: finalString = finalString+"divdesmit septiņi"; pārtraukums; 28. gadījums: finalString = finalString+"divdesmit astoņi"; pārtraukums; 29. gadījums: finalString = finalString+"divdesmit deviņi"; pārtraukums; gadījums 30: finalString = finalString+"trīsdesmit"; pārtraukums; 31. gadījums: finalString = finalString+"trīsdesmit viens"; pārtraukums; 32. gadījums: finalString = finalString+"trīsdesmit divi"; pārtraukums; 33. gadījums: finalString = finalString+"trīsdesmit trīs"; pārtraukums; 34. gadījums: finalString = finalString+"trīsdesmit četri"; pārtraukums; 35. gadījums: finalString = finalString+"trīsdesmit pieci"; pārtraukums; 36. gadījums: finalString = finalString+"trīsdesmit seši"; pārtraukums; 37. gadījums: finalString = finalString+"trīsdesmit septiņi"; pārtraukums; 38. gadījums: finalString = finalString+"trīsdesmit astoņi"; pārtraukums; 39. gadījums: finalString = finalString+"trīsdesmit deviņi"; pārtraukums; 40. gadījums: finalString = finalString+"četrdesmit"; pārtraukums; 41. gadījums: finalString = finalString+"četrdesmit viens"; pārtraukums; 42. gadījums: finalString = finalString+"četrdesmit divi"; pārtraukums; 43. gadījums: finalString = finalString+"četrdesmit trīs"; pārtraukums; 44. gadījums: finalString = finalString+"četrdesmit četri"; pārtraukums; 45. gadījums: finalString = finalString+"četrdesmit pieci"; pārtraukums; 46. gadījums: finalString = finalString+"četrdesmit seši"; pārtraukums; 47. gadījums: finalString = finalString+"četrdesmit septiņi"; pārtraukums; 48. gadījums: finalString = finalString+"četrdesmit astoņi"; pārtraukums; 49. gadījums: finalString = finalString+"četrdesmit deviņi"; pārtraukums; 50. gadījums: finalString = finalString+"piecdesmit"; pārtraukums; 51. gadījums: finalString = finalString+"piecdesmit viens"; pārtraukums; 52. gadījums: finalString = finalString+"piecdesmit divi"; pārtraukums; 53. gadījums: finalString = finalString+"piecdesmit trīs"; pārtraukums; 54. gadījums: finalString = finalString+"piecdesmit četri"; pārtraukums; 55. gadījums: finalString = finalString+"piecdesmit pieci"; pārtraukums; 56. gadījums: finalString = finalString+"piecdesmit seši"; pārtraukums; 57. gadījums: finalString = finalString+"piecdesmit septiņi"; pārtraukums; 58. gadījums: finalString = finalString+"piecdesmit astoņi"; pārtraukums; 59. gadījums: finalString = finalString+"piecdesmit deviņi"; pārtraukums; }
// pusdienlaiks?
if (hh == 12 && mm == 0) {finalString = finalString+"pusdienlaiks"; } // pusnakts? ja (hh == 00 && mm == 0) {finalString = finalString+"pusnakts"; }
}
tukša cilpa ()
{// iegūt laiku no RTC baita sekunde, minūte, stunda, dayOfWeek, dayOfMonth, mēnesis, gads; getDateDs1307 (& otrais, & minūti, & stunda, & dayOfWeek, & dayOfMonth, & mēnesis, & gads);
// pārvērst laiku teikuma virknē
createTextTime (stunda, minūte);
// tagad nosūtiet tekstu uz DMD
drawText (finalString); }
Skicei ir parastās funkcijas laika iestatīšanai un izgūšanai no DS1307/3232 reāllaika pulksteņa IC, un, kā parasti ar visiem mūsu pulksteņiem, jūs varat ievadīt laika informāciju mainīgajos mainīgajos iestatījumos (), pēc tam atcelt komentārus setDateDs1307 (), augšupielādējiet skici, atkārtoti komentējiet setDateDs1307, pēc tam augšupielādējiet skici vēlreiz. Atkārtojiet šo procesu, lai no jauna iestatītu laiku, ja neesat pievienojis uz aparatūru balstītu lietotāja interfeisu.
3. darbība:
Kad laiks ir izgūts void loop (), tas tiek nodots funkcijai createTextTime (). Šī funkcija izveido parādāmo teksta virkni, sākot ar “It's”, un pēc tam nosaka, kuriem vārdiem sekot atkarībā no pašreizējā laika. Visbeidzot, funkcija drawText () pārvērš tekstu saturošo virkni par rakstzīmju mainīgo, ko var nodot DMD.
Ieteicams:
Ritināšanas teksta displejs (ceļvedis no A līdz Z): 25 soļi (ar attēliem)
Ritināšanas teksta displejs (ceļvedis no A līdz Z): Šajā pamācībā / video es jums sniegšu soli pa solim norādījumus, kā izveidot ritinošu teksta attēlojumu, izmantojot Arduino. Es nepaskaidrošu, kā izveidot kodu Arduino, es parādīšu, kā izmantot esošo kodu. Ko un kur vajag darīt kopā
Pensijas pulkstenis / skaitīšana uz augšu / Dn pulkstenis: 4 soļi (ar attēliem)
Retirement Clock / Count Up / Dn Clock: man bija daži no šiem 8x8 LED punktmatricas displejiem atvilktnē un domāju, ko ar tiem iesākt. Iedvesmojoties no citiem norādījumiem, man radās ideja izveidot atpakaļskaitīšanas/atpakaļskaitīšanas displeju, lai skaitītu atpakaļ līdz nākamajam datumam/laikam un, ja mērķa laiks ir
Vortex pulkstenis: bezgalības spoguļa rokas pulkstenis: 10 soļi (ar attēliem)
Vortex Watch: bezgalības spoguļa rokas pulkstenis: šī projekta mērķis bija izveidot bezgalības spoguļpulksteņa valkājamu versiju. Tas izmanto savas RGB gaismas diodes, lai norādītu laiku, piešķirot stundas, minūtes un sekundes attiecīgi sarkanajai, zaļajai un zilajai gaismai un pārklājot šīs nokrāsas
DIY LED punktu matricas ritināšanas displejs, izmantojot Arduino: 6 soļi
DIY LED punktu matricas ritināšanas displejs, izmantojot Arduino: Sveiki, instrukcija Šis ir mans pirmais pamācību. Šajā pamācībā es parādīšu, kā es izveidoju DIY LED punktu matricas ritināšanas displeju, izmantojot Arduino kā MCU. Šāda veida displeji ir redzami dzelzceļa stacijā, autoostā, ielās un daudzās citās vietās. Tur
Kā izveidot ritināšanas displeju, izmantojot Arduino un Bluetooth: 4 soļi
Kā izveidot ritināšanas displeju, izmantojot Arduino un Bluetooth: apmeklējiet manu YouTube kanāluŠajā rakstā es apspriedīšu "Kā jūs varat izveidot ritinošu displeju, izmantojot arduino, un kontrolēt to, izmantojot viedtālruni". Izmantojot Bluetooth, jūs varat nosūtīt ne vairāk kā 63 rakstzīmes, izmantojot programmu