当前位置: 首页 > news >正文

嵌入式实训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)

相关文章:

嵌入式实训day6

1、 from machine import Pin from neopixel import NeoPixel import timeif __name__"__main__"#创建RBG灯带控制对象&#xff0c;包含5个像素(5个RGB LED)rgb_led NeoPixel(Pin(4,Pin.OUT)&#xff0c;5)#定义RGB颜色RED(255&#xff0c;0&#xff0c;0)GREEN(0,2…...

产品经理是青春饭吗?终于有了答案!

不少考生疑惑产品经理是青春饭吗&#xff1f;产品经理能干到多少岁&#xff1f;弄清楚这些问题&#xff0c;我们才会有长久的规划。产品经理是青春饭吗&#xff1f;产品经理能干到多少岁&#xff1f;一起来看看 一、产品经理是青春饭吗&#xff1f; 产品经理是否吃青春饭需要…...

FPGA - 数 - 加减乘除

一&#xff0c;数的表示 首先&#xff0c;将二进制做如下解释&#xff1a; 2的0次方1 2的1次方2 2的2次方4 2的3次方8 ..... 以此类推&#xff0c;那么任何整数&#xff0c;或者说任意一个自然数均可以采用这种方式来表示。 例如&#xff0c;序列10101001&#xff0c;根据上述…...

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

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

科研辅助工具

科研工具收集 1. 如何筛选出最合适的SCI论文投稿杂志:点击直达 2. 分享三种正确查找期刊全称、缩写的网站: 点击直达...

亿达中国武汉园区入选“武汉市科技金融工作站”及“武汉市线下首贷服务站”

近日&#xff0c;武汉市2024科技金融早春行活动在深交所湖北资本市场培育基地举行。会上&#xff0c;第四批武汉市科技金融工作站试点单位名单及第五批武汉地区金融系统线下首贷服务站名单正式公布&#xff0c;武汉软件新城成功入选上述两个名单。 为缓解科技型企业融资难题&a…...

Docker配置阿里云加速器(2续)

默认情况下镜像是从docker hub下载,由于docker hub服务器在国外,由于网络原因镜像下载速度较慢,一般会配置镜像加速进行下载 国内镜像加速器有阿里云、网易云、中科大等,本章配置阿里云镜像加速器,速度较快 镜像加速源 镜像加速器 镜像加速器地址 <...

我用chatgpt写了一款程序

众所周知&#xff0c;Chatgpt能够帮助人们写代码&#xff0c;前几天苏音试着完全用Chatgpt写一款Python程序 有一句话我很赞同&#xff0c;未来能代替人的不是AI&#xff0c;是会使用AI的人。 最终&#xff0c;写下来效果还不错&#xff0c;完全提升了我的办公效率。 开发前…...

Python实现逻辑回归与判别分析--西瓜数据集

数据 数据data内容如下&#xff1a; 读取数据&#xff1a; import numpy as np import pandas as pd data pd.read_excel(D:/files/data.xlsx) 将汉字转化为01变量&#xff1a; label [] for i in data[好瓜]:l np.where(i 是,1,0)label.append(int(l)) data[label] lab…...

课时154:项目发布_手工发布_手工发布

1.2.3 手工发布 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习 基础知识 简介 为了合理的演示生产环境的项目代码发布&#xff0c;同时又兼顾实际实验环境的资源&#xff0c;我们这里将 B主机和C主机 用一台VM主机来实现&#xff0c;A主机单…...

鸿蒙开发 一 (四)、ArkTS开发 --UI篇

相对布局 RelativeContainer 支持容器内部的子元素设置相对位置关系子元素支持指定兄弟元素作为锚点&#xff0c;也支持指定父容器作为锚点&#xff0c;基于锚点做相对位置布局 //alignRules 写法let AlignRus:Record<string,Record<string,string|VerticalAlign|Horiz…...

影音发烧友必入:高清先生M8 8K蓝光播放机使用体验8K播放器

