Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
products:laboratory_iot:exp62 [2020/06/19 10:44] – [Программный код эксперимента] labuser29 | products:laboratory_iot:exp62 [2024/12/06 17:17] (текущий) – labuser30 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ===== Эксперимент 62. Управление цветом через веб- форму ===== | + | ===== Эксперимент 62. Управление цветом через веб-форму ===== |
- | Мы уже научились создавать простой веб- сервер, | + | Мы уже научились создавать простой веб-сервер, |
Для управления RGB светодиодом необходимо передавать на сервер 3 параметра — яркость красного, | Для управления RGB светодиодом необходимо передавать на сервер 3 параметра — яркость красного, | ||
Строка 28: | Строка 28: | ||
</ | </ | ||
- | <file python | + | Теперь наша форма имеет три текстовых поля с именами '' |
+ | |||
+ | <WRAP center round important 60%> | ||
+ | Сохрани эту страницу в корне файловой системы микроконтроллера под именем rgb_page.html | ||
+ | </ | ||
+ | |||
+ | Код программы: | ||
+ | |||
+ | <file python | ||
+ | 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 | + | LedR = PWM(Pin(13, Pin.OUT)) |
- | LedPinG | + | LedG = PWM(Pin(14, Pin.OUT)) |
- | LedPinR | + | LedB = PWM(Pin(15, Pin.OUT)) |
- | ledB = Pin(LedPinB, | + | wlan_id |
- | ledG = Pin(LedPinG, | + | wlan_pass |
- | ledR = Pin(LedPinR, | + | |
- | pwmB = PWM(ledB) | + | wlan = network.WLAN(network.STA_IF) |
- | pwmG = PWM(ledG) | + | wlan.active(True) |
- | pwmR = PWM(ledR) | + | wlan.connect(wlan_id, |
+ | time.sleep(1) | ||
- | pwmB.freq(500) | + | while wlan.isconnected() == False: |
- | pwmG.freq(500) | + | pass |
- | pwmR.freq(500) | + | |
- | pwmB.duty(500) | + | print(' |
- | pwmG.duty(300) | + | |
- | pwmR.duty(700) | + | |
+ | 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%> | ||
+ | Первым делом в коде программы нужно заменить '' | ||
+ | </ | ||
+ | |||
+ | Следует обратить внимание, |