Skip to content

Commit 833aa29

Browse files
authored
Change#066
I fixed a few bugs, the first one was related to the time setting, when the actual time was 5 minutes behind the one set, and the second one was an overflow of the pressed button counter.
1 parent 57656a1 commit 833aa29

File tree

2 files changed

+75
-69
lines changed

2 files changed

+75
-69
lines changed

LumiTime/Code/12LEDWachATtiny13/12LEDWachATtiny13.ino

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
The simple and "Perpetual" WristWatch(project code name "LumiTime") with 12 red LEDs, it has LIR2430 Li-Ion battery and 12 solar cells,
66
based on a simple Microchip microcontroller ATtiny13. It is fully open source (firmware and hardware).
77
8-
Sketch uses 988 bytes (96%) of program storage space. Maximum is 1024 bytes.
9-
Global variables use 13 bytes (20%) of dynamic memory, leaving 53 bytes for local variables. Maximum is 64 bytes.
8+
Sketch uses 1008 bytes (98%) of program storage space. Maximum is 1024 bytes.
9+
Global variables use 13 bytes (20%) of dynamic memory, leaving 51 bytes for local variables. Maximum is 64 bytes.
1010
1111
By Tech01 labs 2024.
1212
*/
1313

14-
#define F_CPU 1200000UL // CPU frequency set to 1.2 MHz
14+
#define F_CPU 1200000UL // CPU frequency set to 1.2 MHz mode(low_fuses=0x6A high_fuses=0xFF - defalt fuses)
1515
#include <avr/io.h> // AVR I/O library for ATtiny13
1616
#include <avr/wdt.h> // Watchdog Timer library
1717
#include <avr/sleep.h> // Sleep mode library
@@ -22,6 +22,7 @@
2222
#define msPerCycleReal 560 // Real cycle duration in milliseconds (approximately 500ms)
2323
#define MsIn12Hours 43200000 // Total milliseconds in 12 hours
2424
#define ButtonPin PINB4 // PB4 is the button pin
25+
#define TimeSetDalay 40 // TimeSetDalay / 4 = how many seconds need press the button to time set mode
2526

