【4Day创客实践入门教程】Day3 实战演练——桌面迷你番茄钟

Day3 实战演练——桌面迷你番茄钟

目录

  • Day3 实战演练——桌面迷你番茄钟
    • 1. 选择、准备元件、收集资料
    • 2. 硬件搭建
    • 3.编写代码

  • Day0 创想启程——课程与项目预览
  • Day1 工具箱构建——开发环境的构建
  • Day2 探秘微控制器——单片机与MicroPython初步
  • Day3 实战演练——桌面迷你番茄钟
  • Day4 迈向高手之路——进一步学习!

今天,我们开始制作这个小项目——桌面迷你番茄钟

项目外观功能介绍图

1. 选择、准备元件、收集资料

选择元件,要根据我们的功能和实现的目的来选择,在必要的时候,还要考虑开发的难度与元件的价格。

本项目是桌面番茄钟,那功能就需要一个屏幕与一个主控板,还需要一个电池去供电。所以,我们需要先列出我们项目需要和不需要的功能,依次来选择元器件。

功能必要性
电池需要排除原版树莓派PICO、添加锂电池、RP2040-PLUS开发板
无线不需要排除ESP32
屏幕显示需要Pico-OLED-1.3 1.3英寸OLED扩展板
按键需要Pico-OLED-1.3 1.3英寸OLED扩展板

根据此表,我们选择了以下元器件:

  • 微雪电子 RP2040-PLUS 开发板
  • 微雪电子 Pico-OLED-1.3 1.3英寸OLED扩展板
  • 3.7V 800mAh 902040电池

由于我们后续需要使用到微雪电子的元器件,所以我们也需要收集相关资料

  • 微雪电子 RP2040-PLUS 开发板
    • 官方文档 https://www.waveshare.net/wiki/RP2040-Plus
    • MicroPython RP2 快速参考 http://micropython.com.cn/en/latet/rp2/quickref.html
  • 微雪电子 Pico-OLED-1.3 1.3英寸OLED扩展板
    • 官方文档 https://www.waveshare.net/wiki/Pico-OLED-1.3
    • MicroPython SH1107相关驱动程序
  • MicroPython
    • 官方文档 http://micropython.com.cn/en/latet/index.html

2. 硬件搭建

接下来,我们可以参考文档的图片与文字资料完成硬件搭建。

Pico-OLED-1.3-details-3

3.编写代码

我个人首先会测试元器件是否正常,然后编写基本的驱动代码。

在正式开始编写代码之前,我们通常需要借助工具或者在大脑中建立一个基本的流程图,通过一个流程图,可以帮助我们更好地编写代码。

流程图

开始编写代码,参照流程图和伪代码,调试,完成功能。下面是完整代码:

from machine import Pin, SPI
import sh1107
import gc
import sys
import time
import framebuf
import arrayspi1 = SPI(1, baudrate=1_000_000, sck=Pin(10), mosi=Pin(11), miso=None)
display = sh1107.SH1107_SPI(128, 64, spi1, Pin(8), Pin(12), Pin(9), rotate=0)
display.sleep(False)key0 = Pin(15,Pin.IN,Pin.PULL_UP) 
key1 = Pin(17,Pin.IN,Pin.PULL_UP)
starttime=time.time()
tomato=0
tomatimes=0
tomac=300
while True:display.fill(0)display.fill_rect(5, 5, 60, 54, 15)display.text(f"{(round(tomatimes/60))}",12, 29, 0)display.text(f"min",12, 41, 0)if key0.value() == 0:while key0.value() == 0:passif tomac!=300:tomatimes = tomatimes+(1500-tomato)starttime=time.time()if tomac==1500:tomac=300else: tomac=1500tomato=tomacelse:if tomato >= 0:tomato=tomac-(time.time()-starttime)else:tomato=tomac-(time.time()-starttime)display.fill(15)display.text(f"OVER",40, 20, 0)display.text(f"{round((-tomato),1)}",40, 32, 0)display.show()tomtext = f"{round(tomato/60,1)}"tomx = round((66-len(tomtext)*8)/2)+66display.text(tomtext,tomx, 20, 255)display.text("min", 86, 32, 255)display.show()display.poweroff()

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

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

相关文章

Oracle Primavera P6自动进行进度计算

前言 在P6 Professional 有一个自动计划计算的选项,很多人不了解该设置如何使用,以及什么时候该启动这项配置。 详情 P6 Professional 默认为非自动进度计算。启用自动选项后,可以快速查看调度更改的效果。 ​ ​ 如图所示,当你…

DeepSeek-R1 论文解读 —— 强化学习大语言模型新时代来临?

近年来,人工智能(AI)领域发展迅猛,大语言模型(LLMs)为通用人工智能(AGI)的发展开辟了道路。OpenAI 的 o1 模型表现非凡,它引入的创新性推理时缩放技术显著提升了推理能力…

舵机型号与识别

舵机型号繁多,不同品牌和制造商有不同的命名规则。常见的舵机品牌包括 Futaba、Hitec、Tower Pro、Savox、JX Servo 等。以下是舵机型号的常见识别方法以及一些典型的型号示例: 一、舵机型号的识别方法 型号命名规则: 舵机型号通常由字母和数…

6.二分算法

二分 二分算法,也称为二分查找或折半查找,是一种在有序数组中查找特定元素的高效算法。以下是 C 中二分算法的相关内容: 算法原理 二分算法的基本思想是将有序数组分成两部分,然后将目标值与中间元素进行比较。如果目标值等于中…

