一步步入门机器人【Arduino基础】

文章目录


碎碎念

博主C语言基础内容学习完后,平时的学业任务也比较重,所以没有坚持写博客,最近这段时间我会总结我这段时间学到的知识与成果与大家分享。因为我也是初学者,对于所学知识的总结难免会有漏洞,欢迎大家批评指正。


一、什么是Arduino

Arduino 是一个能够用来 感应 和 控制 现实物理世界的一套工具。
Arduino 是一个基于单片机并且 开放 源码的硬件平台,和一套为 Arduino 板编写程序的开发
环境( 免费 )组成。
Arduino 简化 了单片机工作的流程,同其它系
统相比, Arduino 在很多地方更具有优越性,
特别适合老师,学生和一些业余爱好者们使用

篇外:Arduino名称由来
意大利北部一个如诗如画的小镇「Ivrea」,横跨过蓝绿色Dora Baltea河,它最著名的事迹是关于一位受压迫的国王。公元1002年,国王Arduin成为国家的统治者,不幸的是两年后即被德国亨利二世国王给废掉了。今日,在这位无法成为新国王的出生地,
cobblestone街上有家叫「di Re Arduino」的酒吧纪念了这位国王。Massimo Banzi经常光临这家酒吧,而他将这个电子产品计划命名为Arduino以纪念这个地方。

二、单片机&嵌入式系统&微控制器

名词解释

代码如下(示例):

单片机:直接理解为微控制器
微控制器(MCU):基本计算机(为什么是计算机?因为 MCU 中使用的基本组件:CPU、系统时钟、内存,所有这些都是计算机使用的。什么样的计算机?完成单一功能的计算机)
嵌入式系统:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统(说人话:计算机技术“嵌入”到各种设备中,让这些设备变得更智能、更强大)

How dose it work?

这里只简单介绍单片机的原理而不细究,因为应用时我们主要关注单片机上的程序怎么写。

在这里插入图片描述


在这里插入图片描述

冯诺依曼结构的灵魂

回顾历史:早期的计算机程序是硬件化的,程序和数据是俩个截然不同的概念,数据放在存储器中,而程序作为控制器的一部分
冯诺依曼的横空出世,将最初的硬件化程序变为可编程、可存储编码,放在存储器中,随意使用。将程序编码为数据,然后与数据一同存放在存储器中,无论什么程序,最终都是会转换为数据的形式存储在存储器中,要执行相应的程序只需要从存储器中依次取出指令、执行(譬如exe文件就是二进制编码的文件,可以直接运行)这种设计思想导致了硬件和软件的分离,即硬件设计和程序设计可以分开执行

How to use it?

硬件
Arduino Uno:基础款,适合入门的同学学习使用
Arduino Mega-2560:提供丰富的输入输出端口
Arduino LilyPad:可穿戴的电路板,适合开发可穿戴创意设备Arduino Nano:微型电路板
软件
ArduinoIDE

二、认识硬件

在这里插入图片描述

三、数字和模拟

模拟(analog)信号:在自然界中,我们可以感知的,在时间和幅值上都是连续的物理量称为模拟信号。
数字(digital)信号:数字信号是指在取值上是离散的、不连续的信号,只有有限个特定的电压值,表现为瞬时跳变直方形

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

从模拟到数字

在电学中,用传感器将这样的物理量转变成为电信号,通常用连续变化的电压值或电流值表示。
采样:将时间上连续、幅度上也连续的模拟信号变换成时间上离散、但幅度上仍连续的已采样信号,采样完成模拟信号在时间上的离散化。
量化:用预先规定好了的有限个电平值来表示模拟抽样值,量化完成模拟信号在幅度上的离散化
编码:通常采用二进制编码,即用N 位二进制代码来表示量化值。

四、认识Arduino IDE

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

五、PWM波与呼吸灯

Pulse Width Manipulate——脉宽调制

可以通过改变高电压在整个周期内的比重(也叫占空比)产生近似于连续变化的有效值。
可以用于连续调节(亮度、转速等)

在这里插入图片描述

控制LED亮度

回顾之前讲到的模拟信号和数字信号
Q:如何用digital_write控制输出亮度(电压)?A:使用PWM波
Q:如何输出不同的亮度?
A:改变PWM的占空比

