Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| products:laboratory_iot_c:exp64 [2024/12/06 22:54] – создано labuser30 | products:laboratory_iot_c:exp64 [2024/12/06 22:58] (текущий) – [Программный код эксперимента] labuser30 | ||
|---|---|---|---|
| Строка 8: | Строка 8: | ||
| {{ : | {{ : | ||
| + | |||
| + | ==== Программный код эксперимента ==== | ||
| + | <file arduino Exp64.ino[enable_line_numbers=" | ||
| + | #include < | ||
| + | #include < | ||
| - | <file python Exp64.py[enable_line_numbers="2", start_line_numbers_at="1"]> | + | #define AP_NAME |
| - | from micropyserver import MicroPyServer | + | #define AP_PASSWORD |
| - | import time | + | |
| - | from machine import Pin, PWM | + | |
| - | import network | + | |
| - | import gc | + | |
| - | _init() | + | |
| - | gc.collect() | + | |
| - | LedR = PWM(Pin(13, Pin.OUT)) | + | #define PIN_LED_R |
| - | LedG = PWM(Pin(14, Pin.OUT)) | + | #define PIN_LED_G |
| - | LedB = PWM(Pin(15, Pin.OUT)) | + | #define PIN_LED_B |
| - | ap_id = " | + | ESP8266WebServer server(80); |
| - | ap_pass = " | + | |
| - | ap = network.WLAN(network.AP_IF) | + | void indexPage() { |
| - | ap.active(True) | + | |
| - | ap.config(essid=ap_id, | + | if (server.hasArg(" |
| - | time.sleep(2) | + | int duty_r = strtol(html_color.substring(1, |
| + | int duty_g = strtol(html_color.substring(3, | ||
| + | int duty_b = strtol(html_color.substring(5).c_str(), | ||
| - | while ap.isconnected() == False: | + | analogWrite(PIN_LED_R, 255 - duty_r); |
| - | pass | + | |
| + | analogWrite(PIN_LED_B, | ||
| - | print(' | + | String page = "< |
| + | page += "< | ||
| + | page += "< | ||
| + | page += "</ | ||
| + | page += "< | ||
| + | page += "< | ||
| + | page += R"(<form action="/"> | ||
| + | page += R" | ||
| + | page += R" | ||
| + | page += "</ | ||
| + | page += "</ | ||
| + | page += "</ | ||
| + | page.replace("< | ||
| + | server.send(200, | ||
| + | } | ||
| - | def index(request, params): | + | void setup() { |
| - | | + | Serial.begin(9600); |
| + | Serial.println(); | ||
| + | pinMode(PIN_LED_R, OUTPUT); | ||
| + | | ||
| + | pinMode(PIN_LED_B, | ||
| + | analogWriteRange(256); | ||
| + | analogWrite(PIN_LED_R, | ||
| + | analogWrite(PIN_LED_G, | ||
| + | analogWrite(PIN_LED_B, | ||
| - | if (' | + | WiFi.mode(WIFI_AP); |
| - | | + | |
| - | print(html_color) | + | IPAddress IP = WiFi.softAPIP(); |
| + | | ||
| + | Serial.println(IP); | ||
| - | r = html_color[0: | + | server.on("/", |
| - | g = html_color[2: | + | |
| - | b = html_color[4: | + | } |
| + | void loop() { | ||
| + | server.handleClient(); | ||
| + | } | ||
| + | </ | ||
| - | r = int(r, 16) | + | Переключаем WiFi в режим точки доступа: |
| - | | + | <code arduino[enable_line_numbers="2", |
| - | b = int(b, 16) | + | |
| - | + | </code> | |
| - | r = int(r * 1023 / 255) | + | |
| - | g = int(g * 1023 / 255) | + | |
| - | b = int(b * 1023 / 255) | + | |
| - | + | ||
| - | LedR.duty(1023-r) | + | |
| - | LedG.duty(1023-g) | + | |
| - | LedB.duty(1023-b) | + | |
| - | + | ||
| - | + | ||
| - | html_file = open("color.html") | + | |
| - | html = html_file.read() | + | |
| - | 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() | + | |
| - | </file> | + | |
| - | Создаем объект интерфейса, но на этот раз настраиваем его как | + | Настраиваем |
| - | < | + | < |
| - | ap = network.WLAN(network.AP_IF) | + | WiFi.softAP(AP_NAME, AP_PASSWORD); |
| </ | </ | ||
| - | Настраиваем | + | Получаем |
| - | < | + | < |
| - | ap.config(essid=ap_id, | + | |
| + | Serial.print(" | ||
| + | Serial.println(IP); | ||
| </ | </ | ||