2627
// Global variables to store time and mode states
2728
uint8_t Hours = 9; // Default hour setting (0..11)
@@ -69,7 +70,8 @@ int main() {
6970
Mode = ShowTime(Mode); // Display current time on LEDs
7071
ButtonPressCount += 1;
7172

72-
if (ButtonPressCount >= 40 && Mode == 1) { // Increment time by 5 minutes after long press
73+
if (ButtonPressCount > TimeSetDalay && Mode == 0) { // Increment time by 5 minutes after long press
74+
ButtonPressCount = TimeSetDalay; // Overflow protect
7375
Up5Minutes();
7476
}
7577
} else {
@@ -86,7 +88,7 @@ int main() {
8688
void initHardware() {
8789
ADCSRA &= ~(1 << ADEN); // Disable Analog-to-Digital Converter (ADC)
8890
ACSR = (1 << ACD); // Disable analog comparator
89-
DDRB = 0b00000; // Set Port B as input with pull-up resistors for LEDs
91+
DDRB = 0b00000; // Set Port B as input
9092
wdt_reset(); // Reset watchdog timer
9193
wdt_enable(WDTO_500MS); // Enable watchdog timer to trigger every 500ms
9294
WDTCR |= (1 << WDTIE); // Enable watchdog interrupt
@@ -119,6 +121,11 @@ uint8_t ShowTime(uint8_t currState) {
119121
break;
120122

121123
case 1:
124+
if (ButtonPressCount > TimeSetDalay) { // Time setup mode
125+
MinutesRemainder = 0;
126+
MinutesOnLED += 1; // We have step +5 minutes
127+
}
128+
122129
LEDValue = MinutesOnLED; // Display discretized minutes
123130

124131
if (MinutesRemainder > 1) {
@@ -165,11 +172,9 @@ void DisplayOnLED(uint8_t led) { // Charlieplexing logic for LED display
165172
}
166173

167174
void Up5Minutes() {
168-
Minutes = FiveMinutesDiscrete; // Reset minutes to the nearest five
169-
TimeToMs(); // Recalculate milliseconds from hours and minutes
170-
MilliSeconds += 300000; // Add 5 minutes in milliseconds
171-
FiveMinutesDiscrete += 5; // Add 5 minutes to show LEDs
172-
MinutesRemainder = 0;
175+
Minutes = FiveMinutesDiscrete;
176+
TimeToMs();
177+
MilliSeconds += 300000;
173178
}
174179

175180
void TimeToMs() {
Lines changed: 60 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,65 @@
11
:100000000AC008C007C006C005C004C003C002C0C3
2-
:1000100082C100C01895112410E0A0E6B0E0EAED1E
2+
:100010008CC100C01895112410E0A0E6B0E0EEEE0F
33
:10002000F3E002C005900D92A236B107D9F720E0A7
44
:10003000A2E6B0E001C01D92AD36B207E1F73798F5
55
:1000400080E888B917BAA89588E19DE00FB6F894C2
6-
:10005000A89581BD0FBE91BD81B5806481BD30D1B1
7-
:10006000789485B7877E806185BF02E089E0F82EAD
8-
:10007000C1E098E0E92E2AE0C22ED5E034E0D32E8C
9-
:100080004CE3842E912CA12CB12C809168008130FE
10-
:1000900009F011C11092680086B380714091690027
11-
:1000A00050916A0060916B0070916C00405D5D4FF3
12-
:1000B0006F4F7F4F4093690050936A0060936B00CD
13-
:1000C00070936C004091690050916A0060916B00E0
14-
:1000D00070916C0041155E426349724098F0409106
15-
:1000E000690050916A0060916B0070916C005E52E3
16-
:1000F000634972404093690050936A0060936B00BB
17-
:1001000070936C0090916700811103C0992309F4EA
18-
:10011000D0C0913009F450C020F0923009F45DC095
19-
:100120009BC08091690090916A00A0916B00B09192
20-
:100130006C00892B8A2B8B2B49F410926100109252
21-
:100140006000109265001092640031C060916900F7
22-
:1001500070916A0080916B0090916C0020E83EEEF7
23-
:1001600046E350E018D120936100609169007091DE
24-
:100170006A0080916B0090916C0020E63AEE40E0BE
25-
:1001800050E009D1CA01B901A501940104D1862F1B
26-
:10019000609360006D2FF3D0292F65E0CED080935F
27-
:1001A00065006D2FECD080936300209364008091F4
28-
:1001B0006100C093620014C08091630020916400CC
29-
:1001C000223030F02150209364009093620008C0E8
30-
:1001D000109264001092620003C08091620039C0E6
31-
:1001E0008E3008F03BC0E82FF0E0E850FF4F099454
32-
:1001F0002CC00CC00EC011C013C014C016C018C053
33-
:100200001AC01BC01CC01EC020C022C083E087BB18
34-
:100210001DC093E097BB08BB22C086E087BB10C01F
35-
:1002200086E001C08CE087BB04C08CE087BB0BC0BC
36-
:10023000D7BBD8BA13C0D7BB09C0C7BA04C0C7BAA6
37-
:1002400008BB0CC0F7BAE8BA09C0F7BAC8BB06C009
38-
:1002500082E017BA18BA03C080E001C082E0809340
39-
:100260006700909166009F5F90936600983218F146
40-
:10027000813009F5109165001093600021D08091C4
41-
:10028000690090916A00A0916B00B0916C0080525F
42-
:100290009C46AB4FBF4F8093690090936A00A09338
43-
:1002A0006B00B0936C001B5F1093650010926400AC
44-
:1002B00002C01092660085B7806285BF8895E5CE42
45-
:1002C000CF92DF92EF92FF926091610070E090E038
46-
:1002D00080E020E83EEE46E350E038D06B017C0140
47-
:1002E0006091600070E090E080E020E63AEE40E04F
48-
:1002F00050E02CD0C60ED71EE81EF91EC092690031
49-
:10030000D0926A00E0926B00F0926C00FF90EF9048
50-
:10031000DF90CF9008951F920F920FB60F92112485
51-
:100320008F9381E08093680081B5806481BD8F9157
52-
:100330000F900FBE0F901F901895002480FD060EA1
53-
:10034000660F11F08695D1F7802D0895EE27FF27CF
54-
:10035000AA27BB2708C0A20FB31FE41FF51F220F57
55-
:10036000331F441F551F969587957795679598F38A
56-
:100370007040A9F7009799F7BD01CF010895991B27
57-
:1003800079E004C0991F961708F0961B881F7A958C
58-
:10039000C9F780950895A1E21A2EAA1BBB1BFD0187
59-
:1003A0000DC0AA1FBB1FEE1FFF1FA217B307E40754
60-
:1003B000F50720F0A21BB30BE40BF50B661F771FAC
61-
:1003C000881F991F1A9469F760957095809590958C
62-
:0A03D0009B01AC01BD01CF010895AF
63-
:0203DA00120906
6+
:10005000A89581BD0FBE91BD81B5806481BD3AD1A7
7+
:10006000789485B7877E806185BF88E2582E12E03C
8+
:1000700009E0C1E098E0792E2AE0622ED5E030E672
9+
:10008000C32E3AEED32EE12CF12C4CE3842E912C8E
10+
:10009000A12CB12C80916800813009F016C110921A
11+
:1000A000680086B380714091690050916A00609148
12+
:1000B0006B0070916C00405D5D4F6F4F7F4F4093C0
13+
:1000C000690050936A0060936B0070936C004091DC
14+
:1000D000690050916A0060916B0070916C0041154D
15+
:1000E0005E426349724098F04091690050916A0005
16+
:1000F00060916B0070916C005E5263497240409356
17+
:10010000690050936A0060936B0070936C0090914B
18+
:100110006700811103C0992309F4D5C0913009F417
19+
:100120004CC020F0923009F464C0A3C080916900F3
20+
:1001300090916A00A0916B00B0916C00892B8A2B82
21+
:100140008B2B49F4109261001092600010926500B0
22+
:10015000109264002FC06091690070916A008091D4
23+
:100160006B0090916C0020E83EEE46E350E01DD11C
24+
:10017000209361006091690070916A0080916B002A
25+
:1001800090916C00A701960110D1CA01B901A50197
26+
:1001900094010BD1862F609360006D2FFAD0292F28
27+
:1001A00065E0D5D0809365006D2FF3D08093630018
28+
:1001B000209364008091610014C0809166008932B0
29+
:1001C00038F080916300109264008F5F8093630029
30+
:1001D0008091630090916400923030F09150909340
31+
:1001E0006400C093620008C0109264001092620024
32+
:1001F00003C0809162003AC08E3008F03CC0E82F06
33+
:10020000F0E0EC5FFE4F09942DC00CC00EC011C091
34+
:1002100013C014C016C018C01BC01CC01DC01FC016
35+
:1002200021C023C083E087BB1EC093E097BB18BBEF
36+
:1002300023C086E087BB11C086E001C08CE087BB8D
37+
:1002400004C08CE087BB0CC0D7BB84E088BB13C064
38+
:10025000D7BB09C067BA04C067BA18BB0CC007BBDC
39+
:1002600078BA09C007BBC8BB06C082E017BA18BA83
40+
:1002700003C080E001C082E0809367009091660037
41+
:100280009F5F90936600993200F181111EC05092D9
42+
:10029000660080916500809360001CD080916900A9
43+
:1002A00090916A00A0916B00B0916C0080529C46C6
44+
:1002B000AB4FBF4F8093690090936A00A0936B008F
45+
:1002C000B0936C0002C01092660085B7806285BF53
46+
:1002D0008895E0CECF92DF92EF92FF92609161001D
47+
:1002E00070E090E080E020E83EEE46E350E038D059
48+
:1002F0006B017C016091600070E090E080E020E69E
49+
:100300003AEE40E050E02CD0C60ED71EE81EF91E93
50+
:10031000C0926900D0926A00E0926B00F0926C008B
51+
:10032000FF90EF90DF90CF9008951F920F920FB63D
52+
:100330000F9211248F9381E08093680081B58064CF
53+
:1003400081BD8F910F900FBE0F901F9018950024C4
54+
:1003500080FD060E660F11F08695D1F7802D089569
55+
:10036000EE27FF27AA27BB2708C0A20FB31FE41F51
56+
:10037000F51F220F331F441F551F969587957795BC
57+
:10038000679598F37040A9F7009799F7BD01CF01E1
58+
:100390000895991B79E004C0991F961708F0961BE1
59+
:1003A000881F7A95C9F780950895A1E21A2EAA1B95
60+
:1003B000BB1BFD010DC0AA1FBB1FEE1FFF1FA21715
61+
:1003C000B307E407F50720F0A21BB30BE40BF50B12
62+
:1003D000661F771F881F991F1A9469F7609570959B
63+
:0E03E000809590959B01AC01BD01CF01089561
64+
:0203EE001209F2
6465
:00000001FF

0 commit comments

Comments
 (0)