简 介: 测试了Arduino Nano功能板。特别是在利用Arduino IDE下载程序的时候,需要设置处理器型号为 Old Bootloader,这样可以避免下载程序出错。 后面的实验还测试了如果正确设置Timer2的控制机器使得输出PWM频率在122Hz。利用Arduino的串口监视窗口可以大大提高测试程序与外部程序之间的交互功能。

关键词ArduinoIDE舵机

§01 Nano Arduino 测试板


  在 TB购买 Nano Arduino开发板 ,另外还有 最新版 Arduino nano V3.0 ATMEGA328P 改进版超级好用 下面对其测试在Arduino IDE使用的基本特性。然后在根据 Arduino Nano开发板原理图PCB 可直接打样 给出对于Nano测试电路板,测试以下两方面内容:

  • 制作兼容的Nano电路板,并下载对应的上载程序;
  • 测试否可以Arduino生成对应的HEX文件,通过MEGA328 Download完成程序下载执行。

1、测试Nano编程

  接入PC之后Nano背面的CH340G会产生USB-SERIAL CH340(COM31)虚拟串口。利用 Arduio软件开发环境搭建 IDE生成测试程序。

▲ 实验使用的Nano测试版

  根据 Arduino Nano开发板原理图PCB 可直接打样-淘宝网 给出的Nano的 原理,来了解Nano各个引脚的功能。

(1)Nano各个管脚定义

▲ Nano SCH

▲ USB-CH340G下载电路

(2)Blink LED(D13)

  LED在电路板上占用D13。

【Ⅰ.测试代码】
/*
**==============================================================================
** TEST1.C:             -- by Dr. ZhuoQing, 2021-05-28
**
**==============================================================================
*/
//------------------------------------------------------------------------------
void setup(void) {OUT(LED);
}
//------------------------------------------------------------------------------
void loop(void) {ON(LED);delay(10);OFF(LED);delay(100);
}
//==============================================================================
//                END OF FILE : TEST1.C
//------------------------------------------------------------------------------
【Ⅱ.测试结果】

  错误: 无论对于测试版设置为 Arduino UNONano,但使用Arduino上载代码出现错误。

▲ 上载程序错误

  在 测试版、开发板¥15开发板 中,给出了如下的使用方法是:

  自行下载CH340通用驱动就行了,在Arduino1.8.10版本中,选择 工具,开发板,Arduino Nano,选择端口,处理器里选择Old Bootloader就可以下载例程了。

  因此解决下载问题,需要在处理器中选择 Old Bootloader。

▲ 选择处理器:选择不同的Bootloader

▲ 下载新程序的运行版本

2、Nano的主要资源

  1. 12.个数字输入、输出端口D2-D13
  2. 8个模拟输入端口A0-A7
  3. 一对TTLUART : RX/TX
  4. 6个PWM端口,D3,D5,D6,D9,D10,D11
  5. MCU:ATM的a8p-AU
  6. 支持ISP下载。

▲ Nano外形及其管脚

▲ Nano的基本参数

§02 基础测试Nano


1、输出PWM

(1) 测试代码

/*
**==============================================================================
** TEST1.C:             -- by Dr. ZhuoQing, 2021-05-28
**
**==============================================================================
*/
#define ON(pin)                 digitalWrite(pin, HIGH)
#define OFF(pin)                digitalWrite(pin, LOW)
#define VAL(pin)                digitalRead(pin)
#define IN(pin)                 pinMode(pin, INPUT)
#define OUT(pin)                pinMode(pin, OUTPUT)
#define PWM(pin, pwm)           analogWrite(pin, pwm)
#define LED                     13
const int SERVO_MID         = 47;
const int SERVO_LEFT        = 31;
const int SERVO_RIGHT       = 63;
const int servoPin = 3;
void servoSetup(void) {pinMode(servoPin, OUTPUT);TCCR2B = TCCR2B & B11111000 | B00000110;analogWrite(servoPin, SERVO_MID);
}
//------------------------------------------------------------------------------
void setup(void) {OUT(LED);servoSetup();
}
//------------------------------------------------------------------------------
void loop(void) {ON(LED);delay(10);OFF(LED);delay(100);
}
//==============================================================================
//                END OF FILE : TEST1.C
//------------------------------------------------------------------------------

(2)测试结果

  通过测量D3的输出波形,可以看到的对应的输出PWM为122.7Hz,脉宽为1.5ms。

▲ D3输出的波形

  是所有FLUKE45 测量D3的直流电压:0.922V。它对应的:V47=47255×5.0=0.9216VV_{47} = {{47} \over {255}} \times 5.0 = 0.9216VV47​=25547​×5.0=0.9216V

