嵌入式实训day6

1、

from machine import Pin
from neopixel import NeoPixel
import timeif __name__=="__main__"#创建RBG灯带控制对象,包含5个像素(5个RGB LED)rgb_led = NeoPixel(Pin(4,Pin.OUT),5)#定义RGB颜色RED=(255,0,0)GREEN(0,255,0)BLUE =(0,0,255)YELLOW=(255,150,0)WHITE=(255,255,255)# 白色BLACK=(0,0,0)#黑色(不亮)COLORS =(RED,GREEN,BLUE,YELLOW,WHITE,BLACK)for color in COLORS:#逐一点亮每个RGB LEDfor i in range(5):rgb_led[i]=(color[0], color[1], color[2])rgb_led.write()time.sleep_ms(200)time.sleep_ms(300)

2、

from machine import Pin
import time
import tm1637
if __name__=="__main__":# 定义数码管控制对象display =tm1637.TM1637(clk=Pin(16),dio=Pin(17))# 显示小数display.numbers(13,14)# 13.14time.sleep(2)#显示十六进制display.hex(100)#0x64time.sleep(2)#亮度调节display.brightness(0)time.sleep(2)display.brightness(7)time.sleep(2)#显示温度值display.temperature(26)time.sleep(2)display.temperature(-10)#低温报警:Lotime.sleep(2)display.temperature(100)#高温报警:Hitime.sleep(2)#显示字符串display.show("ABCD")time.sleep(2)#字符串滚动显示display.scroll("18712345678",500)#倒计时10秒num = 10while num >=0:display.number(num)num -= 1time.sleep(1)

3、

import ds18x20
import onewire
from machine import Pin
from machine import Timer
import sys#创建单总线驱动对象
ow= onewire.OneWire(Pin(4))
#定义DS18B20控制对象
ds18b20=ds18x20.DS18X20(ow)
#扫描设备,获取64位序列码,返回结果保存列表中
roms =ds18b20.scan()
if not roms:print("没有扫描到DS18B20设备,请检查硬件连接!")sys.exit()
else:print("扫描到DS18B20设备,序列码是:",roms)#定时器回调函数#
def get_temp(timer0):ds18b20.convert_temp()for rom in roms:temp= ds18b20.read_temp(rom)print("Ds18B20的温度是:%.2f℃"% temp)if __name__=="__main__":timer0 =Timer(0)timer0.init(mode=Timer.PERIODIC, period=1000,callback=get_temp)while True:pass

4、

from machine import Pin
import network
import timeled1=Pin(15,Pin.OUT,value=1)#准备手机热点
ssid="yishen"
password="20020618"def wifi_connect():#创建WLAN对象,STA模式wlan=network.WLAN(network.STA_IF)#激活WIFI模块wlan.active(True)#记录当前的时间用于WIFI连接的超时判定start_time=time.time()if not wlan.isconnected():#准备建立连接print(wlan.scan())wlan.connect(ssid,password)#等待连接让LED闪烁while not wlan.isconnected():led1.value(not led1.value())time.sleep_ms(300)#判定超时if time.time()-start_time>30:print("WIFI连接超时")return Falseelse:#已经连接成功led1.value(0)print("网络配置信息",wlan.ifconfig())return Trueif __name__=="__main__":wifi_connect()

5、

