Προς το περιεχόμενο

micropython, with LCD I2C


Μετάβαση στην απάντηση Απαντήθηκε από immortalx,

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα,

Δουλεύω με ενα Raspberry Pico, στο οποίο υπάρχει συνδεδεμένος ενας MQ2 gas sensor και ενα 16x2 LCD i2c.

ο κώδικας micropython είναι αυτός:

# MQ-2 library to use gas sensor with Raspberry PI Pico (MicroPython)

from mq2 import MQ2
import I2C_LCD_driver
import utime
from machine import Pin

#LCD
lcd = I2C_LCD_driver.lcd()
# MQ2 sensor
pin=26
sensor = MQ2(pinData = pin, baseVoltage = 3.3)

print("Calibrating")
sensor.calibrate()
print("Calibration completed")
print("Base resistance:{0}".format(sensor._ro))
lcd.lcd_clear
lcd.lcd_display_string("Detecting..")
lpg = sensor.readLPG()
hydrogen = sensor.readHydrogen()
while True:
    print("Detecting..")
    print("LPG: {:.1f}ppm".format(sensor.readLPG())+" - ", end="")
    print
    print("Hydrogen: {:.1f}ppm".format(sensor.readHydrogen()))
    lcd.lcd_clear
    lcd.lcd_display_string("LPG: {:.1f}ppm".format (lpg),1)
    lcd.lcd_display_string("Hydrogen: {:.1f}ppm".format (hydrogen),2)
    utime.sleep(0.5)

 

τρέχει κανονικά και ανιχνεύει LPG και Hydrogen. Το θέμα μου είναι οτι ενώ παίρνω output readings στο idle που ανανεώνονται αν ανιχνευτεί αέριο, δεν ανανεώνεται το reading στην lcd οθόνη και πάντα γράφει την πρώτη μέτρηση.

Ενω δηλαδή υπάρχει αέριο στον χώρο  και παίρνω readings στο idle, στην οθόνη lcd υπάρχει η πρώτη μέτρηση που θα πάρει χωρίς ανανεώση.

Καμιά ιδέα πως μπορεί να γίνει μέσα στο loop while True: ;

 

IMG-0502.jpg

IMG-0503.jpg

  • Λύση
Δημοσ.

Δεν εχω ιδεα απο micropython αλλα φαινεται οτι στο call που κανεις στο

lcd.lcd_display_string

περνας το variable lpg που του κανεις assign τιμη πριν απο το while loop.
Ενω οταν κανεις print στο console ξαναδιαβαζεις τον σενσορα με

sensor.readLPG()

 

  • Thanks 1
Δημοσ.
11 λεπτά πριν, immortalx είπε

Δεν εχω ιδεα απο micropython αλλα φαινεται οτι στο call που κανεις στο

lcd.lcd_display_string

περνας το variable lpg που του κανεις assign τιμη πριν απο το while loop.
Ενω οταν κανεις print στο console ξαναδιαβαζεις τον σενσορα με

sensor.readLPG()

 

Σε ευχαριστώ, να'σαι καλά. είχε γίνει το μυαλό μου πουρές να ψάχνω τον i2c_lcd_driver..

  • Like 1
Δημοσ.
Μόλις τώρα, tuxpower είπε

Σε ευχαριστώ, να'σαι καλά. είχε γίνει το μυαλό μου πουρές να ψάχνω τον i2c_lcd_driver..

Σε νοιωθω, και γω τις ιδιες εμπλοκες παθαινω 😂BTW ωραια φαινεται η micropython!

Δημοσ.
32 λεπτά πριν, immortalx είπε

😂BTW ωραια φαινεται η micropython!

για prototyping ειδικά σε microcontroller είναι καλή.Αν όμως έχεις καμιά δεκαριά sensors έχει προβλήματα απόδοσης, είναι αργή.

  • Thanks 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...