2、测试PWM的电压

(1)测试代码

/*
**==============================================================================
** TEST1.C:             -- by Dr. ZhuoQing, 2021-05-28
**
**==============================================================================
*/
#define ON(pin)                 digitalWrite(pin, HIGH)
#define OFF(pin)                digitalWrite(pin, LOW)
#define VAL(pin)                digitalRead(pin)
#define IN(pin)                 pinMode(pin, INPUT)
#define OUT(pin)                pinMode(pin, OUTPUT)
#define PWM(pin, pwm)           analogWrite(pin, pwm)
#define LED                     13
const int SERVO_MID         = 47;
const int SERVO_LEFT        = 31;
const int SERVO_RIGHT       = 63;
const int servoPin = 3;
void servoSetup(void) {pinMode(servoPin, OUTPUT);TCCR2B = TCCR2B & B11111000 | B00000110;analogWrite(servoPin, SERVO_MID);
}
//------------------------------------------------------------------------------
void setup(void) {OUT(LED);servoSetup();Serial.begin(115200);Serial.setTimeout(10);
}
//------------------------------------------------------------------------------
int incomingByte= 0;                       // for incoming serial data.
int pwmdata = 0;
char szBuffer[12];
void loop(void) {if(Serial.available() > 0) {    pwmdata = Serial.parseInt();Serial.println(pwmdata);PWM(servoPin, pwmdata);}
}
//==============================================================================
//                END OF FILE : TEST1.C
//------------------------------------------------------------------------------

(2)串口交互界面

  利用Arduino的串口监视界面输入PWM设定值。

▲ Arduino 的串口监视

  利用Python编程测量不同的PWM下输出平均电压之。

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# MEAS1.PY                     -- by Dr. ZhuoQing 2021-05-28
#
# Note:
#============================================================
from headm import *
from tsmodule.tsstm32       import *
com_title = "COM31"
outv = []
for i in range(256):tspsendwindowkey(com_title, '%d\r'%i)time.sleep(1.5)meter = meterval()outv.append(meter[0])
plt.plot(outv)
plt.xlabel("PWM")
plt.ylabel("Voltage")
plt.grid(True)
plt.tight_layout()
plt.show()
#------------------------------------------------------------
#        END OF FILE : MEAS1.PY
#============================================================

  window

  下面是测量之后的结果。

▲ PWM平均电压与Duty之间的关系

3、测试舵机

  手边有一款来自于北京科宇的大角度输出舵机,利用Arduino输出的PWM波形测试该款舵机转角输出的范围。

▲ 输出脉冲信号控制舵机旋转

  从测量的结果来看,舵机的输出较大大约为270°

※ 实验总结 ※


  对于Arduino Nano使用的时候,需要注意选择Nano的处理器的时候,应该选择 Old Bootloader 。否则就会出现上载程序出错的问题。

  这个结论是在 测试板 开发板 开发套件 其它 新版 Arduino nano V3.0 ATMEGA328P 改进版超级好用 送USB线 中给出的提示:

自行下载CH340通用驱动就行了,在Arduino1.8.10版本中,选择 工具,开发板,Arduino Nano,选择端口,处理器里选择Old Bootloader就可以下载例程了。

  测试了利用Arduino驱动舵机的情况。需要对于Timer2控制字进行设置,使得输出的频率为122Hz左右。否则缺省情况下,输出的PWM频率为495Hz,不适合驱动舵机。

TCCR2B = TCCR2B & B11111000 | B00000110;

  利用Arduino IDE中的串口监视串口(利用ctrl+shift+m)可以对ArduinoSerial.print() 函数输出进行显示。此外利用Serial.parseInt()以及相关的函数对于从串口监视串口送入的字符进行解析。利用这种方法可以构建自动测量系统。


■ 相关文献链接:

  • TB购买 Nano Arduino开发板
  • 最新版 Arduino nano V3.0 ATMEGA328P 改进版超级好用
  • Arduino Nano开发板原理图PCB 可直接打样-淘宝网
  • Arduio软件开发环境搭建
  • 测试版、开发板¥15开发板
  • 测试板 开发板 开发套件 其它 新版 Arduino nano V3.0 ATMEGA328P 改进版超级好用 送USB线

○ 相关图表链接:

  • 实验使用的Nano测试版
  • Nano SCH
  • USB-CH340G下载电路
  • 上载程序错误
  • 选择处理器:选择不同的Bootloader
  • 下载新程序的运行版本
  • Nano外形及其管脚
  • Nano的基本参数
  • D3输出的波形
  • Arduino 的串口监视
  • PWM平均电压与Duty之间的关系
  • 输出脉冲信号控制舵机旋转