在这里插入图片描述

呼吸灯

在这里插入图片描述

Read more

webdriver_manager终极指南:彻底解决Selenium浏览器驱动管理难题

webdriver_manager终极指南:彻底解决Selenium浏览器驱动管理难题 【免费下载链接】webdriver_manager 项目地址: https://gitcode.com/gh_mirrors/we/webdriver_manager 在Selenium自动化测试实践中,浏览器驱动管理往往是开发者面临的首要技术障碍。据统计,超过60%的Selenium新手错误都源于驱动版本不匹配或配置不当。webdriver_manager作为专业的Python测试工具,通过智能化的驱动管理机制,让开发者彻底告别手动下载、版本匹配和路径配置的繁琐流程。 驱动管理痛点深度解析 传统Selenium测试环境配置存在三大核心痛点: 版本兼容性问题:浏览器频繁更新导致驱动版本不匹配,测试脚本频繁失效 环境配置复杂性:不同操作系统下驱动路径配置差异大,团队协作困难 维护成本高昂:手动管理多个浏览器驱动版本,耗费大量开发时间 核心功能架构解析 webdriver_manager采用模块化设计,通过四大核心组件实现智能驱动管理: 自动化版本检测机制 系统自动识别本地安装

vLLM-v0.17.1效果展示:vLLM在多轮对话状态跟踪(MultiWOZ)任务表现

vLLM-v0.17.1效果展示:vLLM在多轮对话状态跟踪(MultiWOZ)任务表现 1. vLLM框架简介 vLLM是一个专注于大语言模型(LLM)高效推理和服务的开源库,其核心目标是让开发者能够轻松部署和运行各种规模的LLM。这个项目最初由加州大学伯克利分校的天空计算实验室发起,现在已经发展成为一个活跃的社区项目,汇聚了来自学术界和工业界的众多贡献者。 1.1 核心功能特点 vLLM之所以能在LLM推理领域脱颖而出,主要得益于以下几个关键技术特性: * 高效内存管理:采用创新的PagedAttention技术,智能管理注意力机制中的键值对内存 * 请求处理优化:支持连续批处理传入请求,显著提高服务器吞吐量 * 执行加速:利用CUDA/HIP图技术实现模型快速执行 * 量化支持:全面支持GPTQ、AWQ等多种量化方案(INT4/INT8/FP8等) * 内核优化:与FlashAttention和FlashInfer深度集成,优化CUDA计算效率 1.2 使用灵活性 vLLM在设计上特别注重开发者的使用体验: * 模型兼容性:无缝对接HuggingFa

WSL2 下启动 Webots 地址一直不对:`10.255.255.254` 的原因与修复

WSL2 下启动 Webots 地址一直不对:`10.255.255.254` 的原因与修复

最近在 WSL2 + ROS2 Humble + Webots 环境中运行 webots_ros2_universal_robot 示例时,发现 webots-controller 启动后立刻退出。日志显示它自动使用了一个明显不对的地址: [ERROR] [webots_controller_UR5e-3]: process has died [pid 2087, exit code 1, cmd '/opt/ros/humble/share/webots_ros2_driver/scripts/webots-controller --robot-name=UR5e --protocol=tcp --ip-address=10.255.255.254 --port=1234 ...'

Springboot 4.0十字路口:虚拟线程时代,WebFlux与WebMVC的终极选择

Springboot 4.0十字路口:虚拟线程时代,WebFlux与WebMVC的终极选择

🧑 博主简介:ZEEKLOG博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可关注公众号 “ 心海云图 ” 微信小程序搜索“历代文学”)总架构师,16年工作经验,精通Java编程,高并发设计,分布式系统架构设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。 🤝商务合作:请搜索或扫码关注微信公众号 “ 心海云图 ” Springboot 4.0十字路口:虚拟线程时代,WebFlux与WebMVC的终极选择 当虚拟线程以革命性的姿态降临Java世界,一场关于并发编程范式的静默变革正在发生。Spring开发者站在了选择的十字路口。 2023年,Java 21将虚拟线程从预览特性转为正式功能,这一变化看似只是JVM内部的优化,实则撼动了整个