From 2900e78ca4e6c012db470fbd9215478ade2dfb34 Mon Sep 17 00:00:00 2001 From: eleksir Date: Sun, 12 May 2019 07:52:44 +0300 Subject: [PATCH] Bits of cleanup, fix indentaion and coding style --- .hgignore | 3 +- simpleclock.ino | 159 ++++++++++++++++++++++-------------------------- 2 files changed, 75 insertions(+), 87 deletions(-) diff --git a/.hgignore b/.hgignore index 3e176f4..4a1e478 100644 --- a/.hgignore +++ b/.hgignore @@ -2,4 +2,5 @@ \.swp$ \.bak$ \.old$ -\.orig$ \ No newline at end of file +\.orig$ +\.clang-format diff --git a/simpleclock.ino b/simpleclock.ino index f3ee3c9..1f81989 100644 --- a/simpleclock.ino +++ b/simpleclock.ino @@ -1,41 +1,42 @@ -/* - * 7 Segment 4 Digits clock with digit point separator - * - * It uses display module with common anode and DS1307 - * RTC module to enhance time keeping ability of - * Atmega 328p based Arduino nano microcontroller and - * 2 buttons for adjusting time. +/* + * 7 Segment 4 Digits clock with digit point separator + * + * It uses display module with common anode and DS1307 RTC module to enhance + * time keeping ability of Atmega 328p based Arduino Nano microcontroller and + * 2 buttons for adjusting time. */ /* This software distributed under BSD 2 Clause License + * + * Copyright (c) Sergei Fedosoff, All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this listof conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITYOF SUCH DAMAGE. + */ -Copyright (c) Sergei Fedosoff, All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -Redistributions of source code must retain the above copyright notice, this list -of conditions and the following disclaimer. Redistributions in binary form must -reproduce the above copyright notice, this list of conditions and the following -disclaimer in the documentation and/or other materials provided with the -distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, -OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGE. -*/ - -#include -#include -#include -// DS1307 lib by FrankieChu for Seeed RTC module +/* DS1307 lib by FrankieChu for Seeed RTC module, in my case + * Grove___RTC_DS1307-1.0.0.zip */ #include +#include DS1307 clock; SevSeg Display; @@ -58,14 +59,15 @@ void setup() byte numDigits = 4; byte digitPins[] = {9, 10, 11, 12}; byte segmentPins[] = {2, 3, 4, 5, 6, 7, 8, 13}; - bool resistorsOnSegments = true; // 8 resistors, 330 Ohms each - bool updateWithDelays = false; // Default. Recommended - /* without it there is visual bug at 0 o'clock, and in current version of - * SevSeg' setChars() does not dots at all */ - bool leadingZeros = false; + bool resistorsOnSegments = true; // 8 resistors, 330 Ohms each + bool updateWithDelays = false; // Default. Recommended + + /* without it there is visual bug at 0 o'clock, and in current version + * of SevSeg' setChars() does not dots at all */ + bool leadingZeros = false; Display.begin(hardwareConfig, numDigits, digitPins, segmentPins, - resistorsOnSegments, updateWithDelays, leadingZeros); + resistorsOnSegments, updateWithDelays, leadingZeros); Display.setBrightness(90); // setup clock @@ -74,12 +76,11 @@ void setup() // if rtc returns incorrect time, reset it to some default value clock.getTime(); - if (( clock.hour > 23 ) || (clock.minute > 59)) - { - clock.fillByYMD(2019,2,23); // 23 Feb 2013 - clock.fillByHMS(15,52,30); // 15:52 30" - clock.fillDayOfWeek(SAT); // Saturday - clock.setTime(); // put date to rtc + if ((clock.hour > 23) || (clock.minute > 59)) { + clock.fillByYMD(2019, 2, 23); // 23 Feb 2019 + clock.fillByHMS(15, 52, 30); // 15:52:30" + clock.fillDayOfWeek(SAT); // Saturday + clock.setTime(); // put date to rtc } // setup control buttons @@ -87,87 +88,73 @@ void setup() pinMode(min_btn, INPUT_PULLUP); } - void loop() { unsigned long currentMillis = millis(); char str[4]; float d; - - if (currentMillis - previousMillis >= interval) - { + + if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; - if (dot == false) - { + if (dot == false) { dot = true; - if (digitalRead(hrs_btn) == LOW) - { + if (digitalRead(hrs_btn) == LOW) { clock.getTime(); hours = clock.hour + 1; - (hours > 23)? hours = 0: hours; + (hours > 23) ? hours = 0 : hours; clock.fillByHMS(hours, clock.minute, 0); clock.setTime(); } - if (digitalRead(min_btn) == LOW) - { + if (digitalRead(min_btn) == LOW) { clock.getTime(); minutes = clock.minute + 1; - (minutes > 59)? minutes = 0: minutes; + (minutes > 59) ? minutes = 0 : minutes; clock.fillByHMS(clock.hour, minutes, 0); clock.setTime(); } - } - else - { + } else { dot = false; } } clock.getTime(); - /* - * Let's implement time compenstion for individual rtc module time - * charachteristics. In in my case quartz resonator as inaccurate as - * +/- about 5-8 seconds per 24 hours, maybe its require more EMI - * sheilding? - */ + /* + * Let's implement time compenstion for individual rtc module time + * charachteristics. In in my case quartz resonator as inaccurate as + * +/- about 5-8 seconds per 24 hours, maybe its require more EMI + * shielding? + */ - if ((clock.hour == 21) and (clock.minute == 21) and (clock.second == 21) and (compflag == 0)) { + if ((clock.hour == 21) and (clock.minute == 21) and + (clock.second == 21) and (compflag == 0)) { clock.second = 14; - clock.fillByHMS(clock.hour,clock.minute,clock.second); + clock.fillByHMS(clock.hour, clock.minute, clock.second); clock.setTime(); compflag = 1; } - if ((clock.hour == 21) and (clock.minute == 21) and (clock.second == 23) and (compflag == 1)) { + if ((clock.hour == 21) and (clock.minute == 21) and + (clock.second == 23) and (compflag == 1)) { compflag = 0; } // make blinking dot - if (clock.hour > 0) - { - if (dot == true) - { + if (clock.hour > 0) { + if (dot == true) { Display.setNumber((clock.hour * 100 + clock.minute), 2); - } - else - { + } else { Display.setNumber((clock.hour * 100 + clock.minute)); } - } - else - { - /* 0 o'clock is an exception, we dont want to see "00.00", we want see - * "0.00" or "0 00", so we have to use this "hack" */ - if (dot == true) - { + } else { + /* 0 o'clock is an exception, we don't want to see "00.00", we + want see "0.00" or "0 00", so we have to use this "hack" */ + if (dot == true) { d = float(clock.minute) / 100; Display.setNumber(d, 2); - } - else - { + } else { sprintf(str, "%2d%02d", clock.hour, clock.minute); Display.setChars(str); }