Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| 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('< | + | |
| </ | </ | ||