Как запустить различные показания температуры на основе пользовательского ввода в Python? - PullRequest
1 голос
/ 03 октября 2019

Я - полный любитель, когда дело доходит до программирования на Python (для Raspberry Pi), чего я пытаюсь добиться, это спросить пользователя о количестве сэмплов, которые он хочет, а затем прочитать и распечатать такое количество сэмпловкаждое чтение отделяется простым нажатием клавиши.

У меня есть простая установка с датчиком температуры и влажности DHT11, одним резистором 10 кОм, парой соединительных кабелей и, конечно, макетом. Схема отлично работает при тестировании по следующему коду:

import Adafruit_DHT
import time

DHT_SENSOR = Adafruit_DHT.DHT11
DHT_PIN = 4

while True:
    humidity, temperature = Adafruit_DHT.read(DHT_SENSOR, DHT_PIN)
    if humidity is not None and temperature is not None:
        print("Temperature={0:0.1f}C Humidity={1:0.1f}%".format(temperature, humidity))
    else:
        print("Sensor failed. Check wiring.");
    time.sleep(3)

То, что этот код делает, по существу считывает / распечатывает температуру и влажность каждые три секунды, неопределенно .

Однако, как я уже сказал, я пытаюсь добиться от пользователя количества сэмплов, которое он хочет, а затем прочитать и распечатать такое количество сэмплов, каждое из которых отделяется простым нажатием клавиши. ,Вот код, над которым я работал:

import Adafruit_DHT

DHT_SENSOR = Adafruit_DHT.DHT11
DHT_PIN = 4

n = int (input("Number of samples?\n"))
print()


for x in range (n):
    input()
    while True:
        humidity, temperature = Adafruit_DHT.read(DHT_SENSOR, DHT_PIN)
    if humidity is not None and temperature is not None:
        print("Temperature={0:0.1f}C Humidity={1:0.1f}%".format(temperature, humidity))
    else:
        print("Sensor failed. Check wiring.")
    input()

Пример требуемой операции:

  1. «Количество образцов?»
  2. 2
  3. Пользователь нажимает любую клавишу
  4. "Температура = 23,0C Влажность = 63,0%"
  5. Пользователь нажимает любую клавишу
  6. "Температура = 24.0C Влажность = 64.0%"

Есть идеи, как исправить код, чтобы он делал то, что я хочу?

1 Ответ

1 голос
/ 03 октября 2019

Вам больше не нужен цикл while

Сам цикл for будет повторяться указанное количество раз

for x in range (n):
    input()
    humidity, temperature = Adafruit_DHT.read(DHT_SENSOR, DHT_PIN)
    if humidity is not None and temperature is not None:
        print("Temperature={0:0.1f}C Humidity={1:0.1f}%".format(temperature, humidity))
    else:
        print("Sensor failed. Check wiring.")
    input()
...