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

Ardunio学习

程序书写

Ardunio程序安装

在 Arduino的官方网站上可以下载这款官方设计的软件及源码、教程和文档。Arduino IDE的官方下载地址 为:http://arduino.cc/en/Main/Software。登录官网,下载软件并安装。

https://www.arduino.cc/。

安装成功后,页面如下所示:

根据已有零件,请deepseek写代码。

Servo舵机控制库是Arduino官方提供的一个库,用于简化舵机的控制。它封装了舵机控制的底层逻辑,使得用户可以通过简单的函数调用月来控制舵机的角度、速度和位置,而无需手动生成PWM信号。这个库支持多种舵机类型(如标准舵机连续旋转舵机),是开发舵机相关项目的理想工具。

  1. 角度控制

    • 控制舵机旋转到指定角度(通常为0°~180°)。
  2. 速度控制

    • 控制连续旋转舵机的转速和方向。
  3. 多舵机支持

    • 支持同时控制多个舵机(最多12个,具体数量取决于硬件)。
  4. 兼容性强

    • 支持标准舵机、数字舵机和连续旋转舵机。


 

安装包

在 Arduino IDE 中遇到 "Missing FQBN (Fully Qualified Board Name)" 错误时,通常是因为没有正确选择开发板型号或缺少对应的开发板支持包。

然后在Ardunio中安装Ardunio IDE 中安装Adafruit PWM servo Driver

然后统一连接电器件之后,可以将代码导入到开发板中。

Ardunio 程序语言

给Arduino编程需要用到IDE(集成开发环境),这是一款免费的软件。在这款软件上编程需要使用
Arduino的语言,这是一种解释型语言,写好的程序被称为sketch,编译通过后就可以下载到开发板中。

运行Ardunio

如果还是没有操作成功,是因为需要选择板子的型号。如下所示:

然后点击勾号,即可输出。

即可完成。

元件构成

单片机

单片机(Microcontroller Unit, MCU)是一种集成度很高的微型计算机系统,通常包含处理器核心(CPU)、存储器(RAM和ROM/Flash)、输入/输出接口(I/O)以及其他外围设备(如定时器、串行通信接口等)于单一芯片上。单片机广泛应用于嵌入式系统中,用于控制和执行特定任务。

主要组成部分:

  1. 中央处理器(CPU):负责执行指令和处理数据。
  2. 存储器
    • ROM/Flash:用于存储程序代码和常量数据。
    • RAM:用于存储运行时的临时数据。
  3. 输入/输出接口(I/O):用于与外部设备进行数据交换,如传感器、执行器等。
  4. 定时器/计数器:用于精确控制时间相关操作。
  5. 串行通信接口:如UART、SPI、I2C等,用于与其他设备进行通信。

应用领域:

  • 家用电器:如洗衣机、微波炉、空调等。
  • 工业控制:如PLC(可编程逻辑控制器)、机器人控制等。
  • 汽车电子:如发动机控制、车载娱乐系统等。
  • 消费电子:如智能手机、智能手表等。
  • 医疗设备:如血糖仪、心电图机等。

优点:

  • 集成度高:所有功能集成在一个芯片上,减少了外部元件的数量。
  • 成本低:由于集成度高,生产成本较低。
  • 功耗低:适合电池供电的设备。
  • 体积小:适合空间受限的应用场景。

常见品牌:

  • IntelMicrochipTexas InstrumentsSTMicroelectronicsNXP等。

单片机是现代电子设备中不可或缺的组成部分,其灵活性和高效性使其在众多领域中得到广泛应用。

