From 044284b60f6778c7d5bef25c73ee4c74fd599edd Mon Sep 17 00:00:00 2001 From: Blue Fox Date: Thu, 2 Nov 2023 18:43:55 +0100 Subject: [PATCH] Added explaining comments in the code for better readability --- counter.py | 11 +++++++++++ lcd_screen.py | 6 +++--- micronec.py | 26 +++++++++++++++----------- welcome.py | 5 ++++- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/counter.py b/counter.py index ded0761..75e4b7c 100644 --- a/counter.py +++ b/counter.py @@ -2,6 +2,11 @@ from machine import Pin from time import sleep from utime import ticks_ms + +""" +Counter + give a basic counter class with a name and value +""" class Counter: def __init__(self, name="C1", value = 0): # init_value may be smaller than 0 self.value = int(value) @@ -47,16 +52,22 @@ class CounterArray: def add_counter(self, counter: Counter): + # Function + # add a counter to the counterarray's internal _counter dict self._counters[len(self._counters)] = counter return True def remove_counter(self, key): + # Function + # pop a counter out of the counterarrays internal _counter dict with the given key self._counters.pop(key) return True def get_counter(self, key): + # Function + # get the Counter class object with the given key return self._counters[key] diff --git a/lcd_screen.py b/lcd_screen.py index eff64ac..711e27f 100644 --- a/lcd_screen.py +++ b/lcd_screen.py @@ -7,9 +7,9 @@ class CounterScreen: self.lcd = lcd self.lcd.clear() self.counterArray = counterArray - self._zfill = lambda s, length: '{:0>{w}}'.format(s, w=length) - self.last_line1 = "" - self.last_line2 = "" + self._zfill = lambda s, length: '{:0>{w}}'.format(s, w=length) # function that fills a given string with a given amount of preceding zeroes + self.last_line1 = "" # used to prevent screen flickering + self.last_line2 = "" # used to prevent screen flickering self.too_many_counters_warning_shown = False def _too_many_counters_warning(self): diff --git a/micronec.py b/micronec.py index 5328218..5121acc 100644 --- a/micronec.py +++ b/micronec.py @@ -5,23 +5,27 @@ from counter import CounterArray from lcd_screen import CounterScreen -I2C_ADDR = 0x27 -I2C_NUM_ROWS = 2 -I2C_NUM_COLS = 16 -WELCOME_CYCLES = 1 -COUNTER_NUMBER = 2 -COUNTER_NAMES = ["Counter 1", "Counter 2"] -COUNTER_PINS = {0:2,1:3} - +# some constants, change on need +I2C_ADDR = 0x27 # for pico w, this should fit +I2C_NUM_ROWS = 2 # DON'T CHANGE +I2C_NUM_COLS = 16 # DON'T CHANGE +WELCOME_CYCLES = 1 # adjusts how often the "Starting..." runs through at startup +COUNTER_NUMBER = 2 # how many counters do you want? +COUNTER_NAMES = ["Counter 1", "Counter 2"] # names of the counters (MUST contain names for all counters) +COUNTER_PINS = {0:2,1:3} # which pins to listen on (form {:}) (there MAY be doubles, you MAY not give pins for all counters) +# initialize the lcd display with GPIO pins 0 and 1 for data on i2c channel 0 _i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000) lcd = I2C_LCD(_i2c, I2C_ADDR, I2C_NUM_ROWS, I2C_NUM_COLS) +# initialize the counter array (class managing all the counters) counterArray = CounterArray(COUNTER_NUMBER, COUNTER_NAMES) +# initialize the welcome screen ws = WelcomeScreen(lcd) +# initialize the counter screen (display counter values on lcd) cs = CounterScreen(lcd, counterArray) # Real program -ws.show_welcome(WELCOME_CYCLES) -cs.show_screen() -counterArray.register_listener(COUNTER_PINS, cs.show_screen) +ws.show_welcome(WELCOME_CYCLES) # show welcome/startup message +cs.show_screen() # DON'T REMOVE; show counter screen one time, may take up to 15s +counterArray.register_listener(COUNTER_PINS, cs.show_screen) # register the listeners on the given pins diff --git a/welcome.py b/welcome.py index 4588d62..1f2dd19 100644 --- a/welcome.py +++ b/welcome.py @@ -1,5 +1,8 @@ import time - +""" +WelcomeScreen: + provide a simple welcome/startup screen +""" class WelcomeScreen: def __init__(self, lcd): self.lcd = lcd