当前位置: 首页 > 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 结…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...