Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
products:laboratory_iot_c:exp63 [2024/12/06 22:26] – [Программный код эксперимента] labuser30 | products:laboratory_iot_c:exp63 [2024/12/06 22:44] (текущий) – [Программный код эксперимента] labuser30 | ||
---|---|---|---|
Строка 33: | Строка 33: | ||
</ | </ | ||
</ | </ | ||
- | |||
- | <WRAP center round important 60%> | ||
- | Сохрани эту страницу в корне файловой системы микроконтроллера под именем color.html | ||
- | </ | ||
Код программы: | Код программы: | ||
Строка 59: | Строка 55: | ||
int duty_g = strtol(html_color.substring(3, | int duty_g = strtol(html_color.substring(3, | ||
int duty_b = strtol(html_color.substring(5).c_str(), | int duty_b = strtol(html_color.substring(5).c_str(), | ||
- | + | | |
- | Serial.println(html_color); | + | |
- | Serial.println(duty_r); | + | |
- | Serial.println(duty_g); | + | |
- | Serial.println(duty_b); | + | |
analogWrite(PIN_LED_R, | analogWrite(PIN_LED_R, | ||
analogWrite(PIN_LED_G, | analogWrite(PIN_LED_G, | ||
Строка 118: | Строка 109: | ||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
- | Первым делом в коде программы нужно заменить '' | + | Первым делом в коде программы нужно заменить '' |
</ | </ | ||
- | Рассмотрим алгоритм преобразования цвета. Веб форма отправляет на наш сервер цвет в формате #FFFFFF. При этом символ # трансформируется в код символа %23. Поэтому в программе | + | Рассмотрим алгоритм преобразования цвета. Веб форма отправляет на наш сервер цвет в формате #FFFFFF и получает аналогичный ответ. |
- | <code python[enable_line_numbers=" | + | |
- | html_color = params[' | + | |
- | </ | + | |
- | Теперь в переменной '' | + | < |
- | < | + | |
- | | + | if (server.hasArg(" |
- | g = html_color[2:4] | + | |
- | b = html_color[4: | + | |
</ | </ | ||
- | Теперь в переменных r, g и b у нас | + | Теперь в переменной '' |
+ | Для получения нужной пары | ||
- | < | + | < |
- | r = int(r, 16) | + | int duty_r = strtol(html_color.substring(1, |
- | g = int(g, 16) | + | int duty_g = strtol(html_color.substring(3, |
- | b = int(b, 16) | + | int duty_b = strtol(html_color.substring(5).c_str(), |
</ | </ | ||
- | Теперь мы получили три числа, которые могут быть | + | Теперь мы имеем данные для управления ШИМ |
- | <code python[enable_line_numbers=" | + | <code python[enable_line_numbers=" |
- | r = int(r * 1023 / 255) | + | |
- | g = int(g * 1023 / 255) | + | |
- | b = int(b * 1023 / 255) | + | |
</ | </ | ||
- | Теперь мы имеем данные для управления ШИМ сигналом светодиода. Остается только не забыть, | + | При выводе страницы в браузер мы должны заменить метку в шаблоне страницы на актуальный цвет. |
- | <code python[enable_line_numbers=" | + | < |
- | LedR.duty(1023-r) | + | page.replace("< |
- | LedG.duty(1023-g) | + | |
- | LedB.duty(1023-b) | + | |
- | </ | + | |
- | + | ||
- | При выводе страницы в браузер мы должны заменить метку в шаблоне страницы на актуальный цвет, но в формате HTML. | + | |
- | < | + | |
- | html = html.replace('< | + | |
</ | </ | ||