I'm not sure what I'm missing here but it's got to be something easy. When I hook up and go to my file program that utilizes my prox sensor to detect when to run various things or not, it's not actually printing to show me proof it's reading the sensor correctly. I'm guessing I have something wrong in how I have the code setup. Can anyone eyeball this and tell me their thoughts on it?
Obviously all the code is tied together in some way but the specific area I'm referring to is Line 271:
Code: Select all
# FOR TEMPERATURE UI INCLUSION (because I can just zip tie a probe to the fill head duh)
import board
import displayio
import terminalio
import busio
import digitalio
import adafruit_displayio_sh1107
import adafruit_imageload
from adafruit_display_shapes.roundrect import RoundRect
from adafruit_display_shapes.rect import Rect
from adafruit_display_shapes.circle import Circle
from adafruit_display_shapes.triangle import Triangle
from adafruit_display_text import label
import adafruit_displayio_sh1107
displayio.release_displays()
i2c = board.I2C()
display_bus = displayio.I2CDisplay(i2c, device_address=0x3C)
WIDTH = 128
HEIGHT = 64
BORDER = 2
display = adafruit_displayio_sh1107.SH1107(display_bus, width=WIDTH, height=HEIGHT)
color_bitmap = displayio.Bitmap(WIDTH, HEIGHT, 1)
color_palette = displayio.Palette(1)
color_palette[0] = 0xFFFFFF
splash = displayio.Group()
display.show(splash)
fillscreen = displayio.Group()
Statsscreen = displayio.Group()
CIPscreen = displayio.Group()
dropleticon = displayio.Group()
bubbleicon = displayio.Group()
import rotaryio
import time
from adafruit_motorkit import MotorKit
#import adafruit_vl6180x
from adafruit_debouncer import Debouncer
#sensor = adafruit_vl6180x.VL6180X(i2c)
encoderB = rotaryio.IncrementalEncoder(board.D12, board.D11)
button_e = digitalio.DigitalInOut(board.D10)
button_e.direction = digitalio.Direction.INPUT
button_e.pull = digitalio.Pull.UP
switch_e = Debouncer(button_e)
encoderA = rotaryio.IncrementalEncoder(board.A4, board.A3)
button_d = digitalio.DigitalInOut(board.A2)
button_d.direction = digitalio.Direction.INPUT
button_d.pull = digitalio.Pull.UP
switch_d = Debouncer(button_d)
proxsensor = digitalio.DigitalInOut(board.D6)
proxsensor.direction = digitalio.Direction.INPUT
can_count = 0
case_count = 0
#if current_program = fill and proxsensor = False
#can_count += 1
#case_count = can_count/24 #how do I get this to only show the whole number and not the decimal?
#text_areaXYZ.text = str(case_count)
#range_mm = sensor.range
kit = MotorKit()
current_program = "Monarch"
program_running = False
previous_program = "CIP"
lastA_position = None
lastB_position = None
text_area = label.Label(terminalio.FONT, text="monarch", scale=3, color=0xFFFFFF, x=3, y=12)
splash.append(text_area)
text_area2 = label.Label(terminalio.FONT, text="FLUID SYSTEMS", scale=1, color=0xFFFFFF, x=28, y=36)
splash.append(text_area2)
text_area3 = label.Label(terminalio.FONT, text="nano MK.I", scale=1, color=0xFFFFFF, x=70, y=55)
splash.append(text_area3)
bitmap, palette = adafruit_imageload.load("/MonarchLogo.bmp", bitmap=displayio.Bitmap, palette=displayio.Palette)
MonarchTile_grid = displayio.TileGrid(bitmap, pixel_shader=palette)
splash.append(MonarchTile_grid)
color_bitmap = displayio.Bitmap(WIDTH, HEIGHT, 1)
color_palette = displayio.Palette(1)
color_palette[0] = 0xFFFFFF
sm_bitmap = displayio.Bitmap(20, 12, 1)
sm_square = displayio.TileGrid(sm_bitmap, pixel_shader=color_palette, x=83, y=0)
fillscreen.append(sm_square)
sm_bitmapCIP = displayio.Bitmap(20, 12, 1)
sm_squareCIP = displayio.TileGrid(sm_bitmapCIP, pixel_shader=color_palette, x=83, y=0)
CIPscreen.append(sm_squareCIP)
triangle = Triangle(40, 18, 37, 25, 43, 25, fill=0x000000, outline=0xFFFFFF)
dropleticon.append(triangle)
circle = Circle(40, 25, 3, fill=0x000000, outline=0xFFFFFF)
dropleticon.append(circle)
rectDroplet = Rect(39, 22, 3, 1, fill=0x000000)
dropleticon.append(rectDroplet)
dropleticon.x = 27
dropleticon.y = -17
fillscreen.append(dropleticon)
circle2 = Circle(68, 43, 3, fill=0x000000, outline=0xFFFFFF)
bubbleicon.append(circle2)
circle3 = Circle(64, 46, 4, fill=0x000000, outline=0xFFFFFF)
bubbleicon.append(circle3)
circle4 = Circle(70, 49, 3, fill=0x000000, outline=0xFFFFFF)
bubbleicon.append(circle4)
bubbleicon.x = 3
bubbleicon.y = -40
CIPscreen.append(bubbleicon)
rectTime = Rect(0, 29, 55, 34, outline=0xFFFFFF)
fillscreen.append(rectTime)
rectFoam = Rect(59, 29, 32, 34, outline=0xFFFFFF) # if timingB_value > 10 TAB rectFoam.width = 30 or w/e
fillscreen.append(rectFoam)
rectTemp = Rect(95, 29, 32, 34, outline=0xFFFFFF) # if timingB_value > 10 TAB rectFoam.width = 30 or w/e
fillscreen.append(rectTemp)
roundrectTime = RoundRect(0, 22, 55, 15, 7, fill=0xFFFFFF, stroke=1)
fillscreen.append(roundrectTime)
roundrectFoam = RoundRect(59, 22, 32, 15, 7, fill=0xFFFFFF, stroke=1)
fillscreen.append(roundrectFoam)
roundrectTemp = RoundRect(95, 22, 32, 15, 7, fill=0xFFFFFF, stroke=1)
fillscreen.append(roundrectTemp)
text_area4 = label.Label(terminalio.FONT, text="Fill Mode:", scale=1, color=0xFFFFFF, x=0, y=5)
fillscreen.append(text_area4)
text_area5 = label.Label(terminalio.FONT, text="OFF", scale=1, color=0x000000, x=85, y=5)
fillscreen.append(text_area5)
text_area6 = label.Label(terminalio.FONT, text="ON", scale=1, color=0xFFFFFF, x=110, y=5)
fillscreen.append(text_area6)
text_area7 = label.Label(terminalio.FONT, text="Time (s)", scale=1, color=0x000000, x=5, y=28)
fillscreen.append(text_area7)
text_area8 = label.Label(terminalio.FONT, text="0.0", scale=2, color=0xFFFFFF, x=4, y=47)
fillscreen.append(text_area8)
text_area9 = label.Label(terminalio.FONT, text="Foam", scale=1, color=0x000000, x=64, y=28)
fillscreen.append(text_area9)
text_area10 = label.Label(terminalio.FONT, text="0", scale=2, color=0xFFFFFF, x=64, y=47)
fillscreen.append(text_area10)
text_area9b = label.Label(terminalio.FONT, text="F", scale=1, color=0x000000, x=113, y=28)
fillscreen.append(text_area9b)
circleTemp = Circle(108, 27, 2, fill=0xFFFFFF, outline=0x000000, stroke=2)
fillscreen.append(circleTemp)
text_area11 = label.Label(terminalio.FONT, text=" CIP Mode:", scale=1, color=0xFFFFFF, x=0, y=5)
CIPscreen.append(text_area11)
text_area12 = label.Label(terminalio.FONT, text="OFF", scale=1, color=0x000000, x=85, y=5)
CIPscreen.append(text_area12)
text_area13 = label.Label(terminalio.FONT, text="ON", scale=1, color=0xFFFFFF, x=110, y=5)
CIPscreen.append(text_area13)
triangle2 = Triangle(26, 22, 6, 62, 46, 62, fill=0xFFFFFF, outline=0x000000)
CIPscreen.append(triangle2)
triangle3 = Triangle(26, 50, 24, 34, 28, 34, fill=0x000000)
CIPscreen.append(triangle3)
circle5 = Circle(26, 57, 2, fill=0x000000)
CIPscreen.append(circle5)
circle6 = Circle(26, 33, 2, fill=0x000000)
CIPscreen.append(circle6)
text_area15 = label.Label(terminalio.FONT, text="WARNING:", scale=1, color=0xFFFFFF, x=64, y=25)
CIPscreen.append(text_area15)
text_area16 = label.Label(terminalio.FONT, text="Valve will", scale=1, color=0xFFFFFF, x=58, y=41)
CIPscreen.append(text_area16)
text_area17 = label.Label(terminalio.FONT, text="stay open!", scale=1, color=0xFFFFFF, x=59, y=53)
CIPscreen.append(text_area17)
text_area18 = label.Label(terminalio.FONT, text="Canning Stats:", scale=1, color=0xFFFFFF, x=0, y=5)
Statsscreen.append(text_area18)
text_area19 = label.Label(terminalio.FONT, text="OFF", scale=1, color=0x000000, x=85, y=5)
Statsscreen.append(text_area19)
text_area20 = label.Label(terminalio.FONT, text="ON", scale=1, color=0xFFFFFF, x=110, y=5)
Statsscreen.append(text_area20)
text_area21 = label.Label(terminalio.FONT, text="Cans", scale=1, color=0x000000, x=5, y=28)
Statsscreen.append(text_area21)
text_area22 = label.Label(terminalio.FONT, text="24", scale=2, color=0xFFFFFF, x=8, y=47)
Statsscreen.append(text_area22)
text_area23 = label.Label(terminalio.FONT, text="Cases", scale=1, color=0x000000, x=79, y=28)
Statsscreen.append(text_area23)
text_area24 = label.Label(terminalio.FONT, text="1", scale=2, color=0xFFFFFF, x=90, y=47)
Statsscreen.append(text_area24)
while True:
switch_e.update()
switch_d.update()
if current_program != "Fil" and switch_d.fell and previous_program == "CIP":
display.show(fillscreen)
current_program = "Fil"
previous_program = "Fill"
switch_d.update()
if current_program == "Fil" and not program_running:
positionA = encoderA.position
lastA_position = positionA
timingA_value = 0.1*encoderA.position
text_area8.text = str(timingA_value)
positionB = encoderB.position
lastB_position = positionB
timingB_value = encoderB.position
text_area10.text = str(timingB_value)
switch_e.update()
if current_program == "Fil" and switch_e.fell and not program_running:
program_running = True
switch_e.update()
#try:
#range_mm = sensor.range
#print('Range: {0}mm'.format(range_mm))
#except RuntimeError:
#print("retrying!")
# time.sleep(.00001)
if current_program == "Fil" and program_running:
positionA = encoderA.position
lastA_position = positionA
timingA_value = 0.1*encoderA.position
sm_square.x = 106
text_area5.color = 0xFFFFFF
text_area6.color = 0x000000
text_area8.text = str(timingA_value)
triangle.fill = 0xFFFFFF
triangle.outline = 0xFFFFFF
circle.fill = 0xFFFFFF
circle.outline = 0xFFFFFF
rectDroplet.fill = 0xFFFFFF
positionB = encoderB.position
lastB_position = positionB
timingB_value = encoderB.position
text_area10.text = str(timingB_value)
if current_program == "Fil" and switch_e.fell and program_running:
sm_square.x = 83
text_area5.color = 0x000000
text_area6.color = 0xFFFFFF
program_running = False
triangle.outline = 0xFFFFFF
triangle.fill = 0x000000
circle.outline = 0xFFFFFF
circle.fill = 0x000000
rectDroplet.fill = 0x000000
switch_e.update()
#if (range_mm >= 70): #"if program_running and (range_mm >= 70):" may need to update to this
if proxsensor == True and current_program == "Fil" and program_running:
print('Fill Cycle Start')
kit.motor2.throttle = 1.0 # Load can
time.sleep(.8) # Piston extension time
kit.motor2.throttle = 0 # Piston retract
time.sleep(1) # need for can to fall into chute
kit.motor4.throttle = 1.0 # Drop lift piston
kit.motor1.throttle = 1.0 # Start Purge
time.sleep(1.5) # Hold for 1.5 s
kit.motor1.throttle = 0 # Stop Purge
kit.motor3.throttle = 1.0 # Start Fill
time.sleep(timingA_value) # Hold for set time
kit.motor3.throttle = 0 # End fill
for _ in range(timingB_value):
time.sleep(0.05) # Hold for set time
kit.motor3.throttle = 1.0 # Start Foam Pulse
time.sleep(0.05) # Hold for set time
kit.motor3.throttle = 0 # End Foam Pulse
kit.motor4.throttle = 0 # Raise lift
time.sleep(.75)
#try:
#range_mm = sensor.range
#print('Range2: {0}mm'.format(range_mm))
#except RuntimeError:
#print("retrying!")
# time.sleep(.00001)
if current_program != "Stats" and switch_d.fell and previous_program == "Fill":
display.show(Statsscreen)
current_program = "Stats"
previous_program = "Stats"
switch_d.update()
if current_program != "CIP" and switch_d.fell and previous_program == "Stats":
display.show(CIPscreen)
time.sleep(.20)
triangle2.fill = 0xFFFFFF
triangle2.outline = 0x000000
triangle3.fill = 0x000000
circle5.fill = 0x000000
circle6.fill = 0x000000
time.sleep(.20)
triangle2.fill = 0x000000
triangle2.outline = 0xFFFFFF
triangle3.fill = 0xFFFFFF
circle5.fill = 0xFFFFFF
circle6.fill = 0xFFFFFF
time.sleep(.20)
triangle2.fill = 0xFFFFFF
triangle2.outline = 0x000000
triangle3.fill = 0x000000
circle5.fill = 0x000000
circle6.fill = 0x000000
time.sleep(.20)
triangle2.fill = 0x000000
triangle2.outline = 0xFFFFFF
triangle3.fill = 0xFFFFFF
circle5.fill = 0xFFFFFF
circle6.fill = 0xFFFFFF
kit.motor4.throttle = 0.0
kit.motor3.throttle = 0.0
current_program = "CIP"
program_running = False
previous_program = "CIP"
switch_d.update()
if current_program == "CIP" and switch_e.fell and not program_running:
sm_squareCIP.x = 106
text_area12.color = 0xFFFFFF
text_area13.color = 0x000000
circle2.fill = 0xFFFFFF
circle2.outline = 0xFFFFFF
circle3.fill = 0xFFFFFF
circle3.outline = 0xFFFFFF
circle4.fill = 0xFFFFFF
circle4.outline = 0xFFFFFF
kit.motor4.throttle = 1.0
time.sleep(.5)
kit.motor3.throttle = 1.0
current_program = "CIP"
program_running = True
switch_e.update()
if current_program == "CIP" and switch_e.fell and program_running:
sm_squareCIP.x = 83
text_area12.color = 0x000000
text_area13.color = 0xFFFFFF
circle2.fill = 0x000000
circle2.outline = 0xFFFFFF
circle3.fill = 0x000000
circle3.outline = 0xFFFFFF
circle4.fill = 0x000000
circle4.outline = 0xFFFFFF
kit.motor4.throttle = 0.0
kit.motor3.throttle = 0.0
current_program = "CIP"
program_running = False
switch_e.update()