Программирование Rspberry pi на python для GPIO с продолжением if / else

#python #if-statement #raspberry-pi #gpio

#python #оператор if #raspberry-pi #gpio

Вопрос:

Я пытаюсь сгенерировать последовательность импульсов (используя raspberry pi zero w) и прочитать эту последовательность импульсов (используя модуль аналого-цифрового преобразователя AD1015). Ниже показан мой код.

 import RPi.GPIO as GPIO

import time

import Adafruit_ADS1x15

import RPi.GPIO as GPIO

import time

import Adafruit_ADS1x15

GPIO.setwarnings(False)

ADC = Adafruit_ADS1x15.ADS1015()

GPIO.setmode(GPIO.BCM)

GPIO.setup(4,GPIO.OUT)

GAIN = 1

print('Reading ADS1x15values, press Ctrl C to quite')

print('|{0:>6}|'.format(*range(1)))

print('-'*37)

while(1):
      
     GPIO.output(4,GPIO.HIGH)
     time.sleep(5)
     GPIO.output(4,GPIO.LOW)
     time.sleep(5)

A = GPIO.output(4)

 if (A == True):
      
     for i in range(1):
        values = [0]*1 
        values[i] = ADC.read_adc(i,gain=GAIN)
        print('|{0:>6}|'.format(*values))|
        time.sleep(0.5)
        
 else:
     
    for i in range(1):
        values[i] = ADC.read_adc(i,gain=GAIN)
        print('|{0:>6}|'.format(*values))
        time.sleep(0.5)

        time.sleep(0.1)
 

Моя проблема в том, что после компиляции этого кода он не дает в результате аналогового преобразования в цифровое чтение. Ниже показан мой результат после компиляции.

После компиляции дан результат После компиляции дан результат

Кто-нибудь может помочь мне поработать над этим?

Комментарии:

1. что касается меня, у вас неправильные отступы, и вы пытаетесь напечатать его после цикла while(1) , но этот цикл никогда не закончится. Вы должны запустить его внутри цикла while(1) , или вам придется запускать цикл while(1) в отдельном потоке.

Ответ №1:

Если вы хотите сгенерировать последовательность импульсов, почему бы вам не проверить это: https://gpiozero.readthedocs.io/en/stable/migrating_from_rpigpio.html ?выделите = pwm #pwm-широтно-импульсная модуляция

Затем проверьте, можете ли вы прочитать адрес I2C вашего датчика с помощью этого: https://linux.die.net/man/8/i2cdetect

Затем вам нужно прочитать техническое описание АЦП, чтобы узнать, какой регистр вы можете прочитать. Установите библиотеку SMBU2 и используйте следующие функции: https://smbus2.readthedocs.io/en/latest /