Я создаю код, который использует Raspberry Pi для измерения температуры, уровня газа, освещенности и движения в данной комнате. Он у меня есть, поэтому он отображается на ЖК-экране, чтобы его можно было просмотреть в любой момент.
Единственное, что я не могу заставить SD-карту прекратить это действие. ошибка, когда говорится, что имеется 6 позиционных аргументов, хотя ожидается три. Я хочу, чтобы данные записывались в файл на SD-карте для просмотра позже, когда код не будет запущен. Почему он это делает и как это исправить?
from machine import I2C, Pin, ADC, SPI
import machine
from pico_i2c_lcd import I2cLcd
import utime
import sdcard
import os
from time import sleep
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
I2C_ADDR = i2c.scan()[0]
lcd = I2cLcd(i2c, I2C_ADDR, 2, 16)
lcd.clear()
pir_sensor = Pin(28, Pin.IN)
print("time(s) motion voltage temperature light 3 sec intervals")
n = 0
timeintervals = 9
# Initialize SPI
spi = machine.SPI(0,
baudrate=1000000,
polarity=0,
phase=0,
sck=machine.Pin(18),
mosi=machine.Pin(19),
miso=machine.Pin(16))
# Initialize SD card
cs = machine.Pin(17, machine.Pin.OUT)
sd = sdcard.SDCard(spi, cs)
vfs = os.VfsFat(sd)
os.mount(vfs, "/sd")
while True:
motion = 1 if pir_sensor.value() == 1 else 0
mq2 = ADC(26)
conversion_factor = 3.3 / 65535
mq2_voltage = mq2.read_u16() * conversion_factor
sensor = ADC(4)
reading = sensor.read_u16()
sensor_voltage = reading * (3.3 / 65535)
temperature = 27 - (sensor_voltage - 0.706) / 0.001721
temperature = temperature * 1.8 + 32
ldr = ADC(27)
ldr_value = ldr.read_u16()
RoomLit = 1 if ldr_value < 20000 else 0
print(n, motion, mq2_voltage, temperature, RoomLit)
lcd.putstr("Motion = " + str(motion) + "\n")
lcd.putstr("V = " + str(mq2_voltage)[:5] + "\n")
sleep(3)
lcd.clear()
lcd.putstr("temp = " + str(temperature)[:4] + "deg-F" + "\n")
lcd.putstr("RoomLit = " + str(RoomLit) + "\n")
sleep(3)
lcd.clear()
lcd.putstr("time = " + str(n) + "\n")
# Write data to SD card
try:
with open("/sd/data.txt", "a") as file:
file.write(f"{n}, {motion}, {mq2_voltage}, {temperature}, {RoomLit}\n")
print("Data written to SD card")
except Exception as e:
print("Error writing to SD card:", e)
n = n + timeintervals
sleep(timeintervals)
lcd.clear()
Подробнее здесь: https://stackoverflow.com/questions/792 ... were-given
Моя SD-карта продолжает сообщать мне, что требуется 6 позиционных аргументов, но было задано 3 [закрыто] ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Pydantic TypeError: validate() принимает 2 позиционных аргумента, но было задано 3
Anonymous » » в форуме Python - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Невозможно запустить команду CLI из -за позиционных аргументов [закрыто]
Anonymous » » в форуме Javascript - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-
-
-
TypeError: int() принимает не более 2 аргументов (3 задано), почему я получаю эту ошибку?
Anonymous » » в форуме Python - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-