"""
通过socket编程实现一个简易的HTTP服务器
使用手机可以连接到服务器帮控制LED开关
测试:在手机的浏览器输入开发板的IP地址
"""
from machine import Pin
import network
import time
import socket
import sys# 定义LED控制对象,作为连接WIFI指示灯
led1 = Pin(15, Pin.OUT, value=1)# 准备手机热点
ssid = "yishen"
password = "20020618"def wifi_connect():# 创建WLAN对象,STA模式(ESP32开发板连接手机热点-AP)wlan = network.WLAN(network.STA_IF)# 激活WIFI模块wlan.active(True)# 记录当前时间,用于WIFI连接的超时判定start_time = time.time()if not wlan.isconnected():# 准备建立连接# print(wlan.scan())print("开始连接WIFI...")wlan.connect(ssid, password)# 等待连接让LED1闪烁while not wlan.isconnected():led1.value(not led1.value())time.sleep_ms(300)# 超时判定if time.time() - start_time > 30:print("WIFI连接超时!")return Falseelse:# 已经连接成功(如果之前连接过WIFI,上电后会自动连接)led1.value(0)print("网络配置信息", wlan.ifconfig()) # 重点关注IP地址return True# 网页数据
def web_page():# 获取开关灯的状态if led1.value() == 0:led_state = " "else:led_state = "checked"html = \
"""
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>HTTP</title><meta name="viewport" content="width=device-width, initial-scale=1"><style>body {font-family: Arial;text-align: center;margin: 0px auto;padding-top: 30px;}.switch {position: relative;display: inline-block;width: 120px;height: 68px}.switch input {display: none}.slider {position: absolute;top: 0;left: 0;right: 0;bottom: 0;background-color: #ccc;border-radius: 34px}.slider:before {position: absolute;content: "";height: 52px;width: 52px;left: 8px;bottom: 8px;background-color: #fff;-webkit-transition: .4s;transition: .4s;border-radius: 68px}input:checked+.slider {background-color: #2196F3}input:checked+.slider:before {-webkit-transform: translateX(52px);-ms-transform: translateX(52px);transform: translateX(52px)}</style><script>function toggleCheckbox(element) {var xhr = new XMLHttpRequest();if (element.checked) {xhr.open("GET", "/?led1=on", true);}else {xhr.open("GET", "/?led1=off", true);}xhr.send();}</script>
</head><body><h1>ESP32 LED</h1><label class="switch"><input type="checkbox" onchange="toggleCheckbox(this)" %s><span class="slider"></span></label>
</body></html>
""" % (led_state)return html    if __name__ == "__main__":# 连接WiFiwhile True:try:if wifi_connect():breakexcept Exception as ex:print("WIFI连接异常:", ex)time.sleep_ms(1000)print("WIFI连接成功!")try:# 创建HTTP通信的套接字(本质就是TCP通信)http_socket = socket.socket()# 设置地址重用选项http_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)# 绑定地址http_socket.bind(("0.0.0.0", 80))# 设置监听http_socket.listen()print("创建HTTP服务器成功")except Exception as ex:print("创建HTTP服务器失败:", ex)sys.exit()# 服务器一直运行while True:try:# 等待客户端连接,返回两个数据,分别是和客户端通信的套接字、客户端地址client, addr = http_socket.accept()print("客户端%s建立了连接" % str(addr))# 接收客户端请求数据request = client.recv(1024)request = str(request)print("收到客户端请求=%s" % request)# GET /?led1=off HTTP/1.1......# GET /?led1=on HTTP/1.1......if request.find("/?led1=on") == 6:led1.value(1)elif request.find("/?led1=off") == 6:led1.value(0)# 发送响应:给客户端返回数据client.send("HTTP/1.1 200 OK\n")  # 状态行client.send("Content-Type: text/html\n")  # 响应头client.send("Connection: close\n\n") # 响应头response = web_page() # 响应消息体client.write(response)  # 发送响应消息client.close() # 关闭本次通信except Exception as ex:print("HTTP通信异常:", ex)

6、

from machine import Pin
import network
import time
import socket
import onewire
import ds18x20#创建单总线驱动对象
ow= onewire.OneWire(Pin(4))
#定义DS18B20控制对象
ds18b20=ds18x20.DS18X20(ow)
#扫描设备,获取64位序列码,返回结果保存列表中# 初始化LED对象
led1 = Pin(15, Pin.OUT, value=1)roms =ds18b20.scan()#定时器回调函数#
def get_temp(timer0):ds18b20.convert_temp()for rom in roms:temp= ds18b20.read_temp(rom)print("Ds18B20的温度是:%.2f℃"% temp)# 准备手机热点
ssid = "yishen"
password = "20020618"def wifi_connect(ssid, password):wlan = network.WLAN(network.STA_IF)wlan.active(True)start_time = time.time()if not wlan.isconnected():print("连接到WiFi...")wlan.connect(ssid, password)while not wlan.isconnected():passprint("网络配置信息:", wlan.ifconfig())return wlan# 准备网页数据
def web_page(temp):html = """
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>DS18B20</title><style>html {font-family: Arial;display: inline-block;margin: 0px auto;text-align: center;}h2 {font-size: 3.0rem;}p {font-size: 3.0rem;}.units {font-size: 1.2rem;}.ds-labels {font-size: 1.5rem;vertical-align: middle;padding-bottom: 15px;}</style>
</head>
<body><h2>ESP32</h2><p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i><span class="ds-labels">Temperature</span><span id="temperature">""" + "%0.1f" % temp + """</span><sup class="units">&deg;C</sup></p><p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i><span class="ds-labels">Temperature</span><span id="temperature">""" + str(round(temp * (9 / 5) + 32.0, 1)) + """</span><sup class="units">&deg;F</sup></p>
</body>
</html>
"""return htmlif __name__ == '__main__':# 初始化WiFi连接wlan = wifi_connect(ssid, password)try:# 创建TCP套接字并绑定地址s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)s.bind(('0.0.0.0', 80))s.listen(5)print('HTTP服务器已启动.')while True:conn, addr = s.accept()print('客户端地址:', addr)request_data = conn.recv(1024)request_data = str(request_data)print('收到请求:', request_data)# 获取DS18B20传感器数据get_temp(None)  # 此处传入None,因为定时器回调函数不需要参数# 读取最新得到的温度数据temp = ds18b20.read_temp(roms[0])  # 假定只有一个DS18B20设备# 准备并发送网页响应response = web_page(temp)conn.send(b'HTTP/1.1 200 OK\n')conn.send(b'Content-Type: text/html\n')conn.send(b'Connection: close\n\n')conn.sendall(response)conn.close()except Exception as ex:print("HTTP服务器异常:", ex)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/29550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件性能测试之负载测试、压力测试详情介绍