舵机和电机

  • 舵机和电机虽然都是将电能转换为机械运动的装置,但它们在结构、功能和应用上有显著区别。以下是两者的详细对比:


    1. 核心功能

    特性舵机(Servo Motor)普通电机(Motor)
    主要用途精确控制角度或位置(如机器人关节、航模舵面)提供连续旋转动力(如风扇、车轮驱动)
    运动形式有限角度旋转(通常0°~180°)或闭环控制位置连续单向/双向旋转,或直线运动(如步进电机)
    控制信号PWM脉冲信号(占空比决定角度)电压/电流大小(调节转速)或方向信号

    2. 结构与工作原理

    特性舵机普通电机
    内部组成电机 + 减速齿轮 + 控制电路 + 位置反馈传感器通常只有电机(无反馈或需外接编码器)
    反馈系统闭环控制(通过电位器或编码器实时校正位置)开环控制(除非外接传感器)
    输出轴只能旋转有限角度(标准舵机)可无限旋转

    3. 控制方式

    特性舵机普通电机
    信号类型PWM脉冲(如1ms=0°,1.5ms=90°,2ms=180°)直流电压(如5V/12V)或PWM调速
    控制精度高(直接定位到特定角度)依赖外部传感器才能精确定位
    典型接口三线(电源、地、信号)两线(正负极)或四线(如步进电机)

    4. 典型应用场景

    舵机普通电机
    - 机器人关节(机械臂、人形机器人)- 电动车轮驱动
    - 航模舵面控制(方向舵、升降舵)- 家用电器(风扇、洗衣机)
    - 摄像头云台- 工业设备(传送带、泵)
    - 自动门锁- 无人机螺旋桨

    5. 关键区别总结

    • 反馈机制:舵机自带闭环控制,电机通常需额外传感器实现闭环。
    • 运动范围:舵机限位旋转,电机可连续旋转。
    • 控制目标:舵机重位置精度,电机重转速/扭矩。
    • 复杂度:舵机集成度高(含控制电路),电机通常需外接驱动板。

    如何选择?

    • 需要精确角度控制(如机械臂)→ 选舵机
    • 需要连续旋转动力(如车轮)→ 选直流/步进电机
    • 需要高速旋转+位置反馈→ 选伺服电机(高级舵机)编码器电机

    两者在项目中常配合使用,例如:用电机驱动小车底盘,用舵机控制摄像头方向。

外部电源

        用电池的电力驱动机器运行。

元件组装

电路连接图(描述性) ,以下是详细的文字描述和连接关系:

1.Arduino与PCA9685连接(12c通信和逻辑供电):

·Arduino5V 引脚->PCA9685vcC引I脚(为 PCA9685芯片提供逻辑电源) ·ArduinoGND引脚->PCA9685GND引|脚(逻辑地线) ·Arduino SDA 引脚(Uno上E通常是A4)->PCA9685SDA弓脚 ·ArduinoSCL引脚(UnoE通常是A5)->PCA9685SCL弓引脚

2.外部电源与PCA9685连接(舵机供电):

·5v-6v外部电源正极(+)->PCA9685V+螺丝端子(或标有V+/ServoPowerIn 的接 口) ·5V-6V外部电源负极(-)-> PCA9685GND螺丝端子(或标有GND/servoPower Ground的接口)

3.舵机与PcA9685连接:

·舵机信号线(通常是橙色、黄色或白色)->PCA9685的PWM输出引脚(你可以选择o 到15中的任意一个) ·舵机电源线(V+)(通常是红色)->PCA9685V+输出排针(对应通道O旁边标记V+的排排 针) o搜索

Arduino UNO 开发板

电脑——Arduino UNO开发板——集成电路板PCA9685

UNO Digital PWM 通常指的是基于 Arduino UNO 开发板的 数字PWM(脉宽调制) 功能。Arduino UNO 是一款广泛使用的开源微控制器开发板,其数字引脚中有一部分支持PWM输出,可用于控制舵机、LED亮度、电机速度等设备。

  1. 控制舵机,通过PWM信号控制舵机的旋转角度(典型频率为50Hz)。

  2. 调节LED亮度,通过改变占空比实现LED的亮度渐变。

  3. 控制电机速度,通过PWM信号调节直流电机的转速

Arduino UNO可以通过以下三种方式供电,能自动选择供电方式:
外部直流电源通过电源插座供电;
电池连接电源连接器的GND和VIN引脚;
USB接口直接供电,图1-4所示的稳压器可以把输入的7V~12V电压稳定到5V。
(韩广义、宋楠:《Arduino开发从零开始学  学电子的都玩这个》,北京:清华大学出版社2014年版)
在电源接口上方,一个右侧引出3个引脚,左侧一个比较大的引脚细看会发现上面有AMST1117的字样, 其实这个芯片是个三端5V稳压器,电源口的电源经过它稳压之后才给板子输入,其实电源适配器内已经有 稳压器,但是电池没有。可以理解为它是一个安检员,一切从电源口经过的电源都必须过它这一关,这 个“安检员”对不同的电源会进行区别对待。
首先,AMS1117的片上微调把基准电压调整到1.5%的误差以内,而且电流限制也得到了调整,以尽量减 少因稳压器和电源电路超载而造成的压力。再者根据输入电压的不同而输出不同的电压,可提供1.8V、 2.5V、2.85V、3.3V、5V稳定输出,电流最大可达800mA,内部的工作原理这里不必去探究,读者只需要知 道,当输入5V的时候输出为3.3V,输入9V的时候输出才为5V,所以用9V(9V~12V均可,但是过高的电源会 烧坏板子)电源供电的原因就在这,如使用5V的适配器与Arduino连接,之后连接外设做实验,会发现一些 传感器没有反应,这就是某些传感器需要5V的信号源,可是板子最高输出只能达到3.3V,必然有问题。
(韩广义、宋楠:《Arduino开发从零开始学  学电子的都玩这个》,北京:清华大学出版社2014年版)

