File “Test.py”, line 189 while True: ^ SyntaxError: invalid syntax что делать с ней?
import sys
sys.path.append("/home/pi/weather/lib")
import RPi_Iвведите сюда код2C_driver
import time
from time import strftime, sleep
from datetime import datetime
try:
from smbus2 import SMBus
except ImportError:
from smbus import SMBus
from bme280 import BME280
lcd = RPi_I2C_driver.lcd()
lcd.lcd_clear()
# Initialise the BME280
bus = SMBus(1)
bme280 = BME280(i2c_dev=bus)
# build big digits
def disp_number(lcd_char, position):
if lcd_char=="0" :
lcd.lcd_display_string_pos(unichr(3),1,0)
lcd.lcd_display_string_pos(unichr(3),2,0)
lcd.lcd_display_string_pos(unichr(0),1,1)
lcd.lcd_display_string_pos(unichr(1),2,1)
lcd.lcd_display_string_pos(unichr(2),1,2)
lcd.lcd_display_string_pos(unichr(2),2,2)
elif lcd_char=="1" :
lcd.lcd_display_string_pos(unichr(4),1,1)
lcd.lcd_display_string_pos(unichr(2),1,2)
lcd.lcd_display_string_pos(unichr(2),2,2)
elif lcd_char=="2" :
lcd.lcd_display_string_pos(unichr(4),1,0)
lcd.lcd_display_string_pos(unichr(3),2,0)
lcd.lcd_display_string_pos(unichr(6),1,1)
lcd.lcd_display_string_pos(unichr(1),2,1)
lcd.lcd_display_string_pos(unichr(2),1,2)
elif lcd_char=="3" :
lcd.lcd_display_string_pos(unichr(4),1,0)
lcd.lcd_display_string_pos(unichr(5),2,0)
lcd.lcd_display_string_pos(unichr(6),1,1)
lcd.lcd_display_string_pos(unichr(1),2,1)
lcd.lcd_display_string_pos(unichr(2),1,2)
lcd.lcd_display_string_pos(unichr(2),2,2)
elif lcd_char=="4" :
lcd.lcd_display_string_pos(unichr(3),1,0)
lcd.lcd_display_string_pos(unichr(1),1,1)
lcd.lcd_display_string_pos(unichr(2),1,2)
lcd.lcd_display_string_pos(unichr(2),2,2)
elif lcd_char=="5" :
lcd.lcd_display_string_pos(unichr(3),1,0)
lcd.lcd_display_string_pos(unichr(5),2,0)
lcd.lcd_display_string_pos(unichr(7),1,1)
lcd.lcd_display_string_pos(unichr(1),2,1)
lcd.lcd_display_string_pos(unichr(4),1,2)
lcd.lcd_display_string_pos(unichr(2),2,2)
elif lcd_char=="6" :
lcd.lcd_display_string_pos(unichr(3),1,0)
lcd.lcd_display_string_pos(unichr(3),2,0)
lcd.lcd_display_string_pos(unichr(7),1,1)
lcd.lcd_display_string_pos(unichr(1),2,1)
lcd.lcd_display_string_pos(unichr(4),1,2)
lcd.lcd_display_string_pos(unichr(2),2,2)
elif lcd_char=="7" :
lcd.lcd_display_string_pos(unichr(4),1,0)
lcd.lcd_display_string_pos(unichr(0),1,1)
lcd.lcd_display_string_pos(unichr(2),1,2)
lcd.lcd_display_string_pos(unichr(2),2,2)
elif lcd_char=="8" :
lcd.lcd_display_string_pos(unichr(3),1,0)
lcd.lcd_display_string_pos(unichr(3),2,0)
lcd.lcd_display_string_pos(unichr(6),1,1)
lcd.lcd_display_string_pos(unichr(1),2,1)
lcd.lcd_display_string_pos(unichr(2),1,2)
lcd.lcd_display_string_pos(unichr(2),2,2)
elif lcd_char=="9" :
lcd.lcd_display_string_pos(unichr(3),1,0)
lcd.lcd_display_string_pos(unichr(6),1,1)
lcd.lcd_display_string_pos(unichr(1),2,1)
lcd.lcd_display_string_pos(unichr(2),1,2)
lcd.lcd_display_string_pos(unichr(2),2,2)
else:
lcd.lcd_display_string_pos(unichr(254),0,0)
lcd.lcd_display_string_pos(unichr(254),0,0)
lcd.lcd_display_string_pos(unichr(254),0,0)
lcd.lcd_display_string_pos(unichr(254),0,1)
lcd.lcd_display_string_pos(unichr(254),0,1)
lcd.lcd_display_string_pos(unichr(254),0,1)
return lcd_char;
# scroll effect
def shift(direction):
if direction=="left" :
for x in range(0, 16):
lcd.shift_display(-1)
sleep(0.05)
else :
for x in range(0, 16):
lcd.shift_display(1)
sleep(0.05)
def clock_date(digits, month, day_name):
# previous text leaving to left
shift("left")
# preparing date buffer
tens_day = disp_number(digits[4], 0)
day = disp_number(digits[5], 4)
lcd.cursor_pos = (0, 8)
lcd.write_string(' ')
lcd.cursor_pos = (1, 8)
lcd.write_string(' ')
lcd.cursor_pos = (0, 8)
lcd.write_string(month[:8])
lcd.cursor_pos = (1, 8)
lcd.write_string(day_name[:8])
# date entering from left
shift("right")
sleep(2)
def clock_hour(digits):
# date leaving to left
shift("left")
# preparing hour buffer
lcd.cursor_pos = (0, 0)
lcd.write_string(' ')
lcd.cursor_pos = (1, 0)
lcd.write_string(' ')
disp_number(digits[0], 0)
disp_number(digits[1], 4)
disp_number(digits[2], 9)
disp_number(digits[3], 13)
# hour entering from left
shift("right")
def main():
try:
input = raw_input
except NameError:
pass
try:
unichr = unichr
except NameError:
unichr = chr
old_time = 0
counter = 0
# Custom chars
fontdata1 = [
# Char 0 - Up
[31,31,0,0,0,0,0,0],
# Char 1 - Down
[0,0,0,0,0,0,31,31],
# Char 2 - Left
[28,28,28,28,28,28,28,28],
# Char 3 - Right
[7,7,7,7,7,7,7,7],
# Char 4 - Up-Short
[7,7,0,0,0,0,0,0],
# Char 5 - Down Short
[0,0,0,0,0,0,7,7],
# Char 6 - Short Up Down
[31,31,0,0,0,0,31,31],
# Char 7 - Dots
[0,0,0,0,0,0,6,6],
# Load logo chars (fontdata1)
lcd.lcd_load_custom_chars(fontdata1)
while True:
new_time = datetime.now().strftime('%H%M%d')
month = datetime.now().strftime('%B')
day_name = datetime.now().strftime('%A')
# time changed, update LCD buffer
if new_time!=old_time :
digits = str(new_time)
tens_hour = disp_number(digits[0], 0)
hour = disp_number(digits[1], 4)
tens_minutes = disp_number(digits[2], 9)
minutes = disp_number(digits[3], 13)
old_time = new_time
cur_hour = int(tens_hour)*10 + int(hour)
# enable backlight by night
lcd.set_backlight(cur_hour>=19 or cur_hour<9)
# temperature = bme280.get_temperature()
# pressure = bme280.get_pressure()
# pressure = round(pressure * 0.750061683, 2)
# humidity = bme280.get_humidity()
# lcd.lcd_display_string("%s" %time.strftime('%H:%M:%S %d/%m/%Y'), 1)
# lcd.lcd_display_string('{:04.1f}C {:04.1f}%'.format(temperature,humidity), 2)
# lcd.lcd_display_string('{:04.1f}Hg'.format(pressure,), 3)
# time.sleep(1)'''
Ответы (2 шт):
Автор решения: Danis
→ Ссылка
fontdata1 = [
# Char 0 - Up
[31,31,0,0,0,0,0,0],
# Char 1 - Down
[0,0,0,0,0,0,31,31],
# Char 2 - Left
[28,28,28,28,28,28,28,28],
# Char 3 - Right
[7,7,7,7,7,7,7,7],
# Char 4 - Up-Short
[7,7,0,0,0,0,0,0],
# Char 5 - Down Short
[0,0,0,0,0,0,7,7],
# Char 6 - Short Up Down
[31,31,0,0,0,0,31,31],
# Char 7 - Dots
[0,0,0,0,0,0,6,6],
Не хватает закрывающийся скобки должно быть так:
fontdata1 = [
# Char 0 - Up
[31,31,0,0,0,0,0,0],
# Char 1 - Down
[0,0,0,0,0,0,31,31],
# Char 2 - Left
[28,28,28,28,28,28,28,28],
# Char 3 - Right
[7,7,7,7,7,7,7,7],
# Char 4 - Up-Short
[7,7,0,0,0,0,0,0],
# Char 5 - Down Short
[0,0,0,0,0,0,7,7],
# Char 6 - Short Up Down
[31,31,0,0,0,0,31,31],
# Char 7 - Dots
[0,0,0,0,0,0,6,6]]
Автор решения: Zhihar
→ Ссылка
код кривой, вот что
# Custom chars
fontdata1 = [
# Char 0 - Up
[31,31,0,0,0,0,0,0],
# Char 1 - Down
[0,0,0,0,0,0,31,31],
# Char 2 - Left
[28,28,28,28,28,28,28,28],
# Char 3 - Right
[7,7,7,7,7,7,7,7],
# Char 4 - Up-Short
[7,7,0,0,0,0,0,0],
# Char 5 - Down Short
[0,0,0,0,0,0,7,7],
# Char 6 - Short Up Down
[31,31,0,0,0,0,31,31],
# Char 7 - Dots
[0,0,0,0,0,0,6,6],
кто список закрывать будет то?
вот интерпретатор и офигевает пытаясь туда while встроить
для начала добавьте ] в конце