Pi Pico Smart Watering System Controller

This pic shows the Makerverse development board with the Pico and sensors removed. Shows how the wires attach and the use of the breadboard space. Also, how different height right angle connectors allow connections to sit on top of each other. The 3V3 connector sits flat on the board the 6 pin and 5 pin ones sit above the board. Most of the wiring is tucked underneath the Makeverse board giving a more tidy presentation.

@Liam The fonts I cannot claim full rights to. I found some code on the internet that simple draws lines for the characters. I changed it to a class and modified it to suit what I wanted. Code below. Cannot find the link again, should have saved it. The hard part was done by the original developer, determine the x,y cords for all the lines. The PicoDev SDD1306 Large library has just the Pico setup with the Microbit and Linux bits removed to reduce the size of the file.

Initially the screen display was slow, because it was showing the display after each character. Changing that to show when all 3 lines had been written vastly improved the speed.

Regards
Jim

################################
# Large Font on SSD1306 OLED
#
# 3 lines of 8 characters each
################################

from PiicoDev_SSD1306_Large import *

class SSD1306_8x3():
    def __init__(self):
        self.oled = create_PiicoDev_SSD1306()

    def display(self, text, p):
#        print(posArray[0][0])
        for i in range (len(text)):
            x=p[i][0]
            y=p[i][1]
            if text[i]=="A" or text[i]=="a":
                self.oled.line(x+1,y+15,x+5,y+1,1)
                self.oled.line(x+5,y+1,x+10,y+15,1)
                self.oled.line(x+3,y+11,x+8,y+11,1)
            elif text[i]=="B" or text[i]=="b":
                self.oled.line(x+1,y+15,x+1,y+1,1)
                self.oled.line(x+1,y+1,x+6,y+1,1)
                self.oled.line(x+6,y+1,x+8,y+3,1)
                self.oled.line(x+8,y+3,x+8,y+4,1)
                self.oled.line(x+8,y+4,x+6,y+7,1)
                self.oled.line(x+5,y+7,x+1,y+7,1)
                self.oled.line(x+6,y+7,x+9,y+10,1)
                self.oled.line(x+9,y+10,x+9,y+12,1)
                self.oled.line(x+9,y+12,x+6,y+15,1)
                self.oled.line(x+6,y+15,x+1,y+15,1)
            elif text[i]=="C" or text[i]=="c":
                self.oled.line(x+10,y+2,x+9,y+1,1)
                self.oled.line(x+9,y+1,x+4,y+1,1)
                self.oled.line(x+4,y+1,x+2,y+3,1)
                self.oled.line(x+2,y+3,x+1,y+7,1)
                self.oled.line(x+1,y+7,x+1,y+12,1)
                self.oled.line(x+1,y+12,x+4,y+15,1)
                self.oled.line(x+4,y+15,x+8,y+15,1)
                self.oled.line(x+8,y+15,x+10,y+13,1)
            elif text[i]=="D" or text[i]=="d":
                self.oled.line(x+1,y+15,x+1,y+1,1)
                self.oled.line(x+1,y+1,x+6,y+1,1)
                self.oled.line(x+6,y+1,x+9,y+3,1)
                self.oled.line(x+9,y+3,x+9,y+12,1)
                self.oled.line(x+9,y+12,x+6,y+15,1)
                self.oled.line(x+6,y+15,x+1,y+15,1)
            elif text[i]=="E" or text[i]=="e":
                self.oled.line(x+1,y+15,x+1,y+1,1)
                self.oled.line(x+1,y+1,x+9,y+1,1)
                self.oled.line(x+1,y+7,x+7,y+7,1)
                self.oled.line(x+1,y+15,x+9,y+15,1)
            elif text[i]=="F" or text[i]=="f":
                self.oled.line(x+1,y+15,x+1,y+1,1)
                self.oled.line(x+1,y+1,x+9,y+1,1)
                self.oled.line(x+1,y+7,x+6,y+7,1)
            elif text[i]=="G" or text[i]=="g":
                self.oled.line(x+9,y+2,x+8,y+1,1)
                self.oled.line(x+8,y+1,x+4,y+1,1)
                self.oled.line(x+4,y+1,x+2,y+3,1)
                self.oled.line(x+2,y+3,x+1,y+7,1)
                self.oled.line(x+1,y+7,x+1,y+12,1)
                self.oled.line(x+1,y+12,x+4,y+15,1)
                self.oled.line(x+4,y+15,x+8,y+15,1)
                self.oled.line(x+8,y+15,x+10,y+13,1)
                self.oled.line(x+10,y+13,x+10,y+9,1)
                self.oled.line(x+10,y+9,x+6,y+9,1)    
            elif text[i]=="H" or text[i]=="h":
                self.oled.line(x+1,y+15,x+1,y+1,1)
                self.oled.line(x+1,y+7,x+9,y+7,1)
                self.oled.line(x+9,y+15,x+9,y+1,1)
            elif text[i]=="I" or text[i]=="i":
                self.oled.line(x+1,y+1,x+9,y+1,1)
                self.oled.line(x+1,y+15,x+9,y+15,1)
                self.oled.line(x+5,y+15,x+5,y+1,1)
            elif text[i]=="J" or text[i]=="j":
                self.oled.line(x+9,y+1,x+9,y+10,1)
                self.oled.line(x+9,y+10,x+7,y+15,1)
                self.oled.line(x+7,y+15,x+3,y+15,1)
                self.oled.line(x+3,y+15,x+1,y+10,1)
            elif text[i]=="K" or text[i]=="k":
                self.oled.line(x+1,y+15,x+1,y+1,1)
                self.oled.line(x+1,y+9,x+8,y+1,1)
                self.oled.line(x+4,y+7,x+9,y+15,1)
            elif text[i]=="L" or text[i]=="l":
                self.oled.line(x+1,y+15,x+1,y+1,1)
                self.oled.line(x+1,y+15,x+9,y+15,1)
            elif text[i]=="M" or text[i]=="m":
                self.oled.line(x+1,y+15,x+1,y+1,1)
                self.oled.line(x+1,y+1,x+5,y+7,1)
                self.oled.line(x+9,y+1,x+5,y+7,1)
                self.oled.line(x+9,y+15,x+9,y+1,1)
            elif text[i]=="N" or text[i]=="n":
                self.oled.line(x+1,y+15,x+1,y+1,1)
                self.oled.line(x+1,y+1,x+9,y+15,1)
                self.oled.line(x+9,y+15,x+9,y+1,1)
            elif text[i]=="O" or text[i]=="o":
                self.oled.line(x+10,y+5,x+8,y+1,1)
                self.oled.line(x+8,y+1,x+4,y+1,1)
                self.oled.line(x+4,y+1,x+2,y+3,1)
                self.oled.line(x+2,y+3,x+1,y+7,1)
                self.oled.line(x+1,y+7,x+1,y+12,1)
                self.oled.line(x+1,y+12,x+4,y+15,1)
                self.oled.line(x+4,y+15,x+7,y+15,1)
                self.oled.line(x+7,y+15,x+10,y+12,1)
                self.oled.line(x+10,y+12,x+10,y+5,1)
            elif text[i]=="P" or text[i]=="p":
                self.oled.line(x+1,y+15,x+1,y+1,1)
                self.oled.line(x+1,y+1,x+7,y+1,1)
                self.oled.line(x+7,y+1,x+9,y+4,1)
                self.oled.line(x+9,y+4,x+9,y+6,1)
                self.oled.line(x+9,y+6, x+6,y+9,1)
                self.oled.line(x+5,y+9,x+1,y+9,1)
            elif text[i]=="Q" or text[i]=="q":
                self.oled.line(x+10,y+5,x+8,y+1,1)
                self.oled.line(x+8,y+1,x+4,y+1,1)
                self.oled.line(x+4,y+1,x+2,y+3,1)
                self.oled.line(x+2,y+3,x+1,y+7,1)
                self.oled.line(x+1,y+7,x+1,y+12,1)
                self.oled.line(x+1,y+12,x+4,y+15,1)
                self.oled.line(x+4,y+15,x+7,y+15,1)
                self.oled.line(x+7,y+15,x+10,y+12,1)
                self.oled.line(x+10,y+12,x+10,y+5,1)
                self.oled.line(x+6,y+10,x+10,y+15,1)
            elif text[i]=="R" or text[i]=="r":
                self.oled.line(x+1,y+15,x+1,y+1,1)
                self.oled.line(x+1,y+1,x+7,y+1,1)
                self.oled.line(x+7,y+1,x+9,y+4,1)
                self.oled.line(x+9,y+4,x+9,y+6,1)
                self.oled.line(x+9,y+6, x+6,y+9,1)
                self.oled.line(x+5,y+9,x+1,y+9,1)
                self.oled.line(x+5,y+9,x+9,y+15,1)
            elif text[i]=="S" or text[i]=="s":
                self.oled.line(x+9,y+2,x+7,y+1,1)
                self.oled.line(x+7,y+1,x+3,y+1,1)
                self.oled.line(x+3,y+1,x+2,y+2,1)
                self.oled.line(x+3,y+1,x+2,y+2,1)    
                self.oled.line(x+2,y+2,x+1,y+5,1)
                self.oled.line(x+1,y+5,x+5,y+7,1)
                self.oled.line(x+5,y+7,x+9,y+8,1)
                self.oled.line(x+9,y+8,x+10,y+11,1)
                self.oled.line(x+10,y+11,x+10,y+13,1)
                self.oled.line(x+10,y+13,x+7,y+15,1)
                self.oled.line(x+7,y+15,x+4,y+15,1)
                self.oled.line(x+4,y+15,x+1,y+13,1)
            elif text[i]=="T" or text[i]=="t":
                self.oled.line(x+5,y+15,x+5,y+1,1)
                self.oled.line(x+1,y+1,x+9,y+1,1)
            elif text[i]=="U" or text[i]=="u":
                self.oled.line(x+1,y+1,x+1,y+13,1)
                self.oled.line(x+1,y+13,x+3,y+15,1)
                self.oled.line(x+3,y+15,x+7,y+15,1)
                self.oled.line(x+7,y+15,x+9,y+13,1)
                self.oled.line(x+9,y+13,x+9,y+1,1)
            elif text[i]=="V" or text[i]=="v":
                self.oled.line(x+1,y+1,x+5,y+15,1)
                self.oled.line(x+5,y+15,x+9,y+1,1)
            elif text[i]=="W" or text[i]=="w":
                self.oled.line(x+1,y+1,x+3,y+15,1)
                self.oled.line(x+3,y+15,x+5,y+8,1)
                self.oled.line(x+5,y+8,x+8,y+15,1)
                self.oled.line(x+8,y+15,x+10,y+1,1)
            elif text[i]=="X" or text[i]=="x":
                self.oled.line(x+1,y+1,x+9,y+15,1)
                self.oled.line(x+9,y+1,x+1,y+15,1)
            elif text[i]=="Y" or text[i]=="y":
                self.oled.line(x+5,y+15,x+5,y+7,1)
                self.oled.line(x+5,y+7,x+1,y+1,1)
                self.oled.line(x+5,y+7,x+10,y+1,1)
            elif text[i]=="Z" or text[i]=="z":
                self.oled.line(x+1,y+1,x+9,y+1,1)
                self.oled.line(x+1,y+15,x+9,y+1,1)
                self.oled.line(x+1,y+15,x+9,y+15,1)
            elif text[i]==".":
                self.oled.line(x+1,y+14,x+2,y+14,1)
                self.oled.line(x+1,y+15,x+2,y+15,1)
            elif text[i]=="!":
                self.oled.line(x+1,y+14,x+1,y+15,1)
                self.oled.line(x+1,y+1,x+1,y+10,1)
            elif text[i]=="?":
                self.oled.line(x+5,y+14,x+6,y+14,1)
                self.oled.line(x+5,y+15,x+6,y+15,1)
                self.oled.line(x+5,y+10,x+5,y+8,1)
                self.oled.line(x+5,y+8,x+8,y+6,1)
                self.oled.line(x+8,y+6,x+9,y+2,1)
                self.oled.line(x+8,y+1,x+4,y+1,1)
            elif text[i]=="/":
                self.oled.line(x+9,y+1,x+1,y+15,1)
            elif text[i]==":":
                self.oled.line(x+1,y+14,x+2,y+14,1)
                self.oled.line(x+1,y+15,x+2,y+15,1)
                self.oled.line(x+1,y+6,x+2,y+6,1)
                self.oled.line(x+1,y+5,x+2,y+5,1)
            elif text[i]==",":
                self.oled.line(x+1,y+13,x+1,y+14,1)
                self.oled.line(x+2,y+13,x+2,y+17,1)
                self.oled.line(x+1,y+17,x+2,y+17,1)
            elif text[i]=="&":
                self.oled.line(x+4,y+7,x+2,y+5,1)
                self.oled.line(x+2,y+5,x+2,y+3,1)
                self.oled.line(x+2,y+3,x+3,y+2,1)
                self.oled.line(x+3,y+2,x+4,y+1,1)
                self.oled.line(x+4,y+1,x+6,y+1,1)
                self.oled.line(x+6,y+1,x+7,y+2,1)
                self.oled.line(x+7,y+2,x+8,y+3,1)
                self.oled.line(x+8,y+3,x+8,y+4,1)
                self.oled.line(x+8,y+4,x+6,y+6,1)
                self.oled.line(x+6,y+6,x+1,y+10,1)
                self.oled.line(x+1,y+10,x+1,y+13,1)
                self.oled.line(x+1,y+13,x+3,y+15,1)
                self.oled.line(x+3,y+15,x+6,y+15,1)
                self.oled.line(x+6,y+15,x+9,y+9,1)
                self.oled.line(x+4,y+8,x+10,y+15,1)
            elif text[i]=="+":
                self.oled.line(x+5,y+5,x+5,y+11,1)
                self.oled.line(x+2,y+8,x+8,y+8,1)
            elif text[i]=="-":
                self.oled.line(x+2,y+8,x+8,y+8,1)
            elif text[i]=="=":
                self.oled.line(x+2,y+6,x+8,y+6,1)
                self.oled.line(x+2,y+9,x+8,y+9,1)
            elif text[i]=="0":
                self.oled.line(x+10,y+5,x+8,y+1,1)
                self.oled.line(x+8,y+1,x+4,y+1,1)
                self.oled.line(x+4,y+1,x+2,y+3,1)
                self.oled.line(x+2,y+3,x+1,y+7,1)
                self.oled.line(x+1,y+7,x+1,y+12,1)
                self.oled.line(x+1,y+12,x+4,y+15,1)
                self.oled.line(x+4,y+15,x+7,y+15,1)
                self.oled.line(x+7,y+15,x+10,y+12,1)
                self.oled.line(x+10,y+12,x+10,y+5,1)
                self.oled.line(x+9,y+4,x+2,y+12,1)
            elif text[i]=="1":
                self.oled.line(x+5,y+15,x+5,y+1,1)
                self.oled.line(x+5,y+1,x+2,y+3,1)
            elif text[i]=="2":
                self.oled.line(x+1,y+3,x+2,y+1,1)
                self.oled.line(x+2,y+1,x+7,y+1,1)    
                self.oled.line(x+7,y+1,x+9,y+3,1)
                self.oled.line(x+9,y+3,x+9,y+6,1)
                self.oled.line(x+9,y+6,x+2,y+13,1)
                self.oled.line(x+2,y+13,x+1,y+15,1)
                self.oled.line(x+1,y+15,x+10,y+15,1)
            elif text[i]=="3":
                self.oled.line(x+1,y+3,x+2,y+1,1)
                self.oled.line(x+2,y+1,x+7,y+1,1)    
                self.oled.line(x+7,y+1,x+9,y+3,1)
                self.oled.line(x+9,y+3,x+9,y+5,1)
                self.oled.line(x+9,y+5,x+7,y+7,1)
                self.oled.line(x+7,y+7,x+4,y+7,1)    
                self.oled.line(x+7,y+8,x+9,y+9,1)
                self.oled.line(x+9,y+9,x+9,y+12,1)
                self.oled.line(x+9,y+12,x+7,y+15,1)
                self.oled.line(x+7,y+15,x+3,y+15,1)
                self.oled.line(x+3,y+15,x+1,y+13,1)    
            elif text[i]=="4":
                self.oled.line(x+8,y+1,x+8,y+15,1)
                self.oled.line(x+1,y+1,x+1,y+7,1)
                self.oled.line(x+1,y+7,x+9,y+7,1)
            elif text[i]=="5":
                self.oled.line(x+9,y+1,x+1,y+1,1)
                self.oled.line(x+1,y+1,x+1,y+7,1)
                self.oled.line(x+7,y+7,x+1,y+7,1)    
                self.oled.line(x+7,y+8,x+9,y+9,1)
                self.oled.line(x+9,y+9,x+9,y+12,1)
                self.oled.line(x+9,y+12,x+7,y+15,1)
                self.oled.line(x+7,y+15,x+3,y+15,1)
                self.oled.line(x+3,y+15,x+1,y+13,1)
            elif text[i]=="6":
                self.oled.line(x+10,y+3,x+8,y+1,1)
                self.oled.line(x+8,y+1,x+4,y+1,1)
                self.oled.line(x+4,y+1,x+2,y+3,1)
                self.oled.line(x+2,y+3,x+1,y+7,1)
                self.oled.line(x+1,y+7,x+1,y+12,1)
                self.oled.line(x+1,y+12,x+4,y+15,1)
                self.oled.line(x+4,y+15,x+7,y+15,1)
                self.oled.line(x+7,y+15,x+10,y+13,1)
                self.oled.line(x+10,y+13,x+10,y+9,1)
                self.oled.line(x+10,y+9,x+8,y+7,1)
                self.oled.line(x+8,y+7,x+4,y+7,1)
                self.oled.line(x+4,y+7,x+2,y+9,1)
            elif text[i]=="7":
                self.oled.line(x+1,y+1,x+10,y+1,1)
                self.oled.line(x+10,y+1,x+3,y+15,1)
            elif text[i]=="8":
                self.oled.line(x+4,y+7,x+2,y+5,1)
                self.oled.line(x+2,y+5,x+2,y+3,1)
                self.oled.line(x+2,y+3,x+3,y+2,1)
                self.oled.line(x+3,y+2,x+4,y+1,1)
                self.oled.line(x+4,y+1,x+6,y+1,1)
                self.oled.line(x+6,y+1,x+7,y+2,1)
                self.oled.line(x+7,y+2,x+8,y+3,1)
                self.oled.line(x+8,y+3,x+8,y+5,1)
                self.oled.line(x+8,y+5,x+6,y+7,1)
                self.oled.line(x+1,y+10,x+1,y+13,1)
                self.oled.line(x+1,y+13,x+3,y+15,1)
                self.oled.line(x+3,y+15,x+7,y+15,1)
                self.oled.line(x+7,y+15,x+9,y+13,1)
                self.oled.line(x+9,y+13,x+9,y+10,1)
                self.oled.line(x+9,y+10,x+6,y+7,1)
                self.oled.line(x+6,y+7,x+4,y+7,1)
                self.oled.line(x+4,y+7,x+2,y+9,1)
            elif text[i]=="9":
                self.oled.line(x+10,y+6,x+8,y+8,1)
                self.oled.line(x+8,y+8,x+3,y+8,1)
                self.oled.line(x+3,y+8,x+1,y+5,1)
                self.oled.line(x+1,y+5,x+1,y+3,1)
                self.oled.line(x+1,y+3,x+3,y+1,1)
                self.oled.line(x+3,y+1,x+8,y+1,1)
                self.oled.line(x+8,y+1,x+10,y+3,1)
                self.oled.line(x+10,y+3,x+10,y+10,1)
                self.oled.line(x+10,y+10,x+9,y+13,1)
                self.oled.line(x+9,y+13,x+7,y+15,1)
                self.oled.line(x+7,y+15,x+3,y+15,1)
                self.oled.line(x+3,y+15,x+1,y+13,1)
            elif text[i]==" ":
                pass
#        self.oled.show()
        return

    def line1(self, line1text):
        self.display(line1text, [(0,0), (15,0), (30,0), (45,0), (60,0), (75,0), (90,0), (105,0)])
        return

    def line2(self, line2text):
        self.display(line2text, [(0,22),(15,22),(30,22),(45,22),(60,22),(75,22),(90,22),(105,22)])
        return

    def line3(self, line3text):
        self.display(line3text, [(0,44),(15,44),(30,44),(45,44),(60,44),(75,44),(90,44),(105,44)])
        return
    
    def draw_pixel(self, x, y):
        self.oled.pixel(x,y,1)
#        self.oled.show()
        
    def draw_line(self, x1, y1, x2, y2):
        self.oled.line(x1,y1,x2,y2,1)
#        self.oled.show()

    def Clear(self):
        self.oled.fill(0)
        self.oled.show()
        return

    def Show(self):
        self.oled.show()
        return
    
"""
def wrap(string):
    if len(string)> 8:
        spaceArray = []
        cut1 = 23
        cut2 = 23
        cut3 = 23
        for character in range (len(string)):
            if string[character] == " ":
                spaceArray.append(character)
        for i in range (len(spaceArray)):    
            if spaceArray[i] < 8 :
                cut1= spaceArray[i]
                #cut[0]=space
            
            if 8 < spaceArray[i] < 16 :
                cut2=spaceArray[i]
               
            if 16 < spaceArray[i] < 24 :
                cut3=spaceArray[i]
              
        line1(string[0:(cut1)])
        line2(string[(cut1+1):(cut2)])
        line3(string[(cut2+1):(cut3)])
        
    else:
        line1(string)
    #line2(line2text)
    #line3(line3text)
    return
"""
2 Likes