负载测试和压力测试是软件性能测试中的两个重要概念&#xff0c;它们在保证软件质量和性能方面起到至关重要的作用&#xff0c;本文将从多个角度详细介绍这两种测试类型。 一、软件负载测试   负载测试是在特定条件下对软件系统进行长时间运行和大数据量处理的测试&#xff…

绝地求生PUBG更新后掉帧更新后游戏里面不显示UI的解决办法

绝地求生大家一定不陌生吧&#xff0c;这款游戏在当年可是火遍大江南北的&#xff0c;这款游戏集生存、射击、竞技与一体&#xff0c;给我们带来了很好的游戏体验。最近游戏迎来了30.1版本的更新&#xff0c;游戏内更新了不少的内容&#xff0c;而且游戏与女团进行联名&#xf…

AI大模型落地应用场景:LLM训练性能基准测试

随着 ChatGPT 的现象级走红&#xff0c;引领了AI大模型时代的变革&#xff0c;从而导致 AI 算力日益紧缺。与此同时&#xff0c;中美贸易战以及美国对华进行AI芯片相关的制裁导致 AI 算力的国产化适配势在必行。之前也分享过一些国产 AI 芯片、使用国产 AI 框架 Mindformers 基…

同三维T80006EH单路高清HDMI编码器

同三维T80006EH单路高清HDMI编码器 1路HDMI输入&#xff0c;1路3.5音频输入和输出&#xff0c;支持高清1080P60&#xff0c;支持SD卡录制 支持可解1路网络音频流输出&#xff0c;双向互动 一、产品简介&#xff1a; T80006EH高清编码器&#xff08;采集盒&#xff09;是一款…

FreeRTOS移植:STM32L476 nucleo-L476RG 开发板《03》

系列文章 FreeRTOS移植&#xff1a;STM32L476 nucleo-L476RG 开发板《01》 FreeRTOS移植&#xff1a;STM32L476 nucleo-L476RG 开发板《02》 说明 在上篇 FreeRTOS移植&#xff1a;STM32L476 nucleo-L476RG 开发板《02》 开始移植适配 FreeRTOS&#xff0c;FreeRTOS 移植适配…

测试开发面经分享,面试七天速成 DAY 1

1. get、post、put、delete的区别 a. get请求&#xff1a; i. 用于从服务器获取资源。请求参数附加在URL的查询字符串中。 ii. 对服务器的请求是幂等的&#xff0c;即多次相同的GET请求应该返回相同的结果。 iii. 可以被缓存&#xff0c;可以被收藏为书签。 iv. 对于敏感数据不…

C++ | Leetcode C++题解之第149题直线上最多的点数

题目&#xff1a; 题解&#xff1a; class Solution { public:int gcd(int a, int b) {return b ? gcd(b, a % b) : a;}int maxPoints(vector<vector<int>>& points) {int n points.size();if (n < 2) {return n;}int ret 0;for (int i 0; i < n; i…

springboot、springcloud、springcloudalibaba版本组件之间对应关系

参考 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E#%E6%AF%95%E4%B8%9A%E7%89%88%E6%9C%AC%E4%BE%9D%E8%B5%96%E5%85%B3%E7%B3%BB%E6%8E%A8%E8%8D%90%E4%BD%BF%E7%94%A8 毕业版本依赖关系(推荐使用) 由于 Spring Boot 3.0&…

UART基本定义、三种编程方式、freertos内怎么用、怎么封装

文章目录 串口基本概念串口的三种编程方式uart编程查询方式不常用、其他两个方式用的多中断方式&#xff1a;代码原理 DMA方式&#xff1a;配置DMA原理代码 效率最高的UART编程方式&#xff1a;是什么&#xff1f;操作 在freertos里面调用uart应该怎么做&#xff1f;代码 面向对…