ArduinoUNO开发板上的1到13的孔是数字引脚(Digital Pins),月用于输入或输出数字信号(高电平或低电平)。这些引脚是UNO与外部设备(如传感器、执行器、LED等)交互的主要接口,每个引脚都有特定的功能利使用场景。以下是它们的详细说明和区别:

1、数字输入/输出

        可读取或输出数字信号(高电平:5V,低电平:0V)。
        通过 pinMode(pin, INPUT/OUTPUT) 设置引脚模式。
2、PWM输出

        部分引脚(3、5、6、9、10、11)支持PWM(脉宽调制)输出,用于模拟模拟信号(如调 节 LED亮度、控制舵机角度)。
        使用 analogWrite(pin, value) 输出PWM信号(value范围:0~255)。
3、外部中断

        部分引脚(2、3)支持外部中断,用于快速响应外部事件(如按钮按下)。
使用 attachInterrupt(digitalPinToInterrupt(pin), ISR, mode) 设置中断。

ICSP 针头(In-Circuit Serial Programming)

Arduino UNO 开发板上的 ICSP 针头(In-Circuit Serial Programming)是一种用于编程和调试的接口,主要用于直接对微控制器(如ATmega328P)进行烧录或更新固件。它通过SPI(串行外设接口)协议与外部编程器通信,是开发板的重要功能扩展接口。

ICSP 针头通常为6针(2x3排列),引脚定义如下:

引脚功能说明
1MISO (Master In Slave Out)主设备接收数据,从设备发送数据。
2VCC电源正极(5V)。
3SCK (Serial Clock)SPI时钟信号,由主设备生成。
4MOSI (Master Out Slave In)主设备发送数据,从设备接收数据。
5RESET复位信号,用于重启微控制器。
6GND电源地。

  1. 烧录引导程序(Bootloader),当UNO的引导程序损坏时,可通过ICSP接口重新烧录。

  2. 批量生产,在生产环境中,通过ICSP接口快速烧录程序到多个微控制器。

  3. 调试与开发,使用外部编程器进行实时调试和固件更新。

  4. SPI设备扩展,连接SPI设备(如EEPROM、SD卡模块)进行数据通信。

【摘录】

(邵玮副、张鹏、王斯卉、祝宁华、方蕊:《智能机器人设计与创新实践》,西安:西北工业大学出版社2023年版,第6页。)

电池

          外部电源与转换器连接,转换器将电压转换为元件能够承载的范围。

外部电源——

转换器 HW-319-V6.0 

外部电源——转换器

舵机与PcA9685连接:

·舵机信号线(通常是橙色、黄色或白色)->PCA9685的PWM输出引脚(你可以选择o 到15中的任意一个) ·舵机电源线(V+)(通常是红色)->PCA9685V+输出排针(对应通道O旁边标记V+的排针) 

HW-319-V6.0 是 转换器,一端连接电池,其屏幕板,显示了将电池电压转换为更小的电压,会在屏幕板上显示。

Ardunio板子作为小电脑,然后有电源,第三个是舵机和电机,连接到主控芯片上。

电机可以正常地转动。

驱动电机,实现车轮子的转动。

集成电路板 PCA9685  PWM Driver

外部电源——转换器——集成电路版(PCA96785)

电脑——Arduino UNO开发板——集成电路板PCA9685

外部电源与PCA9685连接(舵机供电):

·5v-6v外部电源正极(+)->PCA9685V+螺丝端子(或标有V+/ServoPowerIn 的接 口) ·5V-6V外部电源负极(-)-> PCA9685GND螺丝端子(或标有GND/servoPower Ground的接口)

PCA9685 16-channel PWM Driver 是一种集成电路模块,专门用于生成脉宽调制(PWM)信号,可同时控制多达16个设备(如舵机、LED灯等)。它通过I²C接口与微控制器(如Arduino、Raspberry Pi)通信,简化了多路PWM信号的控制。

