Python使用加载machine库

先升级pip install --upgrade pip

machine

pip install machine

基本思路如下:

1、先找到python文件夹,也就是安装python的文件夹,或者pycharm的文件夹。

2、在文件夹下面找到Scripts文件夹,一般库都是安装在这里面的,你需要找到从根目录开始的完整路径。

3、我安装的是D盘,所以第一步我是在cmd里面输入d:切换到d盘,在依次使用cd+空格+目录找到Scripts目录,待cmd上显示D:\pycharm\venv\Scripts>的字样后就可以开始安装了。

4、pip install + 库名 (这个出错较少,不是国内源,下载安装会比较慢,但是问题不大)

5、pip install + 库名 + -i + https://pypi.douban.com/simple 是豆瓣的国内源,安装会比较快。

6、以下是国内常用的源,可供使用。

"阿里云: https://mirrors.aliyun.com/pypi/simple/

中国科技大学: https://pypi.mirrors.ustc.edu.cn/simple/

豆瓣(douban): http://pypi.douban.com/simple/

清华大学: https://pypi.tuna.tsinghua.edu.cn/simple/

中国科学技术大学: http://pypi.mirrors.ustc.edu.cn/simple/"

#wificonnect v1.0 by tdccj
from machine import Pin #加载运行库
import network
import time
wifi = open('wifi.txt','r') #读取储存的账号密码
名 = wifi.readline()
名 = 名.strip('\n')
密码 = wifi.readline()
print(名)
print(密码)
wlan = network.WLAN(network.STA_IF) #设置为终端模式
wifi指示灯=Pin(2,Pin.OUT)#启动PIN2为wifi指示灯
wlan.active(True)#启用无线网路
开始时间 = time.time()
wifi指示灯.value(0)
print ("wifi连接中")
wlan.connect(名,密码) #连接wifi
wifi.close
time.sleep(0.2)
while not wlan.isconnected():
    print ('等待连接')
    wifi指示灯.value(1)
    time.sleep(1)
    wifi指示灯.value(0)
    time.sleep(1)
    if time.time()-开始时间>10: #如果等待超过10秒
        print('超时未响应')
        for num in range(2):
             wifi指示灯.value(0)
             time.sleep(2)
             wifi指示灯.value(1)
             time.sleep(1)
        print('连接失败,请重新输入wifi名') #重新输入
        名 = input()
        print('请重新输入密码')
        密码 = input()
        wlan.connect(名,密码) #重新连接
        开始时间 = time.time()
if wlan.isconnected():
    for num in range(3):
        wifi指示灯.value(0)
        time.sleep(0.2)
        wifi指示灯.value(1)
        time.sleep(0.2)
    wifi = open('wifi.txt','w') #写入
    wifi.write(名)
    wifi.write('\n')
    wifi.write(密码)
    wifi.close
    wifi = open('wifi.txt','r') #校对
    账号 = wifi.readline()
    账号 = 账号.strip('\n')
    print (账号)
    密码 = wifi.readline()
    print (密码)
    wifi.close
    print ('wifi连接成功') #反馈
    print ('wifi信息:=%s'%str(wlan.ifconfig()))

8266与硬件相关的指令都在machine库中,并根据功能分成不同的类(class),例如,与脚有关的命令在machine库的Pin类中。

from machine import Pin(from库中只导入脚类)

import machine(导入这个库的所有类)

应用一:读取微动开关控制LED

from machine import Pin    #导入库
import time                #导入控制时间库

toggle=1
led=Pin(15,Pin.OUT)
sw=Pin(0,Pin.IN)

while True:
    if sw.value()==0:
        toggle=not toggle
        led.value(toggle)
        
运行说明:微动开关接GND和GPIO0脚,LED灯接GPIO15脚;8266循环读取0脚状态,当开关导通0脚低电平;即val的值为0;接15脚的led的值也为0,关灯。

应用二:按一下亮灯,再按一下关灯


from machine import Pin    #导入库
import time                #导入控制时间库

toggle=1
led=Pin(15,Pin.OUT)
sw=Pin(0,Pin.IN)

while True:
    if sw.value()==0:
        toggle=not toggle
        led.value(toggle)
        

本程序的缺点,按开关时,不是按一下就准确在反转,存在不稳定,主要原因是在while的作用下循环不断地进行,即不断地反转,而造成LED随机亮灭的结果。

(2)优化方案一:在按下开关时(读取开关脚的状态),程序什么也不做,这样就防止进入循环。程序见下:

from machine import Pin    #导入库
import time                #导入控制时间库

toggle=1
led=Pin(15,Pin.OUT)
sw=Pin(0,Pin.IN)

while True:
    if sw.value()==0:
        toggle=not toggle  #将toggler的值进行not(反相

)
        led.value(toggle)
        while sw.value()==0:   #while(当)开关按下时
            pass               # 什么也不做,暂停 

(3)优化方案二:在按下开关时(读取开关脚的状态),对LED灯现状态进行反转,同时程序什么也不做,直至放开开关后再继续循环。对比优化方案一程序少了两行命令。程序见下:

from machine import Pin    #导入库
import time                #导入控制时间库

led=Pin(15,Pin.OUT)
sw=Pin(0,Pin.IN)

while True:
    if sw.value()==0:               #如果按下开关
        led.value(not led.value())  #对LED状态进行反转
        while sw.value()==0:   #while(当)开关按下时
            pass               # 什么也不做,暂停           

(4)优化进阶:消除开关切换时振动造成的开关铜片弹跳现象。方法是进行2-30毫秒的延时。

from machine import Pin    #导入库
import time                #导入控制时间库

led=Pin(15,Pin.OUT)
sw=Pin(0,Pin.IN)

while True:
    if sw.value()==0:               #如果按下开关
        time.sleep(0.1)             #延时0.1秒,或写成time.sleep_ms(100)
        led.value(not led.value())  #对LED状态进行反转
        while sw.value()==0:   #while(当)开关按下时
            pass               # 什么也不做,暂停

(5)增加一个LED2灯与LED灯成反相

from machine import Pin    #导入库
import time                #导入控制时间库
led2=Pin(9,Pin.OUT)
led=Pin(15,Pin.OUT)
sw=Pin(0,Pin.IN)

while True:
    if sw.value()==0:               #如果按下开关
        time.sleep(0.1)             #延时0.1秒
        led.value(not led.value())  #对LED状态进行反转
        led2.value(not led.value())
        while sw.value()==0:   #while(当)开关按下时
            pass               # 什么也不做,暂停

(六)增加一个副程序(MINI)。主程序main.py ;副程序 MINI.py

主程序

#main.py
from machine import Pin    #导入库
import time                #导入控制时间库
import MINI                #导入副程序MINI
led2=Pin(9,Pin.OUT)
led=Pin(15,Pin.OUT)
sw=Pin(0,Pin.IN)

while True:
    if sw.value()==0:               #如果按下开关
        MINI.hello()                #运行MINI中的自定义函数hello
        time.sleep(0.1)             #延时0.1秒
        led.value(not led.value())  #对LED状态进行反转
        led2.value(not led.value())
        while sw.value()==0:   #while(当)开关按下时
            pass               # 什么也不做,暂停 

副程序

#MINI.py
def hello():
    print("hello")

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值