diff --git a/vscode/clock/.pio/build/nanoatmega328/.sconsign.py36.dblite b/vscode/clock/.pio/build/nanoatmega328/.sconsign.py36.dblite new file mode 100644 index 0000000..c3ba894 Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/.sconsign.py36.dblite differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/CDC.cpp.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/CDC.cpp.o new file mode 100644 index 0000000..360a28c Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/CDC.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/HardwareSerial.cpp.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/HardwareSerial.cpp.o new file mode 100644 index 0000000..5ac359d Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/HardwareSerial.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/HardwareSerial0.cpp.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/HardwareSerial0.cpp.o new file mode 100644 index 0000000..f19c89a Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/HardwareSerial0.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/HardwareSerial1.cpp.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/HardwareSerial1.cpp.o new file mode 100644 index 0000000..0387bcc Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/HardwareSerial1.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/HardwareSerial2.cpp.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/HardwareSerial2.cpp.o new file mode 100644 index 0000000..e21fc1c Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/HardwareSerial2.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/HardwareSerial3.cpp.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/HardwareSerial3.cpp.o new file mode 100644 index 0000000..e09ab64 Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/HardwareSerial3.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/IPAddress.cpp.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/IPAddress.cpp.o new file mode 100644 index 0000000..8fe0dc8 Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/IPAddress.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/PluggableUSB.cpp.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/PluggableUSB.cpp.o new file mode 100644 index 0000000..1781abd Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/PluggableUSB.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/Print.cpp.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/Print.cpp.o new file mode 100644 index 0000000..1f2eb31 Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/Print.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/Stream.cpp.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/Stream.cpp.o new file mode 100644 index 0000000..5b51f75 Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/Stream.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/Tone.cpp.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/Tone.cpp.o new file mode 100644 index 0000000..e6d27be Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/Tone.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/USBCore.cpp.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/USBCore.cpp.o new file mode 100644 index 0000000..2d64de9 Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/USBCore.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/WInterrupts.c.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/WInterrupts.c.o new file mode 100644 index 0000000..33e91b1 Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/WInterrupts.c.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/WMath.cpp.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/WMath.cpp.o new file mode 100644 index 0000000..48ec6d8 Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/WMath.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/WString.cpp.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/WString.cpp.o new file mode 100644 index 0000000..54a5bdf Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/WString.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/abi.cpp.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/abi.cpp.o new file mode 100644 index 0000000..f56deae Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/abi.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/hooks.c.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/hooks.c.o new file mode 100644 index 0000000..7f7d06b Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/hooks.c.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/main.cpp.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/main.cpp.o new file mode 100644 index 0000000..22468d0 Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/main.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/new.cpp.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/new.cpp.o new file mode 100644 index 0000000..9a73a2c Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/new.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring.c.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring.c.o new file mode 100644 index 0000000..071244b Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring.c.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring_analog.c.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring_analog.c.o new file mode 100644 index 0000000..614b395 Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring_analog.c.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring_digital.c.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring_digital.c.o new file mode 100644 index 0000000..fc69303 Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring_digital.c.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring_pulse.S.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring_pulse.S.o new file mode 100644 index 0000000..167ab7f Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring_pulse.S.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring_pulse.c.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring_pulse.c.o new file mode 100644 index 0000000..3dddcbb Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring_pulse.c.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring_shift.c.o b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring_shift.c.o new file mode 100644 index 0000000..f9918f6 Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/FrameworkArduino/wiring_shift.c.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/firmware.elf b/vscode/clock/.pio/build/nanoatmega328/firmware.elf new file mode 100644 index 0000000..aa2b6db Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/firmware.elf differ diff --git a/vscode/clock/.pio/build/nanoatmega328/firmware.hex b/vscode/clock/.pio/build/nanoatmega328/firmware.hex new file mode 100644 index 0000000..e4c5ff6 --- /dev/null +++ b/vscode/clock/.pio/build/nanoatmega328/firmware.hex @@ -0,0 +1,484 @@ +:100000000C9464000C948C000C948C000C948C0068 +:100010000C948C000C948C000C948C000C948C0030 +:100020000C948C000C948C000C948C000C948C0020 +:100030000C948C000C948C000C948C000C948C0010 +:100040000C941D070C948C000C9443030C941D031A +:100050000C948C000C948C000C948C000C948C00F0 +:100060000C9475030C948C00000000002400270001 +:100070002A0000000008000201000003040700003D +:100080000000000000001F1C1F1E1F1E1F1F1E1F40 +:100090001E1F0102040810204080010204081020E5 +:1000A00001020408102000000000250028002B0099 +:1000B000040404040404040402020202020203030E +:1000C00003030303170B070B11241FBECFEFD8E068 +:1000D000DEBFCDBF11E0A0E0B1E0E0EFFDE102C086 +:1000E00005900D92AA33B107D9F722E0AAE3B1E057 +:1000F00001C01D92AF3DB207E1F710E0C3E6D0E0CA +:1001000004C02197FE010E94F80BC236D107C9F73F +:100110000E9467070C94EB0E0C940000089508955C +:10012000CF92DF92EF92FF920F931F93CF93DF93C3 +:100130006C017A018B01C0E0D0E0CE15DF0581F0C3 +:10014000D8016D918D01D601ED91FC910190F08166 +:10015000E02DC6010995892B11F02196EECF7E0185 +:10016000C701DF91CF911F910F91FF90EF90DF902A +:10017000CF900895FC01538D448D252F30E0842FBE +:1001800090E0821B930B541710F0CF9608950197BF +:100190000895FC01918D828D981761F0828DDF01A9 +:1001A000A80FB11D5D968C91928D9F5F9F73928F6A +:1001B00090E008958FEF9FEF0895FC01918D828D5F +:1001C000981731F0828DE80FF11D858D90E008952C +:1001D0008FEF9FEF0895FC01918D228D892F90E084 +:1001E000805C9F4F821B91098F73992708958AE045 +:1001F00092E00E94EB0021E0892B09F420E0822F9D +:100200000895FC01848DDF01A80FB11DA35ABF4FD3 +:100210002C91848D90E001968F739927848FA68905 +:10022000B7892C93A089B1898C91837080648C9359 +:10023000938D848D981306C00288F389E02D808108 +:100240008F7D80830895EF92FF920F931F93CF933A +:10025000DF93EC0181E0888F9B8D8C8D981305C016 +:10026000E889F989808185FD26C0F62E0B8D10E086 +:100270000F5F1F4F0F731127E02E8C8DE8120CC0FB +:100280000FB607FCFACFE889F989808185FFF5CFA1 +:10029000CE010E940101F1CF8B8DFE01E80FF11D0F +:1002A000E35AFF4FF0829FB7F8940B8FEA89FB89DE +:1002B000808180620AC09FB7F894EE89FF896083CD +:1002C000E889F98980818370806480839FBF81E0A1 +:1002D00090E0DF91CF911F910F91FF90EF900895E3 +:1002E000CF93DF93EC01888D8823C9F0EA89FB89DD +:1002F000808185FD05C0A889B9898C9186FD0FC0D4 +:100300000FB607FCF5CF808185FFF2CFA889B989A8 +:100310008C9185FFEDCFCE010E940101E7CFDF91E7 +:10032000CF91089580E090E0892B29F00E94F7009A +:1003300081110C940000089585ED8093BC0080919C +:10034000BC0084FDFCCF1092C901089540915A0170 +:10035000262F30E0240F311D21323105DCF42091AD +:10036000C9012430C9F4FC0180E090E0861758F4FC +:1003700030915A012191DC01A65CBE4FA30FB11D43 +:100380002C930196F3CF80915A01680F60935A0124 +:1003900080E0089581E0089582E008950895E09155 +:1003A000820180918101E81730F4F0E0ED57FE4FB3 +:1003B000808190E008958FEF9FEF089590918201E2 +:1003C00080918101981750F4E92FF0E0ED57FE4F2E +:1003D000208130E09F5F9093820102C02FEF3FEFBA +:1003E000C90108958091810190E020918201821BD2 +:1003F00091090895CF92DF92EF92FF920F931F938E +:10040000CF93DF937C01CB018A012091ED01222360 +:1004100089F0EB016B01C40ED51ECC15DD0569F02A +:100420006991D701ED91FC910190F081E02DC70118 +:100430000995F3CF642F0E94A601C801DF91CF91E7 +:100440001F910F91FF90EF90DF90CF900895CF9381 +:10045000DF931F92CDB7DEB769832091ED01222390 +:10046000D1F02091EA01203240F021E030E0FC019F +:100470003383228380E090E015C08091EB01E82F68 +:10048000F0E0E653FE4F998190838F5F8093EB01FC +:100490008093EA0105C061E0CE0101960E94A601A9 +:1004A00081E090E00F90DF91CF910895089580E072 +:1004B00090E008950E94E60E2F923F924F925F9235 +:1004C0006F927F928F929F92AF92BF92CF92DF9264 +:1004D000EF92FF920F931F93CF93DF93CDB7DEB7C9 +:1004E0006B017C015A01280139012DB63EB620E08E +:1004F00030E0A9010E942F0D20E030E040E05FE3F2 +:1005000087FD05C0C701B6010E94FF0B04C0C701EB +:10051000B6010E94FE0B0E946B0C8B01B5010B2CE7 +:10052000000C880B990B0E94A30C20E030E040E007 +:100530005FE30E94340D6B017C0120E030E0A901F3 +:100540000E942F0D20E030E040E05FE387FD05C012 +:10055000C701B6010E94FF0B04C0C701B6010E948B +:10056000FE0B0E946B0CC501880F991F2DB73EB77B +:10057000281B390B0FB6F8943EBF0FBE2DBF8DB7A9 +:100580009EB701964C01EDB7FEB7128211823396E9 +:1005900080E090E00196A816B90619F01192119228 +:1005A000F9CF6801C61AD70A9B01201B310B8901BC +:1005B000C8018C0D9D1D8A159B053CF5760133E520 +:1005C000C316D1041CF083E5E81AF108F401E192A6 +:1005D000F1924F01B7010F2C000C880B990B0E9470 +:1005E00021068AE291E00E940F068091AF0290916D +:1005F000B002E816F90628F4B301A201C7010E946F +:10060000A305FFEFCF1ADF0AD3CF0FB6F8943EBE93 +:100610000FBE2DBEDF91CF911F910F91FF90EF90F4 +:10062000DF90CF90BF90AF909F908F907F906F9012 +:100630005F904F903F902F9008951F920F920FB6AA +:100640000F9211242F933F934F935F936F937F9358 +:100650008F939F93AF93BF93EF93FF938AE092E0C2 +:100660000E940101FF91EF91BF91AF919F918F91F6 +:100670007F916F915F914F913F912F910F900FBE9E +:100680000F901F9018951F920F920FB60F92112482 +:100690002F938F939F93EF93FF93E0911A02F09122 +:1006A0001B028081E0912002F091210282FD12C0A4 +:1006B0009081809123028F5F8F7320912402821793 +:1006C00051F0E0912302F0E0E65FFD4F958F8093BB +:1006D000230201C08081FF91EF919F918F912F9113 +:1006E0000F900FBE0F901F9018951F920F920FB68C +:1006F0000F9211242F933F934F935F936F937F93A8 +:100700008F939F93AF93BF93EF93FF938091B90023 +:10071000887F803609F49CC068F5883209F45BC094 +:1007200090F4803109F454C038F4882309F4F6C0F9 +:10073000883009F44DC0F6C0883109F44CC08032CD +:1007400009F45DC0EFC0803409F468C048F4803318 +:1007500009F455C0883309F0E5C08093C701D8C0BB +:10076000803509F44FC0883509F45DC0883409F03C +:10077000D9C0D6C0883909F4C7C0A8F4883709F4AD +:1007800067C038F4883609F463C0803709F460C064 +:10079000C9C0883809F4B8C0803909F45FC080380E +:1007A00009F0C0C05BC0803B09F486C038F4803AD1 +:1007B00009F466C0883A09F47FC0B4C0803C09F4EB +:1007C000A7C0883C09F4A4C0883B09F48AC0AAC029 +:1007D0008091A40110C09091C6018091C501981725 +:1007E00070F5E091C60181E08E0F8093C601F0E0C4 +:1007F000EB55FE4F80818093BB0085EC86C08093D3 +:10080000C7018EC0E091C60181E08E0F8093C601C2 +:100810008091BB00F0E0EB55FE4F80839091C601C4 +:100820008091C5016EC0E091C60181E08E0F80937A +:10083000C6018091BB00F0E0EB55FE4F80838091B4 +:10084000C80181116DC081E08093A30184EA61C079 +:1008500083E08093C90110927C01CFCF80917C010D +:10086000803208F051C0E0917C0181E08E0F8093CE +:100870007C018091BB00F0E0E45AFE4F8083BDCF45 +:1008800085EC8093BC001092C90180917C0180327C +:1008900030F4E0917C01F0E0E45AFE4F1082609168 +:1008A0007C0170E0E0917D01F0917E018CE591E0AA +:1008B000099510927C0136C084E08093C9011092A2 +:1008C0005B0110925A01E0917F01F091800109953E +:1008D00080915A01811105C081E080935A011092E4 +:1008E0003A01E0915B0181E08E0F80935B01F0E0C3 +:1008F000E65CFE4F80818093BB0090915B0180910C +:100900005A01981708F479CF85E88093BC000AC093 +:1009100085EC8093BC001092C90104C01092C701FD +:100920000E949C01FF91EF91BF91AF919F918F9198 +:100930007F916F915F914F913F912F910F900FBEDB +:100940000F901F9018953FB7F8948091CB0290912B +:10095000CC02A091CD02B091CE0226B5A89B05C0D5 +:100960002F3F19F00196A11DB11D3FBFBA2FA92F2E +:10097000982F8827820F911DA11DB11DBC01CD01AB +:1009800042E0660F771F881F991F4A95D1F7089597 +:10099000DC0115961C92159714961C9214971396C9 +:1009A0001C9213971C9281E011968C9311971196CB +:1009B0008C911197E82FF0E0EB57FF4FE4918230D4 +:1009C00009F4EF5FE11102C08F5FEECF81E0129674 +:1009D0008C9308950F931F93CF93DF93CDB7DEB71A +:1009E00029970FB6F894DEBF0FBECDBF0E94A304B7 +:1009F0000091BC021091BD022091BE023091BF0255 +:100A0000DC01CB01801B910BA20BB30B8C3291400C +:100A1000A105B10558F3F8948091B1029091B2020A +:100A20009A838983E091B602F091B702DF011196B3 +:100A3000808189879091AD02E091C002F091C1025E +:100A40008091C202992309F42EC09081982B988737 +:100A50009081809589238F838F818C8388E08B831D +:100A600058856F8149853B812C8189819A8150838A +:100A700047FD252F3A952083262F39F0441F00C0CB +:100A800000006083000000C0F2CF38E04D91608329 +:100A90000000019761F7F093C102E093C00249871B +:100AA0003B832C8338C09081982B988790818095C8 +:100AB00089238F838F818E8388E08D8358856F8112 +:100AC00049853D812E8189819A81508347FD252F5B +:100AD00000C000C0208300C000C000C000C000C033 +:100AE00060830000262F3A9541F0441F000000C0AB +:100AF00000C000C000C000C0E8CF38E04D9100C089 +:100B0000608300C0019709F7F093C102E093C0022F +:100B100049873D832E839A83898378940E94A30416 +:100B20006093BC027093BD028093BE029093BF029B +:100B300029960FB6F894DEBF0FBECDBFDF91CF91DF +:100B40001F910F9108958F929F92AF92BF92CF9273 +:100B5000DF92EF92FF92CF93DF934B01AA24BB2445 +:100B6000F82DC52ED62EE72EFF24AC2DE42F209194 +:100B7000B502222361F0829E40011124F92D2C9DA3 +:100B800060011124AD2D249FE0011124ED2F30913F +:100B9000BB02B091B802E090B602F090B7023B13EE +:100BA00008C09C01220F331F820F931F8E0D9F1DC3 +:100BB00019C0880F991F880F991F8E0D9F1D472FF1 +:100BC000552766277727EC01C30FD11D222349F053 +:100BD00030E0249F7001259FF00C349FF00C11240D +:100BE0004F2D48832091B802EC01C20FD11DF8832C +:100BF0002091B902EC01C20FD11DA8832091BA0245 +:100C0000DC01A20FB11DEC93DF91CF91FF90EF902B +:100C1000DF90CF90BF90AF909F908F9008950097F6 +:100C200069F0FC0101900020E9F73197AF01481B02 +:100C3000590BBC018AE092E00C94900080E090E0B7 +:100C400008958F929F92AF92BF92CF92DF92EF92D0 +:100C5000FF920F931F93CF93DF93CDB7DEB7A1978A +:100C60000FB6F894DEBF0FBECDBF6B017C0197FFBE +:100C70002BC06DE28AE092E00E9423018C012227C2 +:100C80003327A9012C193D094E095F0919A2CE018C +:100C900081967C019AE0892E912CA12CB12CCA015D +:100CA000B901A50194010E94D60B605DF701629322 +:100CB0007F01211531054105510589F7CF010E94BA +:100CC0000F06800F911F1DC09B01AC0119A28E0160 +:100CD0000F5D1F4F8AE0C82ED12CE12CF12CCA01E8 +:100CE000B901A70196010E94D60B605DF8016293DD +:100CF0008F01211531054105510589F7CF010E946A +:100D00000F06A1960FB6F894DEBF0FBECDBFDF91E0 +:100D1000CF911F910F91FF90EF90DF90CF90BF90F8 +:100D2000AF909F908F90089590E0FC01EE58FF4F98 +:100D30002491FC01EE56FF4F3491FC01E055FF4F2A +:100D4000E491EE2309F43CC0222339F1233091F0E1 +:100D500038F42130A9F0223001F584B58F7D12C01E +:100D6000273091F02830A1F02430B9F48091800030 +:100D70008F7D03C0809180008F77809380000DC0AD +:100D800084B58F7784BD09C08091B0008F7703C090 +:100D90008091B0008F7D8093B000F0E0EE0FFF1FD8 +:100DA000EA55FF4FA591B4919FB7F894611104C023 +:100DB0008C913095382302C0EC913E2B3C939FBF21 +:100DC0000895CF93DF9390E0FC01EE56FF4F2491FE +:100DD000FC01E055FF4F8491882361F190E0880F7A +:100DE000991FFC01E859FF4FC591D491FC01EA55C8 +:100DF000FF4FA591B491611109C09FB7F894888104 +:100E0000209582238883EC912E230BC0623061F4FD +:100E10009FB7F8948881322F309583238883EC9193 +:100E20002E2B2C939FBF06C08FB7F894E8812E2BF2 +:100E300028838FBFDF91CF9108951F920F920FB635 +:100E40000F9211242F933F938F939F93AF93BF9350 +:100E50008091C7029091C802A091C902B091CA02C4 +:100E60003091C60223E0230F2D3720F40196A11DF7 +:100E7000B11D05C026E8230F0296A11DB11D2093C8 +:100E8000C6028093C7029093C802A093C902B09390 +:100E9000CA028091CB029091CC02A091CD02B09178 +:100EA000CE020196A11DB11D8093CB029093CC027E +:100EB000A093CD02B093CE02BF91AF919F918F913D +:100EC0003F912F910F900FBE0F901F901895CF93C9 +:100ED000DF93CDB7DEB72C970FB6F894DEBF0FBE09 +:100EE000CDBF789484B5826084BD84B5816084BDB3 +:100EF00085B5826085BD85B5816085BD80916E00B8 +:100F0000816080936E0010928100809181008260E8 +:100F10008093810080918100816080938100809125 +:100F200080008160809380008091B1008460809314 +:100F3000B1008091B00081608093B00080917A0010 +:100F4000846080937A0080917A00826080937A0036 +:100F500080917A00816080937A0080917A00806825 +:100F600080937A001092C100E0911A02F0911B0266 +:100F700082E08083E0911602F09117021082E091E6 +:100F80001802F09119028FEC808310922202E091F6 +:100F90001E02F0911F0286E08083E0911C02F09116 +:100FA0001D02808180618083E0911C02F0911D020E +:100FB000808188608083E0911C02F0911D02808115 +:100FC00080688083E0911C02F0911D0280818F7DFA +:100FD000808310928201109281011092EB01109295 +:100FE000EA011092C90181E08093C8011092A30127 +:100FF00061E082E10E94940661E083E10E94940630 +:101000008091B9008E7F8093B9008091B9008D7F67 +:101010008093B90088E48093B80085E48093BC0095 +:101020008EE890E09093800180937F018FE890E0BC +:1010300090937E0180937D018091B3029091B402E0 +:1010400097FD08C061E00E94E10660E08091B30274 +:101050000E94940681E08093AE021092FE011092ED +:10106000FF01109200021092010280E09FEFA0E0C9 +:10107000B0E08093EE019093EF01A093F001B09364 +:10108000F1018FEF90E0A0E0B0E08093F201909347 +:10109000F301A093F401B093F50180E090E0AFEF8D +:1010A000B0E08093F6019093F701A093F801B0931C +:1010B000F90180E090E0A0E8B0E08093FA0190931D +:1010C000FB01A093FC01B093FD01E090AF02F09012 +:1010D000B002E114F104A1F000E010E08091AF0251 +:1010E0009091B0020817190730F440E050E0BA01BF +:1010F000C8010E94A3050F5F1F4FE016F10671F7AC +:101100008091B6029091B702892B11F00E94EA04F7 +:10111000EE24E39478E6272EE2E03E2EBB24BA9438 +:10112000F5EEAF2EA5EC9A2EB6E08B2E1AEFF12E2F +:10113000E092ED012092EC011092EB011092EA0195 +:101140008091C3029091C402DC01ED91FC91019069 +:10115000F081E02D60E009953091EA01313208F02C +:1011600048C08091C9018111FCCF9091EC0130926F +:10117000C901E092C801B092C7011092C601309334 +:10118000C501AAECB1E0E5EAF1E020E0321721F078 +:101190004D9141932F5FFACF1092A4012091A401A9 +:1011A000990F922B9093A4019091A301913069F42F +:1011B0001092A3019091A4019093BB009091BC0068 +:1011C00093FDF8CF9092BC0002C0A092BC00909119 +:1011D000C9019230E1F39091C7019F3F79F080916E +:1011E000C701803241F08091C701803331F483E040 +:1011F00005C081E003C082E001C084E01092EB01F1 +:101200001092EA011092ED018093C5028823A1F0AB +:10121000CE0101960E94C80486E0FE013196DE01EF +:10122000179601900D928A95E1F72F81C8847984F1 +:101230001A85DB840C85E4C08091C9018111FCCF43 +:10124000E092C901E092C801B092C7011092C601B4 +:101250008092C501E092A4018091A401806D8093E9 +:10126000A4018091A301813069F41092A3018091BF +:10127000A4018093BB008091BC0083FDF8CF9092C5 +:10128000BC0002C0A092BC008091C9018130E1F392 +:101290008091C601873018F49091C60101C097E093 +:1012A000A5EAB1E0E3E8F1E080E0891721F02D91B3 +:1012B00021938F5FFACF10928201809381018091F8 +:1012C000C3029091C402DC01ED91FC910284F3858C +:1012D000E02D09958F77982F92959F70082F9F9DED +:1012E000000D11248091C3029091C402DC01ED91A4 +:1012F000FC910284F385E02D09959C01332764E07D +:10130000359527956A95E1F7D82EF29ED00C1124D9 +:101310008091C3029091C402DC01ED91FC910284A2 +:10132000F385E02D099586FF0CC0182F1F71912FB2 +:1013300092959F709F9D100D112485FF0DC0145F25 +:101340000BC09C01332754E0359527955A95E1F75A +:10135000182FF29E100D11248091C3029091C402A7 +:10136000DC01ED91FC910284F385E02D09958091DB +:10137000C3029091C402DC01ED91FC910284F385DB +:10138000E02D09959C01332794E0359527959A9592 +:10139000E1F7782EF29E700C11248091C302909197 +:1013A000C402DC01ED91FC910284F385E02D0995E6 +:1013B000C82E8091C3029091C402DC01ED91FC9192 +:1013C0000284F385E02D09959C01332744E035958F +:1013D00027954A95E1F7F29E800D112490E09C013B +:1013E0002053384FC7FE02C02C593F4F9C2D9F778A +:1013F000892F82958F70C92E8F9DC00C1124205D7E +:101400002093A702C092A8027092A9021093AA0288 +:10141000D092AB020093AC02212F30E0309309024E +:10142000209308028D2D90E090930702809306028E +:1014300010E0109305020093040280910202909143 +:1014400003028017910709F4DFC08DE291E00E944A +:101450000F066091080270910902072E000C880B9C +:10146000990B0E94210688E391E00E940F0660918B +:10147000060270910702072E000C880B990B0E9440 +:10148000210688E391E00E940F06609104027091AA +:101490000502072E000C880B990B0E9421068AE298 +:1014A00091E00E940F0680910402909105029093B2 +:1014B000030280930202C090AF02D090B002C11428 +:1014C000D104D9F04090FE015090FF0160900002DD +:1014D0007090010200E010E08091AF029091B002A4 +:1014E0000817190728F4B301A201C8010E94A30537 +:1014F0000F5F1F4FC016D10679F7CC24C394D12CAF +:101500006091080270910902C616D706FCF440905B +:10151000FA015090FB016090FC017090FD01B60152 +:101520000D2C000C880B990B0E94A30C21E131E1DA +:1015300041EB5FE30E94340D9301820141E050E0F2 +:101540000E945C02BFEFCB1ADB0ADACF4090F601B3 +:101550005090F7016090F8017090F901072E000C8F +:10156000880B990B0E94A30C21E131E141EB5FE371 +:101570000E94340D9301820143E050E00E945C021E +:101580004090F2015090F3016090F4017090F501E9 +:101590006091060270910702072E000C880B990BD0 +:1015A0000E94A30C21E131E141EB5FE30E94340D85 +:1015B0009301820145E050E00E945C024090EE0100 +:1015C0005090EF016090F0017090F1016091040281 +:1015D00070910502072E000C880B990B0E94A30C3A +:1015E00021E131E141EB5FE30E94340D930182017F +:1015F00043E050E00E945C028091B6029091B702F5 +:10160000892B11F00E94EA040E94920191CD8091F1 +:10161000B6029091B7020E945D0E8091B302909144 +:10162000B40297FD03C060E00C94E10608951092A7 +:101630000D0210920C0288EE93E0A0E0B0E08093DF +:101640000E0290930F02A0931002B09311022AE0B1 +:1016500031E030930B0220930A0225EC30E0309306 +:1016600017022093160224EC30E0309319022093E5 +:10167000180220EC30E030931B0220931A0221EC78 +:1016800030E030931D0220931C0222EC30E03093B6 +:101690001F0220931E0226EC30E03093210220939B +:1016A000200210922302109224021092250210921E +:1016B00026021092D2021092D1028093D30290930C +:1016C000D402A093D502B093D6028CE191E090931E +:1016D000D0028093CF028FEC92E09093C40280936B +:1016E000C3021092C5021092AE021092B50210927F +:1016F000BC021092BD021092BE021092BF0281E0A5 +:101700008093BB028093B8021092B90292E090934A +:10171000BA028093AD0289EF90E09093B202809379 +:10172000B1020E94C50D9093B7028093B602009754 +:1017300061F029EFFC0111922A95E9F783E590E029 +:101740009093B0028093AF0208C01092B202109240 +:10175000B1021092B0021092AF0286E090E0909336 +:10176000B4028093B3028091AE02882341F061E01D +:1017700086E00E94E10660E086E00E949406E6EBC7 +:10178000F0E0E491F0E0EE0FFF1FEA55FF4F859186 +:1017900094919093C1028093C002E8E9F0E0E49153 +:1017A000E093C20287EA92E00C94C804A1E21A2EE8 +:1017B000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1FF5 +:1017C000A217B307E407F50720F0A21BB30BE40B45 +:1017D000F50B661F771F881F991F1A9469F760958C +:1017E0007095809590959B01AC01BD01CF01089546 +:1017F000EE0FFF1F0590F491E02D09945058BB2780 +:10180000AA270E94160C0C94F50C0E94E70C38F0E5 +:101810000E94EE0C20F039F49F3F19F426F40C944A +:10182000E40C0EF4E095E7FB0C94DE0CE92F0E942B +:10183000060D58F3BA17620773078407950720F05F +:1018400079F4A6F50C94280D0EF4E0950B2EBA2F22 +:10185000A02D0B01B90190010C01CA01A0011124B6 +:10186000FF27591B99F0593F50F4503E68F11A1662 +:10187000F040A22F232F342F4427585FF3CF4695F3 +:1018800037952795A795F0405395C9F77EF41F1615 +:10189000BA0B620B730B840BBAF09150A1F0FF0FDF +:1018A000BB1F661F771F881FC2F70EC0BA0F621FCB +:1018B000731F841F48F4879577956795B795F795BB +:1018C0009E3F08F0B0CF9395880F08F09927EE0F50 +:1018D0009795879508950E94720C6894B1110C94A5 +:1018E000290D08950E940E0D88F09F5798F0B92F8A +:1018F0009927B751B0F0E1F0660F771F881F991F45 +:101900001AF0BA95C9F714C0B13091F00E94280DB1 +:10191000B1E008950C94280D672F782F8827B85FC1 +:1019200039F0B93FCCF3869577956795B395D9F79C +:101930003EF490958095709561957F4F8F4F9F4FA6 +:101940000895E89409C097FB3EF4909580957095B2 +:1019500061957F4F8F4F9F4F9923A9F0F92F96E9FB +:10196000BB279395F695879577956795B795F11170 +:10197000F8CFFAF4BB0F11F460FF1BC06F5F7F4F0D +:101980008F4F9F4F16C0882311F096E911C077231F +:1019900021F09EE8872F762F05C0662371F096E828 +:1019A000862F70E060E02AF09A95660F771F881FF7 +:1019B000DAF7880F9695879597F9089597F99F67B5 +:1019C00080E870E060E008959FEF80EC08950024C7 +:1019D0000A941616170618060906089500240A9494 +:1019E00012161306140605060895092E0394000C1A +:1019F00011F4882352F0BB0F40F4BF2B11F460FFA9 +:101A000004C06F5F7F4F8F4F9F4F089557FD9058D1 +:101A1000440F551F59F05F3F71F04795880F97FBB2 +:101A2000991F61F09F3F79F087950895121613066C +:101A30001406551FF2CF4695F1DF08C0161617069B +:101A40001806991FF1CF86957105610508940895D0 +:101A5000E894BB2766277727CB0197F908950E9462 +:101A6000A10D08F48FEF08950E94470D0C94F50C1A +:101A70000E94E70C38F00E94EE0C20F0952311F044 +:101A80000C94DE0C0C94E40C11240C94290D0E948F +:101A9000060D70F3959FC1F3950F50E0551F629F9F +:101AA000F001729FBB27F00DB11D639FAA27F00DB7 +:101AB000B11DAA1F649F6627B00DA11D661F829FDE +:101AC0002227B00DA11D621F739FB00DA11D621FC3 +:101AD000839FA00D611D221F749F3327A00D611DE0 +:101AE000231F849F600D211D822F762F6A2F1124C2 +:101AF0009F5750409AF0F1F088234AF0EE0FFF1FF5 +:101B0000BB1F661F771F881F91505040A9F79E3F4B +:101B1000510580F00C94DE0C0C94290D5F3FE4F32A +:101B2000983ED4F3869577956795B795F795E795A1 +:101B30009F5FC1F7FE2B880F911D9695879597F9AA +:101B40000895990F0008550FAA0BE0E8FEEF16164E +:101B50001706E807F907C0F012161306E407F507A1 +:101B600098F0621B730B840B950B39F40A2661F015 +:101B7000232B242B252B21F408950A2609F4A140B8 +:101B8000A6958FEF811D811D08950F931F93CF930D +:101B9000DF938230910510F482E090E0E091DD0265 +:101BA000F091DE0220E030E0A0E0B0E0309719F1E3 +:101BB000408151810281138148175907C8F0841769 +:101BC000950769F4109731F012960C9312971396BB +:101BD0001C9327C00093DD021093DE0222C0211562 +:101BE000310519F04217530718F49A01BD01EF01AE +:101BF000DF01F801DBCF21153105F9F0281B390B86 +:101C00002430310580F48A819B816115710521F0B2 +:101C1000FB019383828304C09093DE028093DD02F4 +:101C2000FE01329644C0FE01E20FF31F81939193AF +:101C300022503109398328833AC02091DB02309148 +:101C4000DC02232B41F420910201309103013093F7 +:101C5000DC022093DB02209100013091010121156B +:101C6000310541F42DB73EB7409104015091050173 +:101C7000241B350BE091DB02F091DC02E217F30745 +:101C8000A0F42E1B3F0B2817390778F0AC014E5FEC +:101C90005F4F2417350748F04E0F5F1F5093DC024B +:101CA0004093DB028193919302C0E0E0F0E0CF012A +:101CB000DF91CF911F910F910895CF93DF930097FC +:101CC00009F481C0FC01329713821282A091DD02D7 +:101CD000B091DE02109781F420813181820F931F31 +:101CE0002091DB023091DC022817390751F5F0937F +:101CF000DC02E093DB0267C0ED0120E030E0CE17AC +:101D0000DF0740F44A815B819E0141155105F1F0E6 +:101D1000EA01F5CFD383C28340815181840F951F9F +:101D2000C817D90759F488819981840F951F0296A5 +:101D3000918380838A819B819383828321153105DE +:101D400029F4F093DE02E093DD023DC0E901FB835C +:101D5000EA8349915991C40FD51FEC17FD0761F42F +:101D600080819181840F951F0296E9019983888370 +:101D7000828193819B838A83E0E0F0E012968D91CB +:101D80009C911397009719F0FD01DC01F7CF8D911D +:101D90009C9111979D012E5F3F4F820F931F2091C1 +:101DA000DB023091DC022817390769F4309729F4F7 +:101DB0001092DE021092DD0202C013821282B093F2 +:101DC000DC02A093DB02DF91CF91089581E090E0E7 +:101DD000F8940C94EB0E10E0C3E6D0E004C0FE01D2 +:101DE0000E94F80B2196C436D107C9F7F894FFCFAB +:101DF0000000DF0220000000000023019000BA0074 +:101E00007001EB00C900DD00000000002702FA01AC +:101E10005702CE01F201DE01CF010D0A004E6F77AD +:0A1E2000206973202D3E20003A00D7 +:00000001FF diff --git a/vscode/clock/.pio/build/nanoatmega328/lib43a/RTC_ID274/RtcDateTime.cpp.o b/vscode/clock/.pio/build/nanoatmega328/lib43a/RTC_ID274/RtcDateTime.cpp.o new file mode 100644 index 0000000..6ffb972 Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/lib43a/RTC_ID274/RtcDateTime.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/lib43a/RTC_ID274/RtcUtility.cpp.o b/vscode/clock/.pio/build/nanoatmega328/lib43a/RTC_ID274/RtcUtility.cpp.o new file mode 100644 index 0000000..1c15ecb Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/lib43a/RTC_ID274/RtcUtility.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/lib43a/libRTC_ID274.a b/vscode/clock/.pio/build/nanoatmega328/lib43a/libRTC_ID274.a new file mode 100644 index 0000000..d8fe46b Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/lib43a/libRTC_ID274.a differ diff --git a/vscode/clock/.pio/build/nanoatmega328/lib59f/Adafruit NeoPixel_ID28/Adafruit_NeoPixel.cpp.o b/vscode/clock/.pio/build/nanoatmega328/lib59f/Adafruit NeoPixel_ID28/Adafruit_NeoPixel.cpp.o new file mode 100644 index 0000000..e2e351d Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/lib59f/Adafruit NeoPixel_ID28/Adafruit_NeoPixel.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/lib59f/Adafruit NeoPixel_ID28/esp8266.c.o b/vscode/clock/.pio/build/nanoatmega328/lib59f/Adafruit NeoPixel_ID28/esp8266.c.o new file mode 100644 index 0000000..cd66acd Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/lib59f/Adafruit NeoPixel_ID28/esp8266.c.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/lib59f/libAdafruit NeoPixel_ID28.a b/vscode/clock/.pio/build/nanoatmega328/lib59f/libAdafruit NeoPixel_ID28.a new file mode 100644 index 0000000..7166480 Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/lib59f/libAdafruit NeoPixel_ID28.a differ diff --git a/vscode/clock/.pio/build/nanoatmega328/libFrameworkArduino.a b/vscode/clock/.pio/build/nanoatmega328/libFrameworkArduino.a new file mode 100644 index 0000000..b9ee33d Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/libFrameworkArduino.a differ diff --git a/vscode/clock/.pio/build/nanoatmega328/libFrameworkArduinoVariant.a b/vscode/clock/.pio/build/nanoatmega328/libFrameworkArduinoVariant.a new file mode 100644 index 0000000..8b277f0 --- /dev/null +++ b/vscode/clock/.pio/build/nanoatmega328/libFrameworkArduinoVariant.a @@ -0,0 +1 @@ +! diff --git a/vscode/clock/.pio/build/nanoatmega328/libd49/Wire/Wire.cpp.o b/vscode/clock/.pio/build/nanoatmega328/libd49/Wire/Wire.cpp.o new file mode 100644 index 0000000..b9a8038 Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/libd49/Wire/Wire.cpp.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/libd49/Wire/utility/twi.c.o b/vscode/clock/.pio/build/nanoatmega328/libd49/Wire/utility/twi.c.o new file mode 100644 index 0000000..3a997c3 Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/libd49/Wire/utility/twi.c.o differ diff --git a/vscode/clock/.pio/build/nanoatmega328/libd49/libWire.a b/vscode/clock/.pio/build/nanoatmega328/libd49/libWire.a new file mode 100644 index 0000000..6b08002 Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/libd49/libWire.a differ diff --git a/vscode/clock/.pio/build/nanoatmega328/src/clock.cpp.o b/vscode/clock/.pio/build/nanoatmega328/src/clock.cpp.o new file mode 100644 index 0000000..239d88c Binary files /dev/null and b/vscode/clock/.pio/build/nanoatmega328/src/clock.cpp.o differ diff --git a/vscode/clock/.pio/build/project.checksum b/vscode/clock/.pio/build/project.checksum new file mode 100644 index 0000000..26fbb2d --- /dev/null +++ b/vscode/clock/.pio/build/project.checksum @@ -0,0 +1 @@ +ff781d083fae9e0bd9253df143495503eec5b6e2 \ No newline at end of file diff --git a/vscode/clock/.vscode/c_cpp_properties.json b/vscode/clock/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..cd4c60e --- /dev/null +++ b/vscode/clock/.vscode/c_cpp_properties.json @@ -0,0 +1,63 @@ +{ + "configurations": [ + { + "name": "!!! WARNING !!! AUTO-GENERATED FILE, PLEASE DO NOT MODIFY IT AND USE https://docs.platformio.org/page/projectconf/section_env_build.html#build-flags" + }, + { + "name": "Win32", + "includePath": [ + "c:/Users/jnoack/Documents/GITs/infinityledclock/vscode/clock/include", + "c:/Users/jnoack/Documents/GITs/infinityledclock/vscode/clock/src", + "C:/Users/jnoack/.platformio/packages/framework-arduino-avr/libraries/Wire/src", + "C:/Users/jnoack/.platformio/lib/RTC_ID274/src", + "C:/Users/jnoack/.platformio/lib/Adafruit NeoPixel_ID28", + "C:/Users/jnoack/.platformio/packages/framework-arduino-avr/cores/arduino", + "C:/Users/jnoack/.platformio/packages/framework-arduino-avr/variants/eightanaloginputs", + "C:/Users/jnoack/.platformio/packages/framework-arduino-avr/libraries/SPI/src", + "C:/Users/jnoack/.platformio/lib/DS3231_ID1379", + "C:/Users/jnoack/.platformio/lib/ESP32Servo_ID4744/src", + "C:/Users/jnoack/.platformio/lib/TimerOne_ID131", + "C:/Users/jnoack/.platformio/packages/framework-arduino-avr/libraries/EEPROM/src", + "C:/Users/jnoack/.platformio/packages/framework-arduino-avr/libraries/HID/src", + "C:/Users/jnoack/.platformio/packages/framework-arduino-avr/libraries/SoftwareSerial/src", + "C:/Users/jnoack/.platformio/packages/tool-unity", + "" + ], + "browse": { + "limitSymbolsToIncludedHeaders": true, + "path": [ + "c:/Users/jnoack/Documents/GITs/infinityledclock/vscode/clock/include", + "c:/Users/jnoack/Documents/GITs/infinityledclock/vscode/clock/src", + "C:/Users/jnoack/.platformio/packages/framework-arduino-avr/libraries/Wire/src", + "C:/Users/jnoack/.platformio/lib/RTC_ID274/src", + "C:/Users/jnoack/.platformio/lib/Adafruit NeoPixel_ID28", + "C:/Users/jnoack/.platformio/packages/framework-arduino-avr/cores/arduino", + "C:/Users/jnoack/.platformio/packages/framework-arduino-avr/variants/eightanaloginputs", + "C:/Users/jnoack/.platformio/packages/framework-arduino-avr/libraries/SPI/src", + "C:/Users/jnoack/.platformio/lib/DS3231_ID1379", + "C:/Users/jnoack/.platformio/lib/ESP32Servo_ID4744/src", + "C:/Users/jnoack/.platformio/lib/TimerOne_ID131", + "C:/Users/jnoack/.platformio/packages/framework-arduino-avr/libraries/EEPROM/src", + "C:/Users/jnoack/.platformio/packages/framework-arduino-avr/libraries/HID/src", + "C:/Users/jnoack/.platformio/packages/framework-arduino-avr/libraries/SoftwareSerial/src", + "C:/Users/jnoack/.platformio/packages/tool-unity", + "" + ] + }, + "defines": [ + "PLATFORMIO=40100", + "ARDUINO_AVR_NANO", + "F_CPU=16000000L", + "ARDUINO_ARCH_AVR", + "ARDUINO=10808", + "__AVR_ATmega328P__", + "" + ], + "intelliSenseMode": "clang-x64", + "cStandard": "c11", + "cppStandard": "c++11", + "compilerPath": "\"C:/Users/jnoack/.platformio/packages/toolchain-atmelavr@1.50400.190710/bin/avr-gcc.exe\" -mmcu=atmega328p" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/vscode/clock/.vscode/launch.json b/vscode/clock/.vscode/launch.json new file mode 100644 index 0000000..3e7e5c6 --- /dev/null +++ b/vscode/clock/.vscode/launch.json @@ -0,0 +1,32 @@ +// AUTOMATICALLY GENERATED FILE. PLEASE DO NOT MODIFY IT MANUALLY + +// PIO Unified Debugger +// +// Documentation: https://docs.platformio.org/page/plus/debugging.html +// Configuration: https://docs.platformio.org/page/projectconf/section_env_debug.html + +{ + "version": "0.2.0", + "configurations": [ + { + "type": "platformio-debug", + "request": "launch", + "name": "PIO Debug", + "executable": "c:/Users/jnoack/Documents/GITs/infinityledclock/vscode/clock/.pio/build/nanoatmega328/firmware.elf", + "toolchainBinDir": "C:/Users/jnoack/.platformio/packages/toolchain-atmelavr@1.50400.190710/bin", + "preLaunchTask": { + "type": "PlatformIO", + "task": "Pre-Debug" + }, + "internalConsoleOptions": "openOnSessionStart" + }, + { + "type": "platformio-debug", + "request": "launch", + "name": "PIO Debug (skip Pre-Debug)", + "executable": "c:/Users/jnoack/Documents/GITs/infinityledclock/vscode/clock/.pio/build/nanoatmega328/firmware.elf", + "toolchainBinDir": "C:/Users/jnoack/.platformio/packages/toolchain-atmelavr@1.50400.190710/bin", + "internalConsoleOptions": "openOnSessionStart" + } + ] +} \ No newline at end of file diff --git a/vscode/infclock/.pio/build/env1/.sconsign.py36.dblite b/vscode/infclock/.pio/build/env1/.sconsign.py36.dblite index 6a05016..7d3dca3 100644 Binary files a/vscode/infclock/.pio/build/env1/.sconsign.py36.dblite and b/vscode/infclock/.pio/build/env1/.sconsign.py36.dblite differ diff --git a/vscode/infclock/.pio/build/env1/firmware.bin b/vscode/infclock/.pio/build/env1/firmware.bin index 449ed25..1b99dac 100644 Binary files a/vscode/infclock/.pio/build/env1/firmware.bin and b/vscode/infclock/.pio/build/env1/firmware.bin differ diff --git a/vscode/infclock/.pio/build/env1/firmware.elf b/vscode/infclock/.pio/build/env1/firmware.elf index 5859320..c80af82 100644 Binary files a/vscode/infclock/.pio/build/env1/firmware.elf and b/vscode/infclock/.pio/build/env1/firmware.elf differ diff --git a/vscode/infclock/.pio/build/env1/lib283/libSPI.a b/vscode/infclock/.pio/build/env1/lib283/libSPI.a index 37cb9f2..5e34c52 100644 Binary files a/vscode/infclock/.pio/build/env1/lib283/libSPI.a and b/vscode/infclock/.pio/build/env1/lib283/libSPI.a differ diff --git a/vscode/infclock/.pio/build/env1/lib666/libSoftwareSerial.a b/vscode/infclock/.pio/build/env1/lib666/libSoftwareSerial.a index c7b3ad4..a1232a2 100644 Binary files a/vscode/infclock/.pio/build/env1/lib666/libSoftwareSerial.a and b/vscode/infclock/.pio/build/env1/lib666/libSoftwareSerial.a differ diff --git a/vscode/infclock/.pio/build/env1/lib76b/libFastLED_ID126.a b/vscode/infclock/.pio/build/env1/lib76b/libFastLED_ID126.a index 1076c8a..4f07283 100644 Binary files a/vscode/infclock/.pio/build/env1/lib76b/libFastLED_ID126.a and b/vscode/infclock/.pio/build/env1/lib76b/libFastLED_ID126.a differ diff --git a/vscode/infclock/.pio/build/env1/libFrameworkArduino.a b/vscode/infclock/.pio/build/env1/libFrameworkArduino.a index 03a4d99..eecb3a3 100644 Binary files a/vscode/infclock/.pio/build/env1/libFrameworkArduino.a and b/vscode/infclock/.pio/build/env1/libFrameworkArduino.a differ diff --git a/vscode/infclock/.pio/build/env1/src/clockelements.cpp.o b/vscode/infclock/.pio/build/env1/src/clockelements.cpp.o deleted file mode 100644 index 7cce6ef..0000000 Binary files a/vscode/infclock/.pio/build/env1/src/clockelements.cpp.o and /dev/null differ diff --git a/vscode/infclock/.pio/build/env1/src/main.cpp.o b/vscode/infclock/.pio/build/env1/src/main.cpp.o index d898dfc..d902811 100644 Binary files a/vscode/infclock/.pio/build/env1/src/main.cpp.o and b/vscode/infclock/.pio/build/env1/src/main.cpp.o differ diff --git a/vscode/infclock/.pio/build/project.checksum b/vscode/infclock/.pio/build/project.checksum index d291b2e..6d5bbd8 100644 --- a/vscode/infclock/.pio/build/project.checksum +++ b/vscode/infclock/.pio/build/project.checksum @@ -1 +1 @@ -8eef9632a3892fcc0c09db17be5184cc16cc1602 \ No newline at end of file +04494c3f57e718d0fb8180e31fe62686bf2f9497 \ No newline at end of file diff --git a/vscode/infclock/include/led_clock.hpp b/vscode/infclock/include/led_clock.hpp new file mode 100644 index 0000000..eb4fc69 --- /dev/null +++ b/vscode/infclock/include/led_clock.hpp @@ -0,0 +1,60 @@ + +#include "led_clockelements.hpp" + + + +class led_clock : protected elements +{ +private: + + static const uint8_t PIN_PIXELS = D3; //6; + + static const uint16_t NUM_RING_PIXELS = 180U; + static const uint8_t NUM_SECONDS = 60U; + static const uint16_t NUM_RING_SEC_PIXELS = NUM_RING_PIXELS/NUM_SECONDS; + static const uint8_t NUM_MINUTES = 60U; + static const uint16_t NUM_RING_MIN_PIXELS = 1; + static const uint16_t NUM_POINTER_PIXELS = 6U; + static const uint16_t NUM_POINTERS = 12U; + static const uint16_t NUM_POINTERS_PIXELS = NUM_POINTER_PIXELS * NUM_POINTERS; + static const int16_t NUM_NUMBERS = 12U; + const uint16_t NUM_NUMBER_PIXELS[NUM_NUMBERS] = {2,4,4,4,4,4,4,4,4,5,3,5}; + const uint16_t NUM_NUMBERS_PIXELS = NUM_NUMBER_PIXELS[0] + NUM_NUMBER_PIXELS[1] + NUM_NUMBER_PIXELS[2] + NUM_NUMBER_PIXELS[3] + NUM_NUMBER_PIXELS[4] + NUM_NUMBER_PIXELS[5] + NUM_NUMBER_PIXELS[6] + NUM_NUMBER_PIXELS[7] + NUM_NUMBER_PIXELS[8] + NUM_NUMBER_PIXELS[9] + NUM_NUMBER_PIXELS[10] + NUM_NUMBER_PIXELS[11]; + const uint16_t NUM_ALL_PIXELS = NUM_RING_PIXELS + NUM_POINTERS_PIXELS + NUM_NUMBERS_PIXELS; + + const hue_color COLOR_SECS = {HUE_GREEN,255,128}; // green + const hue_color COLOR_HOURS = {HUE_RED,255,128}; // red + const hue_color COLOR_MINS = {HUE_BLUE,255,128}; // blue + const hue_color COLOR_NUMS = {0,0,255}; // white + enum color_type {COL_SECOND = 0, COL_MINUTE, COL_HOUR, COL_NUM, COL_LAST}; + hue_color color[COL_LAST] = {COLOR_SECS, COLOR_MINS, COLOR_HOURS, COLOR_NUMS}; + + + CRGB * pixels; + + elements number[NUM_NUMBERS]; + elements pointer[NUM_POINTERS]; + elements ringsecs[NUM_SECONDS]; + elements ringmins[NUM_MINUTES]; + + unsigned int pixels_test; + + void init_ringmins(void); + void init_ringsecs(void); + void init_numbers(void); + void init_pointers(void); + void init_test_pixel(void); + + void show_hour( uint8_t hour, uint8_t minute); + void show_minute( uint8_t minute ); + void animate_new_minute( uint8_t minute , uint8_t second, uint8_t hour); + void animate_new_hour( uint8_t minute , uint8_t second, uint8_t hour); + +public: + + enum test_type {TEST_NONE=0, TEST_PIXELS=1, TEST_SECS=2, TEST_MINS=4,TEST_PTRS=8,TEST_NUMS=16, TEST_ALL = 31}; + void init(unsigned test_at_start = TEST_NONE); + void init(hue_color color_secs, hue_color color_mins, hue_color color_hours, hue_color color_nums, unsigned test_at_start); + void showtime(uint8_t hour, uint8_t minute, uint8_t second); + +}; \ No newline at end of file diff --git a/vscode/infclock/include/clockelements.hpp b/vscode/infclock/include/led_clockelements.hpp similarity index 72% rename from vscode/infclock/include/clockelements.hpp rename to vscode/infclock/include/led_clockelements.hpp index e5393da..9147537 100644 --- a/vscode/infclock/include/clockelements.hpp +++ b/vscode/infclock/include/led_clockelements.hpp @@ -10,12 +10,13 @@ uint8_t sat; uint8_t bright; } hue_color; -#define FASTLEDDLY 2 + class elements { private: /* data */ + #define FASTLEDDLY 1 #define BRIGHTNESS 128 #define SATURATION 255 public: @@ -35,9 +36,10 @@ public: void fill(hue_color huecolor); void fill(void); void clean(void); - void ffill(unsigned int fraction, uint8_t huecolor, uint8_t saturation = SATURATION, uint8_t brightness = BRIGHTNESS); - void ffill(unsigned int fraction, hue_color huecolor); - void ffill(unsigned int fraction); + void ffill(unsigned int fraction, unsigned int fullvalue, uint8_t huecolor, uint8_t saturation = SATURATION, uint8_t brightness = BRIGHTNESS); + void ffill(unsigned int fraction, unsigned int fullvalue, hue_color huecolor); + void ffill(unsigned int fraction, unsigned int fullvalue); + void show(void); }; diff --git a/vscode/infclock/src/led_clock.cpp b/vscode/infclock/src/led_clock.cpp new file mode 100644 index 0000000..ba5dc3f --- /dev/null +++ b/vscode/infclock/src/led_clock.cpp @@ -0,0 +1,210 @@ + +#include "led_clock.hpp" + +void led_clock::init( unsigned test_at_start) +{ + init(COLOR_SECS , COLOR_MINS , COLOR_HOURS , COLOR_NUMS, test_at_start); +} + +void led_clock::init(hue_color color_secs, hue_color color_mins, hue_color color_hours, hue_color color_nums, unsigned test_at_start) +{ + pixels_test = test_at_start; + color[COL_SECOND] = color_secs; + color[COL_MINUTE] = color_mins; + color[COL_HOUR] = color_hours; + color[COL_NUM] = color_nums; + + init_test_pixel(); + init_ringsecs(); + init_ringmins(); + init_pointers(); + init_numbers(); + + //Serial.printf("Init pixels - first:%d last:%d number:%d outsidetoinside:%d\n", element_first_pixel, element_last_pixel, element_number_pixels, element_outside2inside); +} + +void led_clock::init_ringmins() { + // init all the seconds shown on the ring + Serial.println("Init minutes on outer ring ..."); + unsigned int current_first_led = 1; + for(uint8_t num = 0; num < NUM_MINUTES; num++) + { + ringmins[num].init(pixels, current_first_led, NUM_RING_MIN_PIXELS, color[COL_MINUTE]); + ringmins[num].clean(); + if(pixels_test & TEST_MINS) + ringmins[num].test(true); + current_first_led += NUM_RING_PIXELS/NUM_MINUTES; + } +} + +void led_clock::init_ringsecs() { + // init all the seconds shown on the ring + Serial.println("Init seconds on outer ring ..."); + unsigned int current_first_led = 0; + for(uint8_t num = 0; num < NUM_SECONDS; num++) + { + ringsecs[num].init(pixels, current_first_led, NUM_RING_SEC_PIXELS, color[COL_SECOND]); + ringsecs[num].clean(); + if(pixels_test & TEST_SECS) + ringsecs[num].test(true); + current_first_led += NUM_RING_SEC_PIXELS; + } +} + +void led_clock::init_numbers() { + // init all the numbers + Serial.println("Init numbers ..."); + unsigned int current_first_led = NUM_RING_PIXELS + NUM_POINTERS_PIXELS; + for(uint8_t num = 0; num < NUM_NUMBERS; num++) + { + uint8_t real_num = num == 11? 0 : num + 1; + number[real_num].init(pixels, current_first_led, NUM_NUMBER_PIXELS[num],color[COL_NUM]); + number[real_num].clean(); + if(pixels_test & TEST_NUMS) + number[real_num].test(true); + current_first_led += NUM_NUMBER_PIXELS[num]; + } +} + +void led_clock::init_pointers() { + Serial.println("Init pointers ..."); + // init all the pointers - each as 6 leds, starts at 12,11,10 ... 1, each even is inversed (goes from outside into center) + unsigned int current_first_led = NUM_RING_PIXELS; + bool is_insideoutside = false; + + for(int8_t num = NUM_POINTERS-1; num >= 0; num--) + { + uint8_t real_num = num == 11? 0 : num + 1; + is_insideoutside = num%2==0? false:true; + pointer[real_num].init(pixels, current_first_led, NUM_POINTER_PIXELS ,color[COL_MINUTE],is_insideoutside); + pointer[real_num].clean(); + if(pixels_test & TEST_PTRS) + pointer[real_num].test(); + current_first_led += NUM_POINTER_PIXELS; + } +} + +void led_clock::init_test_pixel() +{ + pixels = (CRGB*) malloc(NUM_ALL_PIXELS * sizeof(CRGB) ); + FastLED.clearData(); + FastLED.addLeds(pixels, NUM_ALL_PIXELS); // GRB ordering is typical + FastLED.clear(true); + Serial.printf("Init LED pixels %d \n",NUM_ALL_PIXELS); + if(pixels_test & TEST_PIXELS) + for(unsigned char col = COL_SECOND; col < COL_LAST; col++) + { + unsigned int pixel = 0; + for(pixel = 0; pixel < NUM_ALL_PIXELS; pixel++) + { + if(pixel > 0) + { + pixels[pixel-1] = CHSV(0,0,0); + } + pixels[pixel] = CHSV(color[col].hue, color[col].sat, color[col].bright); + show(); + } + FastLED.clear(true); + } +} + +void led_clock::show_minute( uint8_t minute ) +{ + for(uint8_t minnr = 0; minnr < minute; minnr++) + { + if(minnr % 5 == 0) + { + ringmins[minnr].fill(ringmins[minnr].elements_huecolor.hue, ringmins[minnr].elements_huecolor.sat, ringmins[minnr].elements_huecolor.bright/2); + } + else + { + ringmins[minnr].fill(ringmins[minnr].elements_huecolor.hue, ringmins[minnr].elements_huecolor.sat, ringmins[minnr].elements_huecolor.bright/8); + } + } + ringmins[minute].fill(); +} + +void led_clock::animate_new_minute( uint8_t minute , uint8_t second, uint8_t hour) +{ + uint8_t old_minute = minute==0?NUM_MINUTES-1:minute-1; + FastLED.clearData(); + show_minute( old_minute ); + show_hour( hour, old_minute); + ringsecs[second].fill(); + show(); + + for(uint8_t minnr = 1; minnr < minute; minnr++) + { + ringmins[minnr].fill(); + if(minnr > 1){ + if(minnr-1 % 5 != 0) + ringmins[minnr-1].fill(ringmins[minnr-1].elements_huecolor.hue, ringmins[minnr-1].elements_huecolor.sat, ringmins[minnr-1].elements_huecolor.bright/8); + else + ringmins[minnr-1].fill(ringmins[minnr-1].elements_huecolor.hue, ringmins[minnr-1].elements_huecolor.sat, ringmins[minnr-1].elements_huecolor.bright/2); + + } + show(); + } +} + +void led_clock::animate_new_hour( uint8_t minute , uint8_t second, uint8_t hour) +{ + uint8_t old_hour = hour==0?11:hour-1; + uint8_t old_minute = NUM_MINUTES-1; + FastLED.clearData(); + show_minute( old_minute ); + show_hour( old_hour, old_minute); + ringsecs[second].fill(); + show(); + + for(uint8_t minnr = 1; minnr < NUM_MINUTES; minnr++) + { + ringmins[minnr].clean(); + show(); + } +} + + +void led_clock::show_hour( uint8_t hour, uint8_t minute) +{ + + uint8_t next_hour = hour == 11? 0:hour+1; + uint8_t brightness = number[hour].elements_huecolor.bright; + uint8_t basebrightness = brightness/6; + uint8_t minutebrightness = (brightness-basebrightness)/NUM_MINUTES; + uint8_t fractionbrightness = minutebrightness * minute; + uint8_t numbrightness = (uint8_t)(basebrightness + fractionbrightness); + + //Serial.printf("Show hour: minute=%d, basebright=%d, mintebright=%d, fractionbright=%d, bright=%d\n", minute, basebrightness, minutebrightness, fractionbrightness, numbrightness ); + + number[hour].fill(number[hour].elements_huecolor.hue, number[hour].elements_huecolor.sat,brightness-numbrightness); + number[next_hour].fill(number[next_hour].elements_huecolor.hue, number[next_hour].elements_huecolor.sat,numbrightness); + pointer[hour].ffill(NUM_MINUTES-minute, NUM_MINUTES); + pointer[next_hour].ffill(minute, NUM_MINUTES); + +} + +void led_clock::showtime(uint8_t hour, uint8_t minute, uint8_t second) +{ + if(second == 0) + { + if(minute!=0) + { + animate_new_minute( minute , second, hour); + } + else + { + animate_new_hour( minute , second, hour); + } + + } + else + { + FastLED.clearData(); + show_minute( minute ); + ringsecs[second].fill(); + show_hour( hour, minute); + show(); + } +} + diff --git a/vscode/infclock/src/clockelements.cpp b/vscode/infclock/src/led_clockelements.cpp similarity index 59% rename from vscode/infclock/src/clockelements.cpp rename to vscode/infclock/src/led_clockelements.cpp index fe98a52..d7a2559 100644 --- a/vscode/infclock/src/clockelements.cpp +++ b/vscode/infclock/src/led_clockelements.cpp @@ -1,4 +1,4 @@ -#include "clockelements.hpp" +#include "led_clockelements.hpp" void elements::init(CRGB *pixels, unsigned int first_led, unsigned int number_leds, hue_color huecolor, bool outside2inside) { @@ -11,6 +11,12 @@ void elements::init(CRGB *pixels, unsigned int first_led, unsigned int number_le //Serial.printf("Init pixels - first:%d last:%d number:%d outsidetoinside:%d\n", element_first_pixel, element_last_pixel, element_number_pixels, element_outside2inside); } +void elements::show(void) +{ + FastLED.show(); + delay(FASTLEDDLY); +} + void elements::clean(void) { fill(0, 0, 0); @@ -30,25 +36,22 @@ void elements::test(uint8_t huecolor, uint8_t saturation, uint8_t brightness, bo { unsigned int setpix = element_outside2inside == true? element_last_pixel: element_first_pixel ; char plus_minus = element_outside2inside == true? -1:1; - for(uint8_t nrpixel = 0; nrpixel < element_number_pixels; nrpixel++) + for(unsigned int nrpixel = 0; nrpixel < element_number_pixels; nrpixel++) { element_pixels[setpix] = CHSV(huecolor,saturation, brightness); setpix = setpix + plus_minus; if( all_at_once == false) { - FastLED.show(); - delay(FASTLEDDLY); + show(); } } if( all_at_once == true) { - FastLED.show(); - delay(FASTLEDDLY); + show(); } delay(100); clean(); - FastLED.show(); - delay(FASTLEDDLY); + show(); } void elements::fill(void) @@ -63,41 +66,40 @@ void elements::fill(hue_color huecolor) void elements::fill(uint8_t huecolor, uint8_t saturation, uint8_t brightness) { - for(uint8_t nrpixel = element_first_pixel; nrpixel <= element_last_pixel; nrpixel++) + for(unsigned int nrpixel = element_first_pixel; nrpixel <= element_last_pixel; nrpixel++) { element_pixels[nrpixel] = CHSV(huecolor,saturation, brightness); } } -void elements::ffill(unsigned int fraction) +void elements::ffill(unsigned int fraction, unsigned int fullvalue) { - ffill(fraction, elements_huecolor.hue, elements_huecolor.sat, elements_huecolor.bright); + ffill(fraction, fullvalue, elements_huecolor.hue, elements_huecolor.sat, elements_huecolor.bright); } -void elements::ffill(unsigned int fraction, hue_color huecolor) +void elements::ffill(unsigned int fraction, unsigned int fullvalue, hue_color huecolor) { - ffill(fraction, huecolor.hue, huecolor.sat, huecolor.bright); + ffill(fraction, fullvalue, huecolor.hue, huecolor.sat, huecolor.bright); } -void elements::ffill(unsigned int fraction, uint8_t huecolor, uint8_t saturation, uint8_t brightness) +void elements::ffill(unsigned int fraction, unsigned int fullvalue, uint8_t huecolor, uint8_t saturation, uint8_t brightness) { - uint8_t fullpixels = element_number_pixels / fraction; - uint8_t partpixels = element_number_pixels % fraction; - elements_fraction = brightness / (60/element_number_pixels); - uint8_t part_brightness = elements_fraction * partpixels; + unsigned int value_of_pixel = fullvalue / element_number_pixels; //this is what part one pixel of the element represents of the full value + unsigned int fullpixels = fraction / value_of_pixel; //the number of pixels that represents the fraction (part of the fullvalue) + unsigned int partialpixel = fraction % value_of_pixel; //the left over of the division of fraction and value of one pixel + uint8_t partial_brightness = (uint8_t)((brightness/element_number_pixels)*partialpixel); unsigned int current_pixel = 0; - - for(uint8_t num = 0; num < fullpixels; num++) + for(unsigned int num = 0; num < fullpixels; num++) { current_pixel = element_outside2inside==true? element_last_pixel - num : element_first_pixel + num; element_pixels[current_pixel] = CHSV(huecolor,saturation, brightness); } - if(partpixels > 0) + if(partialpixel > 0) { current_pixel = element_outside2inside==true? element_last_pixel - fullpixels : element_first_pixel + fullpixels; - element_pixels[current_pixel] = CHSV(huecolor,saturation, part_brightness); + element_pixels[current_pixel] = CHSV(huecolor,saturation, partial_brightness); } } diff --git a/vscode/infclock/src/main.cpp b/vscode/infclock/src/main.cpp index 9732129..0c14b4e 100644 --- a/vscode/infclock/src/main.cpp +++ b/vscode/infclock/src/main.cpp @@ -3,43 +3,13 @@ //#include // must be included here so that Arduino library object file references work //#include - -#include "clockelements.hpp" +#include "led_clock.hpp" +led_clock ledclock; //SoftwareWire myWire(A4, A5); //RtcDS3231 Rtc(myWire); const unsigned int PIN_BUZZER = 9; -const uint8_t PIN_PIXELS = D3; //6; - -const uint16_t NUM_RING_PIXELS = 180U; -const uint8_t NUM_SECONDS = 60U; -const uint16_t NUM_RING_SEC_PIXELS = NUM_RING_PIXELS/NUM_SECONDS; -const uint8_t NUM_MINUTES = 60U; -const uint16_t NUM_RING_MIN_PIXELS = 1; -const uint16_t NUM_POINTER_PIXELS = 6U; -const uint16_t NUM_POINTERS = 12U; -const uint16_t NUM_POINTERS_PIXELS = NUM_POINTER_PIXELS * NUM_POINTERS; -const int16_t NUM_NUMBERS = 12U; -const uint16_t NUM_NUMBER_PIXELS[NUM_NUMBERS] = {2,4,4,4,4,4,4,4,4,4,4,5}; -const uint16_t NUM_NUMBERS_PIXELS = NUM_NUMBER_PIXELS[0] + NUM_NUMBER_PIXELS[1] + NUM_NUMBER_PIXELS[2] + NUM_NUMBER_PIXELS[3] + NUM_NUMBER_PIXELS[4] + NUM_NUMBER_PIXELS[5] + NUM_NUMBER_PIXELS[6] + NUM_NUMBER_PIXELS[7] + NUM_NUMBER_PIXELS[8] + NUM_NUMBER_PIXELS[9] + NUM_NUMBER_PIXELS[10] + NUM_NUMBER_PIXELS[11]; -const uint16_t NUM_ALL_PIXELS = NUM_RING_PIXELS + NUM_POINTERS_PIXELS + NUM_NUMBERS_PIXELS; - -CRGB * pixels; - -//Adafruit_NeoPixel pixels(NUM_ALL_PIXELS, PIN_PIXELS, NEO_GRB + NEO_KHZ800); - -elements number[NUM_NUMBERS]; -elements pointer[NUM_POINTERS]; -elements ringsecs[NUM_SECONDS]; -elements ringmins[NUM_MINUTES]; - -const hue_color COLOR_SECS = {HUE_GREEN,255,128}; // green -const hue_color COLOR_HOURS = {HUE_RED,255,128}; // red -const hue_color COLOR_MINS = {HUE_BLUE,255,128}; // blue -const hue_color COLOR_NUMS = {0,0,255}; // white -const hue_color color[] = {COLOR_SECS, COLOR_MINS, COLOR_HOURS, COLOR_NUMS}; -enum color_type {COL_SECOND = 0, COL_MINUTE, COL_HOUR, COL_NUM, COL_LAST}; const int TICK_FREQ = 40; const int TICK_DLY = 13; @@ -47,6 +17,11 @@ const int TOCK_FREQ = 15; const int TOCK_DLY = 35; bool tick_not_tock = true; +const hue_color COLOR_SECS = {HUE_GREEN,255,128}; // green +const hue_color COLOR_HOURS = {HUE_RED,255,128}; // red +const hue_color COLOR_MINS = {HUE_BLUE,255,128}; // blue +const hue_color COLOR_NUMS = {0,0,255}; // white + /* void init_rtc() { @@ -95,60 +70,6 @@ void init_rtc() } */ -void init_ringmins() { - // init all the seconds shown on the ring - Serial.println("Init minutes on outer ring ..."); - unsigned int current_first_led = 1; - for(uint8_t num = 0; num < NUM_MINUTES; num++) - { - ringmins[num].init(pixels, current_first_led, NUM_RING_MIN_PIXELS, color[COL_MINUTE]); - ringmins[num].clean(); - //ringmins[num].test(true); - current_first_led += NUM_RING_PIXELS/NUM_MINUTES; - } -} - -void init_ringsecs() { - // init all the seconds shown on the ring - Serial.println("Init seconds on outer ring ..."); - unsigned int current_first_led = 0; - for(uint8_t num = 0; num < NUM_SECONDS; num++) - { - ringsecs[num].init(pixels, current_first_led, NUM_RING_SEC_PIXELS, color[COL_SECOND]); - ringsecs[num].clean(); - //ringsecs[num].test(true); - current_first_led += NUM_RING_SEC_PIXELS; - } -} - -void init_numbers() { - // init all the numbers - Serial.println("Init numbers ..."); - unsigned int current_first_led = NUM_RING_PIXELS + NUM_POINTERS_PIXELS; - for(uint8_t num = 0; num < NUM_NUMBERS; num++) - { - number[num].init(pixels, current_first_led, NUM_NUMBER_PIXELS[num],color[COL_NUM]); - number[num].clean(); - number[num].test(true); - current_first_led += NUM_NUMBER_PIXELS[num]; - } -} - -void init_pointers() { - Serial.println("Init pointers ..."); - // init all the pointers - each as 6 leds, starts at 12,11,10 ... 1, each even is inversed (goes from outside into center) - unsigned int current_first_led = NUM_RING_PIXELS; - bool is_insideoutside = false; - for(int8_t num = NUM_POINTERS-1; num >= 0; num--) - { - is_insideoutside = num%2==0? false:true; - pointer[num].init(pixels, current_first_led, NUM_POINTER_PIXELS ,color[COL_MINUTE],is_insideoutside); - pointer[num].clean(); - //pointer[num].test(); - current_first_led += NUM_POINTER_PIXELS; - } -} - /* void tick_tock() { @@ -160,47 +81,15 @@ void tick_tock() } */ -void init_test_pixel() -{ - pixels = (CRGB*) malloc(NUM_ALL_PIXELS * sizeof(CRGB) ); - FastLED.clearData(); - FastLED.addLeds(pixels, NUM_ALL_PIXELS); // GRB ordering is typical - FastLED.clear(true); - Serial.printf("Init LED pixels %d \n",NUM_ALL_PIXELS); - /* - for(unsigned char col = COL_SECOND; col < COL_LAST; col++) - { - unsigned int pixel = 0; - for(pixel = 0; pixel < NUM_ALL_PIXELS; pixel++) - { - if(pixel > 0) - { - pixels[pixel-1] = CHSV(0,0,0); - } - pixels[pixel] = CHSV(color[col].hue, color[col].sat, color[col].bright); - FastLED.show(); - delay(FASTLEDDLY); - } - pixels[pixel] = CHSV(0,0,0); - FastLED.show(); - delay(FASTLEDDLY); - } - */ - Serial.println("Done."); -} void setup() { ESP.wdtEnable(5000); Serial.begin(115200); Serial.println("Lets tick ... tock ... tick ... tock ... "); - // put your setup code here, to run once: - init_test_pixel(); - init_ringsecs(); - init_ringmins(); - init_pointers(); - init_numbers(); + ledclock.init(COLOR_SECS, COLOR_MINS, COLOR_HOURS, COLOR_NUMS, ledclock.TEST_NONE ); + //init_rtc(); } @@ -236,21 +125,26 @@ void loop() { } */ - - for(unsigned int second = 0; second<60; second++) + while (0 == 0) { - minute = second == 59 ? minute + 1 : minute; - hour = minute == 60 ? hour+1 : hour; - minute = minute > 59 ? 0 : minute; - hour = hour > 11 ? 0 : hour; - - FastLED.clearData(); - ringsecs[second].fill(); - ringmins[minute].fill(); - number[hour].fill(); - FastLED.show(); - delay(100); + second = second + 1; + if(second > 59) + { + second = 0; + minute++; + if(minute > 59) + { + minute = 0; + hour++; + if(hour > 11) + { + hour = 0; + } + } + } + ledclock.showtime(hour,minute,second); + //Serial.printf("%02d : %02d : %02d \n" , hour, minute, second); }