]> vault307.fbx.one Git - RPI-PICO-I2C-LCD.git/blobdiff - pico_i2c_lcd.py
Update pico_i2c_lcd.py
[RPI-PICO-I2C-LCD.git] / pico_i2c_lcd.py
index d7941d881d951118523d5f298a662ad2a52d5fad..fd83b8bf8db522c353829b66850524f1a6ceb6e7 100644 (file)
@@ -1,4 +1,5 @@
 import utime
+import gc
 
 from lcd_api import LcdApi
 from machine import I2C
@@ -18,7 +19,7 @@ class I2cLcd(LcdApi):
     def __init__(self, i2c, i2c_addr, num_lines, num_columns):
         self.i2c = i2c
         self.i2c_addr = i2c_addr
-        self.i2c.writeto(self.i2c_addr, bytearray([0]))
+        self.i2c.writeto(self.i2c_addr, bytes([0]))
         utime.sleep_ms(20)   # Allow LCD time to powerup
         # Send reset 3 times
         self.hal_write_init_nibble(self.LCD_FUNCTION_RESET)
@@ -35,45 +36,51 @@ class I2cLcd(LcdApi):
         if num_lines > 1:
             cmd |= self.LCD_FUNCTION_2LINES
         self.hal_write_command(cmd)
+        gc.collect()
 
     def hal_write_init_nibble(self, nibble):
         # Writes an initialization nibble to the LCD.
         # This particular function is only used during initialization.
         byte = ((nibble >> 4) & 0x0f) << SHIFT_DATA
-        self.i2c.writeto(self.i2c_addr, bytearray([byte | MASK_E]))
-        self.i2c.writeto(self.i2c_addr, bytearray([byte]))
+        self.i2c.writeto(self.i2c_addr, bytes([byte | MASK_E]))
+        self.i2c.writeto(self.i2c_addr, bytes([byte]))
+        gc.collect()
         
     def hal_backlight_on(self):
         # Allows the hal layer to turn the backlight on
-        self.i2c.writeto(self.i2c_addr, bytearray([1 << SHIFT_BACKLIGHT]))
+        self.i2c.writeto(self.i2c_addr, bytes([1 << SHIFT_BACKLIGHT]))
+        gc.collect()
         
     def hal_backlight_off(self):
         #Allows the hal layer to turn the backlight off
-        self.i2c.writeto(self.i2c_addr, bytearray([0]))
+        self.i2c.writeto(self.i2c_addr, bytes([0]))
+        gc.collect()
         
     def hal_write_command(self, cmd):
         # Write a command to the LCD. Data is latched on the falling edge of E.
         byte = ((self.backlight << SHIFT_BACKLIGHT) |
                 (((cmd >> 4) & 0x0f) << SHIFT_DATA))
-        self.i2c.writeto(self.i2c_addr, bytearray([byte | MASK_E]))
-        self.i2c.writeto(self.i2c_addr, bytearray([byte]))
+        self.i2c.writeto(self.i2c_addr, bytes([byte | MASK_E]))
+        self.i2c.writeto(self.i2c_addr, bytes([byte]))
         byte = ((self.backlight << SHIFT_BACKLIGHT) |
                 ((cmd & 0x0f) << SHIFT_DATA))
-        self.i2c.writeto(self.i2c_addr, bytearray([byte | MASK_E]))
-        self.i2c.writeto(self.i2c_addr, bytearray([byte]))
+        self.i2c.writeto(self.i2c_addr, bytes([byte | MASK_E]))
+        self.i2c.writeto(self.i2c_addr, bytes([byte]))
         if cmd <= 3:
             # The home and clear commands require a worst case delay of 4.1 msec
             utime.sleep_ms(5)
+        gc.collect()
 
     def hal_write_data(self, data):
         # Write data to the LCD. Data is latched on the falling edge of E.
         byte = (MASK_RS |
                 (self.backlight << SHIFT_BACKLIGHT) |
                 (((data >> 4) & 0x0f) << SHIFT_DATA))
-        self.i2c.writeto(self.i2c_addr, bytearray([byte | MASK_E]))
-        self.i2c.writeto(self.i2c_addr, bytearray([byte]))
+        self.i2c.writeto(self.i2c_addr, bytes([byte | MASK_E]))
+        self.i2c.writeto(self.i2c_addr, bytes([byte]))
         byte = (MASK_RS |
                 (self.backlight << SHIFT_BACKLIGHT) |
                 ((data & 0x0f) << SHIFT_DATA))      
-        self.i2c.writeto(self.i2c_addr, bytearray([byte | MASK_E]))
-        self.i2c.writeto(self.i2c_addr, bytearray([byte]))
+        self.i2c.writeto(self.i2c_addr, bytes([byte | MASK_E]))
+        self.i2c.writeto(self.i2c_addr, bytes([byte]))
+        gc.collect()