Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot:exp62 [2020/06/19 10:44] – [Программный код эксперимента] labuser29products:laboratory_iot:exp62 [2024/12/06 17:17] (текущий) labuser30
Строка 1: Строка 1:
-===== Эксперимент 62. Управление цветом через веб- форму =====+===== Эксперимент 62. Управление цветом через веб-форму =====
  
-Мы уже научились создавать простой веб- сервер, отправлять веб- страницы в браузер клиента и отправлять данные из формы на странице обратно на сервер. Теперь мы сделаем ночник с полноцветным светодиодом, цветом и яркостью которого можно управлять по Wi-Fi через веб- интерфейс. +Мы уже научились создавать простой веб-сервер, отправлять веб-страницы в браузер клиента и отправлять данные из формы на странице обратно на сервер. Теперь мы сделаем ночник с полноцветным светодиодом, цветом и яркостью которого можно управлять по Wi-Fi через веб-интерфейс. 
  
 Для управления RGB светодиодом необходимо передавать на сервер 3 параметра — яркость красного, синего и зеленого цветов. Для управления RGB светодиодом необходимо передавать на сервер 3 параметра — яркость красного, синего и зеленого цветов.
Строка 28: Строка 28:
 </file> </file>
  
-<file python Exp11.py[enable_line_numbers="2", start_line_numbers_at="1"]>+Теперь наша форма имеет три текстовых поля с именами ''r'', ''g'' и ''b'' для ввода яркости красного, зеленого и синего цветов соответственно. Также мы вставили три метки, чтобы подменять их на текущее значение яркости перед отправкой страницы пользователю. 
 + 
 +<WRAP center round important 60%> 
 +Сохрани эту страницу в корне файловой системы микроконтроллера под именем rgb_page.html 
 +</WRAP> 
 + 
 +Код программы: 
 + 
 +<file python Exp62.py[enable_line_numbers="2", start_line_numbers_at="1"]> 
 +from micropyserver import MicroPyServer 
 +import time
 from machine import Pin, PWM from machine import Pin, PWM
 +import network
 +import gc
 _init() _init()
 +gc.collect()
  
-LedPinB 15 +LedR PWM(Pin(13, Pin.OUT)) 
-LedPinG = 14 +LedG PWM(Pin(14, Pin.OUT)) 
-LedPinR 13+LedB PWM(Pin(15, Pin.OUT))
  
-ledB Pin(LedPinB, Pin.OUT) +wlan_id "Wi-Fi_Name" 
-ledG Pin(LedPinG, Pin.OUT) +wlan_pass "Wi-Fi_Password"
-ledR = Pin(LedPinR, Pin.OUT)+
  
-pwmB PWM(ledB+wlan network.WLAN(network.STA_IF
-pwmG = PWM(ledG+wlan.active(True
-pwmR = PWM(ledR)+wlan.connect(wlan_id, wlan_pass) 
 +time.sleep(1)
  
-pwmB.freq(500+while wlan.isconnected() == False: 
-pwmG.freq(500) +  pass
-pwmR.freq(500)+
  
-pwmB.duty(500+print('Device IP:', wlan.ifconfig()[0]) 
-pwmG.duty(300+ 
-pwmR.duty(700)+ 
 +def index(request, params): 
 +    duty_r = '512' 
 +    duty_g = '512' 
 +    duty_b = '512' 
 + 
 +    if ('r' in params): 
 +        duty_r = params['r'
 +        LedR.duty(1023 - int(duty_r)
 + 
 +    if ('g' in params): 
 +        duty_g = params['g'
 +        LedG.duty(1023 - int(duty_g)
 + 
 +    if ('b' in params): 
 +        duty_b = params['b'] 
 +        LedB.duty(1023 - int(duty_b)) 
 +        
 + 
 +    html_file = open("rgb_page.html"
 +    html = html_file.read() 
 + 
 +    html = html.replace('<=VALUE=R=>', duty_r) 
 +    html = html.replace('<=VALUE=G=>', duty_g) 
 +    html = html.replace('<=VALUE=B=>', duty_b) 
 + 
 +    html_file.close() 
 +    server.send(html, content_type="Content-Type: text/html"
 +     
 + 
 +LedR.duty(0) 
 +LedG.duty(0) 
 +LedB.duty(0) 
 + 
 + 
 +server = MicroPyServer() 
 +server.add_route("/", index) 
 +server.start()
 </file> </file>
 +
 +<WRAP center round important 60%>
 +Первым делом в коде программы нужно заменить ''Wi-Fi_Name'' на имя нужной сети, а ''Wi-Fi_Password'' на пароль от нее.
 +</WRAP>
 +
 +Следует обратить внимание, что перед установкой яркости светодиода мы вычитаем полученные данные из числа 1023. Это сделано потому, что наш RGB светодиод с общим анодом (имеет общий плюс).