uniapp canvas生成海报

效果 封装组件&#xff0c;父组件 ref 调用 downImgUrl()函数&#xff0c;其他根据自己需求改 <template><view><view class"bgpart"><canvas class"canvas-wrap" canvas-id"canvasID" type"2d"></canvas…

jsp运行提示_jsp.java某行存在错误问题的解决

jsp运行提示XXX_jsp.java某行存在错误问题的解决 在编译运行jsp文件时&#xff0c;出现类似如下提示&#xff1a; 49行发生错误&#xff0c;要注意&#xff1a; 这里所指的49行并非jsp文件的第49行&#xff0c;而是编译后的jsp.java文件的第49行。 因此&#xff1a;解决问题…

saas考试系统和私有化考试系统的区别

SaaS考试系统和私有化考试系统&#xff0c;作为现代信息化教育的重要工具&#xff0c;各有其独特的优势和特点。本文将从多个维度对这两种系统进行深入剖析&#xff0c;以揭示它们之间的核心差异。 首先&#xff0c;从部署方式来看&#xff0c;SaaS考试系统是基于云服务的在线考…

STM32--IAP程序升级实验

1. STM32程序升级方法 1.1 ST-link / J-link下载 将编译生成的hex文件使用ST-Link/J-Link工具直接下载进 Flash 即可。Keil中点击下载也能一键下载。下载后的代码会存放在Flash的起始地址0x0800 0000处。 简单补充一句&#xff0c;bin文件和hex文件的区别&#xff1a; bin文…

论坛产品选型,需要关注哪些点?

论坛社区是一个经久不衰的行业&#xff0c;比如我们常见的宠物社区&#xff0c;校园社区&#xff0c;游戏社区、企业内部社区&#xff0c;品牌社区&#xff0c;本地同城、私域社区项目、付费社群、问答社区等等&#xff0c;可以说是覆盖了各行各业&#xff0c;那么如果我们要搭…

Python实现管线建模 - 3.同心变径管

往期回顾 Python实现管线建模 || 1.圆直管、方管https://blog.csdn.net/Xxy9426/article/details/138836778?spm1001.2014.3001.5501 对依赖库的补充 随着后续内容的深入&#xff0c;我发现单纯靠trimesh库已经无法完成后续的建模&#xff08;涉及到多个几何体拼接或者是创建…

全域外卖系统源码在哪搭建?哪家公司的系统源码最值得推荐

随着全域外卖的兴起&#xff0c;全域外卖系统源码搭建逐渐在众多全域外卖赛道的入局方式中脱颖而出。但是&#xff0c;就目前多个创业者社群就这一话题的讨论程度来看&#xff0c;绝大多数创业者对于全域外卖系统源码搭建模式的了解都仅仅停留在“是什么”层面&#xff0c;而对…

Conmi的正确答案——Vue默认加载方式设置为Yarn后怎么修改

Vue版本&#xff1a;3 1和2主要是搜索文件所在位置&#xff0c;Windows的这个文件一般在“C:\User{当前用户}”下&#xff0c;linux的非root情况下一般在“/home/{当前用户}”下。 1、打开“Everything”&#xff1b; 2、搜索“vuerc”&#xff1b; 3、打开“.vuerc”&#xf…

Boom3D软件下载-Boom3D音效增强工具下载附加详细安装步骤

Boom3D音效增强工具是一款便捷的为用户们进行音频处理和编辑的软件&#xff0c;支持用户们轻松的进行音频的使用&#xff0c;支持超多的音频格式让你可以轻松的进行使用&#xff0c;Boom3D音效增强工具拥有多种音频特效的功能&#xff0c;让你可以在Boom3D音效增强工具轻松的进…

Linux时间子系统5:timekeeper、timecountercyclecounter

1. 前言 前面我们介绍了用户态获取时间的接口clock_gettime&#xff0c;时钟的种类posix_clocks以及时钟源clocksource。那么我们思考这样一个问题&#xff0c;无论clock_gettime或者posix_clock定义的时间都是相对于某个起始点的时间&#xff0c;即相对于Linux Epoch的秒数&am…

pytorch安装----CPU版本

在安装之前&#xff0c;需要先配置GPU环境&#xff08;安装CUDA和CudaNN) 命令行输入nvidia-smi&#xff0c;查看驱动信息 安装相应的CUDA 和CUDANN 验证&#xff1a;输入nvcc --version 或者nvcc -V 进行检查 在anaconda里创建环境 conda create -n py39gpu python3.9激活环…