通过CH340G驱动的Nano ATMEAG328P驱动板初步测试相关推荐

  1. 禁用笔记本触控板驱动,禁用联想笔记本触控板驱动,Alps Touch pad 驱动

    这个驱动网上找了好久哦,也已经在使用了,终于可以禁用我的联想旭日C467A本本的触控屏了,哦,耶. 驱动下载地址: 1,XP版驱动 2,Vista版驱动 安装方法:直接安装驱动后,重启电脑,打开控制面 ...

  2. Linux嵌入式驱动开发07——GPIO驱动过程记录(飞凌开发板)

    文章目录 全系列传送门 1. 在/arch/arm/boot/dts/imx6q-pinfunc.h查找 2. 在设备树配置文件中添加设备节点定义以及其引脚定义 3. 修改设备树文件添加配置 4. d ...

  3. Arduino NANO,UNO 驱动安装

    Arduino不同型号的开发板安装驱动的方式也不尽相同,但基本也就是两种: 1.系统自动安装驱动: 将Arduino开发板通过USB线连接到电脑,系统会自动安装驱动,但这个过程可能比较慢! 如果你希望 ...

  4. stm32看门狗_「正点原子NANO STM32开发板资料连载」第十一章 独立看门狗实验

    1)实验平台:ALIENTEK NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第十一章 独 ...

  5. 看门狗寄存器c语言代码_「正点原子NANO STM32F103开发板资料连载」第十一章 看门狗实验...

    1)实验平台:[正点原子] NANO STM32F103 开发板 2)摘自<正点原子STM32 F1 开发指南(NANO 板-HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 ...

  6. 判断按键值_「正点原子NANO STM32开发板资料连载」第十六章电容触摸按键实验...

    1)实验平台:ALIENTEK NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第十六章电容 ...

  7. STM32MP157驱动开发——4G通信模块驱动

    STM32MP157驱动开发--4G通信模块驱动 一.简介 二.驱动开发 1.高新兴 ME3630 驱动开发 驱动修改 添加 ECM 支持程序 配置 Linux 内核 ppp拨号功能测试 ECM 联网 ...

  8. 字符设备驱动基础篇0——驱动开发初体验

    以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除. 参考资料:http://www.cnblogs.com/biaohc/p/6575074.html 1.驱动开发的准备工作 (1)内核源码树 ...

  9. 超声波阵列功率驱动:利用MX1919驱动

    简 介: 本文测试了MX1919驱动超声波阵列的效果. 比起 利用L293作为驱动 效率提高了很多. 这位之后制作超声直线声音传送打下了基础. 关键词: MX1919,超声驱动 #mermaid-sv ...

最新文章

  1. pma mysql_Table ‘phpmyadmin.pma_table_uiprefs’ doesn’t exist mysql
  2. java线程——join
  3. P2473 [SCOI2008]奖励关
  4. 目标检测基本概念理解之IoU(交并比)以及Python代码实现
  5. 在Ubuntu下运行 apt-get update命令后出现错误:
  6. (13)Node.js 文件流 缓冲 VS 流
  7. Android项目之电话黑名单
  8. 关于准系统,镭波,地球人等等其他牌子的机器介绍和外星人的比较
  9. 实验五|Python 企业获利能力分析
  10. 什么是智能家电?消费者不知判定标准
  11. 信息学奥赛一本通:题解目录 (〃‘▽‘〃)点个赞吧
  12. 本机与虚拟机WIN7之间互传文件
  13. 关联入库表,出库表,统计库存。。。
  14. 图灵奖得主长文报告:是什么开启了计算机架构的新黄金十年?
  15. 双稳态电子开关、单按键自锁电路仿真
  16. vue实现监控流-rtsp转flv
  17. 做网站如何选择利于优化的服务器
  18. 云端数据仓库的模式选型与建设
  19. 11 岁编程,21 岁开发 Linux 系统,这就是顶尖程序员的样子!
  20. Ubuntu20.04 卸载cuda 11.0

热门文章

  1. 玩转SCVMM中的更新基线,实现虚拟平台基础服务器补丁自动更新
  2. Windows下的鱿鱼(Squid)
  3. 安卓v7支持包下的ListView替代品————RecyclerView
  4. getGeneratedKeys自动获取主键的方法
  5. 【原创翻译】文件与文件夹
  6. Java基础学习总结(15)——java读取properties文件总结
  7. 编译安装samba4.89遇到的错误
  8. 漫画:你会感觉容器使用起来很痛苦吗?
  9. Linux shell 基础之Vim编辑器
  10. JConsole/JvisualVM 远程连接失败处理