Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| products:laboratory_iot:exp62 [2020/06/19 10:23] – labuser29 | products:laboratory_iot:exp62 [2024/12/06 17:17] (текущий) – labuser30 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ===== Эксперимент 62. Управление цветом через веб- форму ===== | + | ===== Эксперимент 62. Управление цветом через веб-форму ===== |
| - | Мы уже научились создавать простой веб- сервер, | + | Мы уже научились создавать простой веб-сервер, |
| Для управления RGB светодиодом необходимо передавать на сервер 3 параметра — яркость красного, | Для управления RGB светодиодом необходимо передавать на сервер 3 параметра — яркость красного, | ||
| Строка 12: | Строка 12: | ||
| // | // | ||
| + | ==== Программный код эксперимента ==== | ||
| + | <file html rgb_page.html[enable_line_numbers=" | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | <form action="/"> | ||
| + | Red: <input type=" | ||
| + | Green: <input type=" | ||
| + | Blue: <input type=" | ||
| + | <input type=" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Теперь наша форма имеет три текстовых поля с именами '' | ||
| + | |||
| + | <WRAP center round important 60%> | ||
| + | Сохрани эту страницу в корне файловой системы микроконтроллера под именем rgb_page.html | ||
| + | </ | ||
| + | |||
| + | Код программы: | ||
| + | |||
| + | <file python Exp62.py[enable_line_numbers=" | ||
| + | from micropyserver import MicroPyServer | ||
| + | import time | ||
| + | from machine import Pin, PWM | ||
| + | import network | ||
| + | import gc | ||
| + | _init() | ||
| + | gc.collect() | ||
| + | |||
| + | LedR = PWM(Pin(13, Pin.OUT)) | ||
| + | LedG = PWM(Pin(14, Pin.OUT)) | ||
| + | LedB = PWM(Pin(15, Pin.OUT)) | ||
| + | |||
| + | wlan_id = " | ||
| + | wlan_pass = " | ||
| + | |||
| + | wlan = network.WLAN(network.STA_IF) | ||
| + | wlan.active(True) | ||
| + | wlan.connect(wlan_id, | ||
| + | time.sleep(1) | ||
| + | |||
| + | while wlan.isconnected() == False: | ||
| + | pass | ||
| + | |||
| + | print(' | ||
| + | |||
| + | |||
| + | def index(request, | ||
| + | duty_r = ' | ||
| + | duty_g = ' | ||
| + | duty_b = ' | ||
| + | |||
| + | if (' | ||
| + | duty_r = params[' | ||
| + | LedR.duty(1023 - int(duty_r)) | ||
| + | |||
| + | if (' | ||
| + | duty_g = params[' | ||
| + | LedG.duty(1023 - int(duty_g)) | ||
| + | |||
| + | if (' | ||
| + | duty_b = params[' | ||
| + | LedB.duty(1023 - int(duty_b)) | ||
| + | |||
| + | |||
| + | html_file = open(" | ||
| + | html = html_file.read() | ||
| + | |||
| + | html = html.replace('< | ||
| + | html = html.replace('< | ||
| + | html = html.replace('< | ||
| + | |||
| + | html_file.close() | ||
| + | server.send(html, | ||
| + | | ||
| + | |||
| + | LedR.duty(0) | ||
| + | LedG.duty(0) | ||
| + | LedB.duty(0) | ||
| + | |||
| + | |||
| + | server = MicroPyServer() | ||
| + | server.add_route("/", | ||
| + | server.start() | ||
| + | </ | ||
| + | |||
| + | <WRAP center round important 60%> | ||
| + | Первым делом в коде программы нужно заменить '' | ||
| + | </ | ||
| + | |||
| + | Следует обратить внимание, | ||