15.2.2 Mise à l'heure automatique
Pour éviter de saisir la date et l'heure, on va utiliser l'API qui donne la date et l'heure afin
d'initialiser le DS1307. Il faut par contre utiliser un PICO W car on a besoin du Wifi.
Il suffit de modifier le programme horloge.py de la façon suivante :
Les autres fichiers restent identiques.
from
machine
import
from
ds1307
import
DS1307
from
pico_i2c_lcd
import
import
utime
import
machine
import
network
import
urequests
import
ujson
as
json
import
time
i2c_lcd
= I2C(id=1,scl=Pin(3),sda=Pin(2),freq=100000)
lcd
= I2cLcd(i2c_lcd, 0x27, 2, 16)
i2c_rtc
=
I2C(0,scl
result
= I2C.scan(i2c_rtc) print(result)
rtc
= DS1307(i2c_rtc) print(rtc.datetime())
sta
= network.WLAN(network.STA_IF)
if not
sta.isconnected():
print('connecting to
sta.active(True)
sta.connect('Livebox-xxxx', 'xxxxxxxxxxxxxxxxxx')
while not
sta.isconnected():
pass
print('network
config:', sta.ifconfig())
# **************************************
# Constants and variables:
HTTP_HEADERS
= {'Content-Type': 'application/json'}
UPDATE_TIME_INTERVAL
last_update
= time.ticks_ms()
# HTTP GET
response
= urequests.get('http://worldtimeapi.org/api/timezone/Europe/Paris')
# check status code of the request
if
response.status_code
# get the json format of data
data
= response.json()
# field1 = str(data['feeds'][0]['field1'])
print(data)
print(data['datetime'])
year
= int(data['datetime'][0:4]);
month
= int(data['datetime'][5:7])
date
= int(data['datetime'][8:10])
hour
= int(data['datetime'][11:13])
minute
= int(data['datetime'][14:16])
seconde
= int(data['datetime'][17:19])
day
=
0
# faux mais on n'affiche pas le jour
now
= (year,month,date,day,hour,minute,seconde,0)
rtc.datetime(now)
print(rtc.datetime())
while
True:
(year,month,date,day,hour,minute,second,p1)=rtc.datetime()
lcd.move_to(0,0)
lcd.putstr("Time:")
lcd.move_to(6,0)
if(hour
< 10):
hourAff
=
'0'
else:
hourAff
= str(hour)
if(minute
< 10):
minuteAff
=
else:
minuteAff
= str(minute)
if(second
< 10):
I2C,
Pin
I2cLcd
=
Pin(1),sda
=
Pin(0),freq
network...')
=
60000
# in ms
== 200:
+ str(hour)
'0'
+ str(minute)
= 100000)
print(year)
print(month)
print(date)
print(hour)
print(minute)
print(seconde)