主要作用:

  1. 控制舵机

    • 驱动多路舵机(如机器人关节、机械臂),每路独立控制角度。
    • 典型应用:机器人、航模、自动化设备。
  2. LED调光

    • 控制多路LED亮度,实现渐变、闪烁等效果。
    • 典型应用:灯光装饰、舞台效果。
  3. 简化电路设计

    • 减少主控设备的引脚占用,降低硬件复杂度。
    • 提供外部供电接口(V+、GND),支持大电流设备。

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();void setup() {pwm.begin();pwm.setPWMFreq(50);  // 设置PWM频率为50Hz(舵机标准)
}void loop() {pwm.setPWM(0, 0, 300);  // 控制第0路舵机到90°位置delay(1000);pwm.setPWM(0, 0, 150);  // 控制第0路舵机到0°位置delay(1000);
}

舵机

外部电源——转换器——集成电路版(PCA96785)——舵机

【心得】

Github的开源项目,

淘宝相关的工具。 

可以直接询问deepseek,输入自己已有的工具,请deepseek 看如何连接。

案例

轴机转动

代码如下

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40); // 默认I²C地址// 舵机参数(需根据实际舵机校准)
#define SERVO_MIN 150    // 0度对应脉冲值(0.5ms)
#define SERVO_MAX 600    // 180度对应脉冲值(2.5ms)
#define SERVO_MID (SERVO_MIN + (SERVO_MAX - SERVO_MIN)/2) // 90度中间值void setup() {Serial.begin(9600);pwm.begin();pwm.setPWMFreq(50);    // 设置PWM频率为50Hz(舵机标准)Serial.println("输入'w'旋转90度,'s'旋转30度...");
}void loop() {if (Serial.available() > 0) {char cmd = Serial.read();if (cmd == 'w') {pwm.setPWM(0, 0, SERVO_MID); // 通道0旋转90度Serial.println("旋转至90度");} else if (cmd == 's') {pwm.setPWM(0, 0, SERVO_MIN + (SERVO_MAX - SERVO_MIN)*30/180); // 旋转30度Serial.println("旋转至30度");}}
}

如图所示,根据代码,需要输入W,才可以运行。

注意事项

遇到问题,优先拔掉电源,防止烧坏板子。板子烧坏,比较难发现问题所在。

注意正负极连接。正极线连接正极线,负极线连接负极线。

一诗一画

代码如下:

import turtle
import colorsysturtle.tracer(False)
t = turtle.Turtle()t.speed(0)
turtle.bgcolor("black")
t.pensize(2)# 绘制彩色圆形螺旋
for i in range(180):hue = i / 360.0  # 色相值(0~1)color = colorsys.hsv_to_rgb(hue, 1.0, 1.0)  # HSV转RGBt.pencolor(color)t.circle(i)      # 画圆,半径逐渐增大t.left(10)       # 每次左转10度turtle.done()

生成图如下:

相关文章:

  • 高中数学联赛模拟试题精选第16套几何题
  • 子网掩码的学习
  • MyBatis 官方子项目详细说明及表格总结
  • Sentinel规则持久化push模式改造
  • 数据结构和算法(九)--红黑树
  • Windows11系统中GIT下载
  • 【2025最新面试八股常问知识点】HTTP1.0,HTTP1.1,HTTP2.0,HTTP3.0,HTTP的进化之路。
  • TI---sysconfig生成宏
  • PyQt6实例_消息工具_使用与完整代码分享
  • 牛客:BM1 反转链表
  • 4.26 数据交互升级引入配置文件
  • JBoss Web 安全问题实战总结(Session / CSP / Host Header)
  • threejs 零基础学习day01
  • Tauri文件系统操作:桌面应用的核心能力(入门系列四)
  • 深入理解N皇后问题:从DFS到对角线优化
  • Linux | Mfgtools 修改单独只烧写 Uboot,内核,文件系统
  • 用python写一个相机选型的简易程序
  • 视觉大模型专栏导航
  • 可视化大屏开发前提了解
  • MySQL 分布式架构与实战:从单机到集群的进阶之路(附生产级架构设计)
  • 民航局:预计五一假期民航旅客运输量创同期历史新高,将加强价格管理
  • 中共中央政治局召开会议,分析研究当前经济形势和经济工作,中共中央总书记习近平主持会议
  • 国家发改委党组在《人民日报》发表署名文章:新时代新征程民营经济发展前景广阔大有可为
  • 网上销售假冒片仔癀和安宫牛黄丸,两人被判刑
  • 拍北京地铁上的读书人第七年:数字风吹散读书人了吗?
  • 对话上海外贸企业:关税战虽起,中国供应商却难以被取代