Я создаю код, который использует 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
Программы на Python
1732898250
Anonymous
Я создаю код, который использует 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()
Подробнее здесь: [url]https://stackoverflow.com/questions/79235027/my-sd-card-keeps-telling-me-it-takes-6-positional-arguments-but-3-were-given[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия