Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
products:laboratory_iot_c:exp64 [2024/12/06 22:55] labuser30products:laboratory_iot_c:exp64 [2024/12/06 22:58] (текущий) – [Программный код эксперимента] labuser30
Строка 11: Строка 11:
  
 ==== Программный код эксперимента ==== ==== Программный код эксперимента ====
-<file python Exp64.py[enable_line_numbers="2", start_line_numbers_at="1"]> +<file arduino Exp64.ino[enable_line_numbers="2", start_line_numbers_at="1"]> 
-from micropyserver import MicroPyServer +#include <ESP8266WiFi.h> 
-import time +#include <ESP8266WebServer.h>
-from machine import Pin, PWM +
-import network +
-import gc +
-_init() +
-gc.collect()+
  
-LedR = PWM(Pin(13, Pin.OUT)) +#define AP_NAME     "RGB_light" 
-LedG = PWM(Pin(14, Pin.OUT)) +#define AP_PASSWORD "12345678"
-LedB = PWM(Pin(15, Pin.OUT))+
  
-ap_id = "RGB_light" +#define PIN_LED_R 13 
-ap_pass = "12345678"+#define PIN_LED_G 14 
 +#define PIN_LED_B 15
  
-ap = network.WLAN(network.AP_IF) +ESP8266WebServer server(80);
-ap.active(True) +
-ap.config(essid=ap_id, password=ap_pass)+
  
-time.sleep(2)+void indexPage() { 
 +  String html_color = "#4AD686"; 
 +  if (server.hasArg("color")) html_color = server.arg("color")
  
-while ap.isconnected() == False: +  int duty_r = strtol(html_color.substring(1,3).c_str(), NULL, 16); 
-    pass+  int duty_g strtol(html_color.substring(3,5).c_str(), NULL, 16); 
 +  int duty_b = strtol(html_color.substring(5).c_str(), NULL, 16);
  
-print('Device IP:'ap.ifconfig()[0])+  analogWrite(PIN_LED_R255 - duty_r); 
 +  analogWrite(PIN_LED_G, 255 - duty_g)
 +  analogWrite(PIN_LED_B, 255 - duty_b);
  
 +  String page = "<!DOCTYPE html>";
 +  page += "<html>";
 +  page += "<head>";
 +  page += "</head>";
 +  page += "<body>";
 +  page += "<h3>Select color:</h3>";
 +  page += R"(<form action="/">)";
 +  page += R"(<input type="color" style="height:50px;width:50%;" value="<=VALUE=>" name="color">)";
 +  page += R"(<input type="submit" value="Send">)";
 +  page += "</form>";
 +  page += "</body>";
 +  page += "</html>";
  
-def index(requestparams): +  page.replace("<=VALUE=>"html_color); 
-    html_color = '4AD686'+  server.send(200, "text/html", page);  
 +}
  
-    if ('color' in params): +void setup() { 
-        html_color = params['color'][3:9] +  Serial.begin(9600); 
-        print(html_color)+  Serial.println(); 
 +  pinMode(PIN_LED_R, OUTPUT); 
 +  pinMode(PIN_LED_G, OUTPUT); 
 +  pinMode(PIN_LED_B, OUTPUT); 
 +  analogWriteRange(256); 
 +  analogWrite(PIN_LED_R, 255); 
 +  analogWrite(PIN_LED_G, 255); 
 +  analogWrite(PIN_LED_B, 255);
  
-        r html_color[0:2] +  WiFi.mode(WIFI_AP); 
-        g = html_color[2:4] +  WiFi.softAP(AP_NAME, AP_PASSWORD); 
-        b = html_color[4:6]+  IPAddress IP WiFi.softAPIP(); 
 +  Serial.print("AP set IP address"); 
 +  Serial.println(IP);
  
-        r = int(r16+  server.on("/"indexPage); 
-        g = int(g, 16+  server.begin() 
-        b = int(b, 16)+
 +void loop() 
 +  server.handleClient();  
 +
 +</file>
  
-        r = int(r * 1023 / 255) +Переключаем WiFi в режим точки доступа: 
-        int(g * 1023 / 255) +<code arduino[enable_line_numbers="2", start_line_numbers_at="53"]> 
-        b = int(b * 1023 / 255) +  WiFi.mode(WIFI_AP);   
- +</code>
-        LedR.duty(1023-r) +
-        LedG.duty(1023-g) +
-        LedB.duty(1023-b) +
-        +
-        +
-    html_file = open("color.html"+
-    html = html_file.read() +
-    html = html.replace('<=VALUE=>''#' + html_color) +
-    html_file.close() +
-    server.send(html, content_type="Content-Type: text/html") +
-   +
- +
-LedR.duty(0) +
-LedG.duty(0) +
-LedB.duty(0) +
- +
- +
-server = MicroPyServer() +
-server.add_route("/", index) +
-server.start() +
-</file>+
  
-Создаем объект интерфейса, но на этот раз настраиваем его как точку доступа +Настраиваем свойства точки доступа, а именно устанавливаем имя сети и пароль: 
-<code python[enable_line_numbers="2", start_line_numbers_at="16"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="54"]> 
-ap = network.WLAN(network.AP_IF)+  WiFi.softAP(AP_NAME, AP_PASSWORD);
 </code> </code>
  
-Настраиваем свойства точки доступа. А именно устанавливаем имя сети и пароль +Получаем IP адрес и печатаем его в последовательный порт: 
-<code python[enable_line_numbers="2", start_line_numbers_at="18"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="55"]> 
-ap.config(essid=ap_id, password=ap_pass)+  IPAddress IP = WiFi.softAPIP()
 +  Serial.print("AP set IP address: "); 
 +  Serial.println(IP);
 </code> </code>