影音发烧友必入&#xff1a;高清先生M8 8K蓝光播放机使用体验 高清先生在5.18成功举办新品8K蓝光播放机“M8”的发布会后&#xff0c;心心念念想尝鲜&#xff0c;于是果断下单了一台。 外形 收到货后&#xff0c;是牛皮纸包装&#xff0c;醒目的“高清先生”标识印在正面&…...

【34W字CISSP备考笔记】域1:安全与风险管理

1.1 理解、坚持和弘扬职业道德 1.1.1.(ISC)职业道德规范 1、行为得体、诚实、公正、负责、守法。 2、为委托人提供尽职、合格的服务。 3、促进和保护职业。 4、保护社会、公益、必需的公信和自信&#xff0c;保护基础设施。 1.1.2.组织道德规范 1、RFC 1087 &#xff0…...

Camtasia Studio 2024软件下载附加详细安装教程

amtasia Studio 2024是一款功能强大的屏幕录制和视频编辑软件&#xff0c;由TechSmith公司开发。这款软件不仅能够帮助用户轻松地记录电脑屏幕上的任何操作&#xff0c;还可以将录制的视频进行专业的编辑和制作&#xff0c;最终输出高质量的视频教程、演示文稿、培训课程等。 …...

人工智能(AI)与机器学习(ML):塑造未来的技术引擎

目录 前言 一、人工智能&#xff08;AI&#xff09;概述 二、机器学习&#xff08;ML&#xff09;的作用&#xff1a;深入解析与应用前景 1、机器学习的作用机制 2、机器学习在各个领域的应用 3、机器学习的挑战与前景 三、AI与ML的融合与应用&#xff1a;深度解析与前景…...

post为什么会发送两次请求详解

文章目录 导文跨域请求的预检复杂请求的定义服务器响应预检请求总结 导文 在Web开发中&#xff0c;开发者可能会遇到POST请求被发送了两次的情况&#xff0c;如下图&#xff1a; 尤其是在处理跨域请求时。这种现象可能让开发者感到困惑&#xff0c;但实际上它是浏览器安全机制…...

MySQl基础入门⑯【操作视图】完结

上一边文章内容 表准备 CREATE TABLE Students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100),email VARCHAR(255),major VARCHAR(100),score int,phone_number VARCHAR(20),entry_year INT,salary DECIMAL(10, 2) );数据准备 INSERT INTO Students (id, name, ema…...

Android Root全教程

1.安装指定镜像&#xff1a;https://blog.csdn.net/weixin_43846562/article/details/130028258 2.安装 magisk&#xff1a;https://blog.csdn.net/qq1337715208/article/details/115922514 3.打开 adb root&#xff1a;https://liwugang.github.io/2021/07/11/magisk_enable…...

对yoloV8进行标签过滤来实现行人检测

前言 上一章我们介绍的通过迁移学习&#xff0c;在新的行人数据集上使用已经学习到的特征和权重&#xff0c;从而更快地实现行人检测任务。模型就会调整其参数以适应新的数据集&#xff0c;以提高对行人的识别性能。接下来介绍一种更快更便捷的方法&#xff0c;依旧是基于yolo…...

论文阅读笔记:Towards Higher Ranks via Adversarial Weight Pruning

论文阅读笔记&#xff1a;Towards Higher Ranks via Adversarial Weight Pruning 1 背景2 创新点3 方法4 模块4.1 问题表述4.2 分析高稀疏度下的权重剪枝4.3 通过SVD进行低秩逼近4.4 保持秩的对抗优化4.5 渐进式剪枝框架 5 效果5.1 和SOTA方法对比5.2 消融实验5.3 开销分析 6 结…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案

在移动互联网营销竞争白热化的当下&#xff0c;推客小程序系统凭借其裂变传播、精准营销等特性&#xff0c;成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径&#xff0c;助力开发者打造具有市场竞争力的营销工具。​ 一、系统核心功能架构&…...

算法打卡第18天

从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…...