ESP8266用网页控制电灯(micropython)

#此esp8266的网页又链接到另一个esp8266    里边还有个温湿度传感器

 

 

-----------------------------------------------------------------------------------------------------------------------------------------

# #####################################################################main.py
import network
import utime

SSID = "OpenWrt"
PASSWORD = "*****************" ####################################

def do_connect():
    wlan = network.WLAN(network.AP_IF)
    wlan.active(True)
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    wlan.ifconfig(('192.168.123.254', '255.255.255.0', '192.168.123.1', '192.168.123.1'))##############################
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect(SSID, PASSWORD)

    start = utime.time()
    while not wlan.isconnected():
        utime.sleep(1)
        if utime.time()-start > 5:
            print("connect timeout!")
            break

    if wlan.isconnected():
        print('network config:', wlan.ifconfig())

do_connect()
import web2

 

---------------------------------------------------------------------------------------------------------------------

###########################################################web2.py

 

import machine
import utime
import dht
d = dht.DHT11(machine.Pin(2))
from machine import Pin
p0 = Pin(0, Pin.OUT)
p0.on()
p1 = Pin(4, Pin.OUT)
color1="blue"
color2="blue"
color3="black"
color4="black"
loc="<html>"
loc2="""
<script >
location.href="http://192.168.123.254"
</script >
</html>

"""
def html():
  return """
<html><head>
    <meta  http-equiv="Content-Type"  content="text/html; charset=utf-8" />
    <meta name="viewport"content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes"/>
</head>

<script >
    function dianji(val)
    {
        var request = new XMLHttpRequest();

        
        request.open('GET', "?mcu_do="+val,true);
        if (val=='5on'){
         {   request.onload = function() {  huixian.innerHTML= this.response;    }
    }
        }
        else{
        request.onload = function() {  
        if( this.response[6]==1)deng3.style.color="black";else deng3.style.color="red" 

        }

        }
        request.send();
    }

    function dianji2(val){
location.href="http://192.168.123.253/?mcu_do="+val
    }
    
</script>

<body>
    <h1 id=deng1 style="color:"""+color1+"""">屋里电灯</h1>
    <input  type="button" οnclick="dianji2('1on');" value="开" />&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    <input  type="button" οnclick="dianji2('1of');" value="关" />
        <h1 id=deng2 style="color:"""+color2+"""" >院里电灯</h1>
    <input  type="button" οnclick="dianji2('2on');" value="开" />&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    <input  type="button" οnclick="dianji2('2of');" value="关" />
    <h1 id=deng3 style="color:"""+color3+"""">西屋电灯</h1>
    <input  type="button" οnclick="dianji('3on');" value="开" />&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    <input  type="button" οnclick="dianji('3of');" value="关" />
        
    <br>
    <br>    
    <div style="width:40px; height:50px;" id="huixian"></div>
    <input  type="button" οnclick="dianji('5on');" value="温湿度" />
</body>
</html>

""" 
import socket
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
addr2 = socket.getaddrinfo('192.168.123.253',80)[0][-1]
s = socket.socket()

s.bind(addr)
s.listen(0)


print('listening on', addr)
response2 = html
while True:
  try:
    cl, addr = s.accept()
    print('client connected from :', addr)
    #cl_file = cl.makefile('rwb', 0)
    cl.settimeout(3.0)
    lll= b''
    while True:       
            line = cl.readline()        
            lll=lll+line
            #print( lll)
            if not line or line == b'\r\n':
                break
    llll=lll.decode("utf-8")
    l=llll.find("mcu_do=",0,20)
    if  not l==-1:
        cmd=(llll[l+7:l+10])
        if cmd=="5on":
            try:
                d.measure()
            ddd=str(d.temperature()) 
            except OSError:
                cl.send( "错")
                cl.close()

           else:
                response =ddd + " " + str(d.humidity())
                cl.send(response)
                cl.close()
            continue
        elif cmd=="3of":
            print("of")
            p0.on()
            cl.send(loc)
            cl.send(str(p0.value())+str(p1.value()))
            cl.send(loc2)
            cl.close()
        elif cmd=="3on":
            print("on")
            p0.off()
            cl.send(loc)
            cl.send(str(p0.value())+str(p1.value()))
            cl.send(loc2)
            cl.close()

       elif cmd=="xof":
            print("3of")
            s2.connect(addr2)
            sss="GET /?mcu_do=1of  http/1.1\r\n"
            s2.send(sss.encode('utf-8'))
            sss="HOST:192.168.123.253\r\n"
            s2.send(sss.encode('utf-8'))    
            s2.close()
            cl.close()
        elif cmd=="xon":
            print("3on")
            s2 = socket.socket()
            s2.connect(addr2)
            sss="GET /?mcu_do=2on  http/1.1\r\n"
            s2.send(sss.encode('utf-8'))
            sss="HOST:192.168.123.253\r\n\r\n"
            s2.send(sss.encode('utf-8'))    
            
            cl.send(s2.recv(100))
            s2.close()
            cl.close()
        elif cmd=="yof":
            print("yof")
            p1.off()
            cl.send(loc)
            cl.send(str(p0.value())+str(p1.value()))
            cl.send(loc2)
            cl.close()
        elif cmd=="yon":
            print("yon")
            p1.on()
            cl.send(loc)
            cl.send(str(p0.value())+str(p1.value()))
            cl.send(loc2)
            cl.close()
        elif cmd=="rst":
            machine.reset()
            
    else:        
      if(p1.value()):
        color3="red"
      else:
        color3="black"
      if(p0.value()):
        color4="red"
      else:
        color4="black"
      cl.write(html())
      cl.close()
  except :
        print( "cuowu")
    

        

好的,我知道了。针对你的问题,我能够为你提供如下的解答: 在使用 MicroPythonESP8266 控制 LED 的过程中,可以通过 PWM 技术实现呼吸灯效果。PWM(Pulse Width Modulation)脉宽调制技术是一种通过改变信号的占空比来控制电路输出功率的技术。 具体实现步骤如下: 1. 首先需要在 ESP8266 上安装 MicroPython,然后连接 ESP8266 和 LED。 2. 在 MicroPython 中,可以使用 machine 模块中的 Pin 和 PWM 类来控制 LED。 3. 先使用 Pin 类将 LED 连接到 ESP8266 上的一个 GPIO 引脚。 4. 再使用 PWM 类来初始化一个 PWM 对象,并设置 PWM 对象的频率和占空比。 5. 最后使用 PWM 对象的 duty() 方法来改变占空比,从而控制 LED 显示的亮度。 下面是一个简单的 MicroPython 代码示例,用于控制 LED 呼吸灯效果: ```python from machine import Pin, PWM import time led_pin = Pin(2, Pin.OUT) # 连接到GPIO2 pwm = PWM(led_pin, freq=5000) # 初始化PWM对象,设置频率为5000Hz while True: for duty_cycle in range(0, 1024, 8): # 从0到1024,每次增加8 pwm.duty(duty_cycle) # 设置占空比 time.sleep_ms(5) # 暂停5ms for duty_cycle in range(1023, -1, -8): # 从1023到0,每次减少8 pwm.duty(duty_cycle) # 设置占空比 time.sleep_ms(5) # 暂停5ms ``` 上面的代码中,使用了一个无限循环来让 LED 一直显示呼吸灯效果。在每个循环中,通过循环改变占空比,从而让 LED 呈现出呼吸灯效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值