大模型GUI系列论文阅读 DAY4续:《Large Language Model Agent for Fake News Detection》

摘要 在当前的数字时代,在线平台上虚假信息的迅速传播对社会福祉、公众信任和民主进程构成了重大挑战,并影响着关键决策和公众舆论。为应对这些挑战,自动化假新闻检测机制的需求日益增长。 预训练的大型语言模型(LLMs&#xff0…

LevelDB 源码阅读:写入键值的工程实现和优化细节

读、写键值是 KV 数据库中最重要的两个操作,LevelDB 中提供了一个 Put 接口,用于写入键值对。使用方法很简单: leveldb::Status status leveldb::DB::Open(options, "./db", &db); status db->Put(leveldb::WriteOptions…

【Proteus仿真】【51单片机】多功能计算器系统设计

目录 一、主要功能 二、使用步骤 三、硬件资源 四、软件设计 五、实验现象 联系作者 一、主要功能 1、LCD1602液晶显示 2、矩阵按键​ 3、加减乘除,开方运算 4、带符号运算 5、最大 999*999 二、使用步骤 基于51单片机多功能计算器 包含:程序&…

利用Manim库结合`matplotlib`、`numpy`和`scipy`来制作工作流程动画

以下是一个利用Manim库结合matplotlib、numpy和scipy来制作工作流程动画,展示流场速度分布计算模型,以及三流喷嘴的速度场和主要参数分布的可视化图形与动画的示例代码。这个示例将模拟一个简化的三流喷嘴速度场,通过计算速度分布并将其可视化…

origin调整图像的坐标轴,修改坐标轴起始点,增量

接上一篇帖子,如果再修改数据之后或者当前的数据之间差距较小,怎么通过调整坐标轴来使数据之间的差距更明显,举个例子, 像下面这个图的entropy指标,都是介于6到9之间,如果y轴坐标都从0开始,使用…

Redis_Redission的入门案例、多主案例搭建、分布式锁进行加锁、解锁底层源码解析

目录 ①. Redis为什么选择单线程? ②. 既然单线程这么好,为什么逐渐又加入了多线程特性? ③. redis6的多线程和IO多路复用入门篇 ④. Redis6.0默认是否开启了多线程? ⑤. REDIS多线程引入总结 ①. Redis为什么选择单线程? ①…

集合的奇妙世界:Python集合的经典、避坑与实战

集合的奇妙世界:Python集合的经典、避坑与实战 内容简介 本系列文章是为 Python3 学习者精心设计的一套全面、实用的学习指南,旨在帮助读者从基础入门到项目实战,全面提升编程能力。文章结构由 5 个版块组成,内容层层递进&#x…

2025年1月个人工作生活总结

本文为 2025年1月工作生活总结。 研发编码 使用sqlite3命令行查询表数据 可以直接使用sqlite3查询数据表,不需进入命令行模式。示例如下: sqlite3 database_name.db "SELECT * FROM table_name;"linux shell使用read超时一例 先前有个编译…

ARM嵌入式学习--第十一天(中断处理 , ADC)

--中断的概念 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回被暂停的程序继续运行 --CPU处理事情的方式 -轮询方式 不断查询是否有事情需要处理&#xff0c…

android Camera 的进化

引言 Android 的camera 发展经历了3个阶段 : camera1 -》camera2 -》cameraX。 正文 Camera1 Camera1 的开发中,打开相机,设置参数的过程是同步的,就跟用户实际使用camera的操作步骤一样。但是如果有耗时情况发生时,会…

JavaScript原型链与继承:优化与扩展的深度探索

在 JavaScript 的世界里,万物皆对象,而每个对象都有一个与之关联的原型对象,这就构成了原型链的基础。原型链,简单来说,是一个由对象的原型相互连接形成的链式结构 。每个对象都有一个内部属性[[Prototype]]&#xff0…

vue2项目(一)

项目介绍 电商前台项目 技术架构:vuewebpackvuexvue-routeraxiosless.. 封装通用组件登录注册token购物车支付项目性能优化 一、项目初始化 使用vue create projrct_vue2在命令行窗口创建项目 1.1、脚手架目录介绍 ├── node_modules:放置项目的依赖 ├──…

分层多维度应急管理系统的设计

一、系统总体架构设计 1. 六层体系架构 #mermaid-svg-QOXtM1MnbrwUopPb {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QOXtM1MnbrwUopPb .error-icon{fill:#552222;}#mermaid-svg-QOXtM1MnbrwUopPb .error-text{f…

350.两个数组的交集 ②

目录 题目过程解法 题目 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑…

sublime_text的快捷键

sublime_text的快捷键 向下复制, 复制光标所在整行并插入到下一行:通过 CtrlShiftD 实现快速复制当前行的功能。 可选多行, 不选则复制当前行 ctrl Shift D 删除当前行:通过 CtrlShiftK 实现快速删除当前行的功能。 可选多行, 不选则删当前行 ctrl S…

[ACTF2020 新生赛]BackupFile1

题目 翻译&#xff0c;尝试找出源文件&#xff01; 扫目录使用参数-e * python dirsearch.py -u http://0c3b21c0-d360-4baa-8b97-aa244f4c4825.node5.buuoj.cn:81/ -e * 最终扫描到一个文件名为&#xff1a;/index.php.bak的文件&#xff0c;把备份文件下载下来 源码 <?…