之前实验室老师买了一台AR3机械臂(没错就是开源的AR3),是基于Arduino mega2560控制的步进电机机械臂。成品买回来后重刷了控制板程序打算用来学习ros控制,查看厂家发来的控制板原理图,发现他们把关节1方向控制接到了ATmega2560芯片的8号引脚,对的,这个引脚没有映射编号,不能直接定义使用。
由上面两张图可以看出这个方向控制引脚是没那么容易使用了,反而有映射编号的5号引脚没有使用,于是乎,能不能把PE4引脚的数字引脚映射5改为PE6引脚的映射呢?经过查阅,找到了以下方法:
1、打开Arduino安装时的文件夹,找到\arduino\hardware\arduino\avr\variants 在这里有各种板子的引脚定义头文件,其中就包括mega。打开mega文件夹,可以看到pins_arduino.h这个头文件,引脚的定义信息都在这了,我们要做的就是把他复制一份。复制一份这里的mega文件夹,改为自己的名字,比如我改了是zhang。
2、打开这个文件夹里的pins_arduino.h头文件,可以看到里面有所有数字引脚的配置,映射编号其实就是每个数组的索引。比方说我要将digital_pin_5(引脚PE3)映射到8号引脚(PE6),将_BV( 3 )改为_BV( 6 )即可。
const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
// PIN IN PORT
// -------------------------------------------
......
_BV( 3 ) , // PE 3 ** 5 ** PWM5
改为:
_BV( 6 ) , // PE 3 ** 5 ** PWM5
这样就将digital_pin_5映射到8号引脚(PE6)上了。保存退出即可。
3、引脚配置改完了,最后一步,因为我们自己命名了一个板子(即上述的zhang),所以添加我们这个自己的板子到boards.txt中。board.txt和variants文件夹应该在一块,打开boards.txt,将其中的Arduino Mega or Mega 2560的信息复制一份,粘贴到下面,将它的mega改为zhang,特别注意 “mega.build.variant=mega” 这一行要将你自己的板子文件名修改了,即"zhang.build.variant=zhang" 。我的板子命名为了“Arduino Zhang”,保存退出即可。
至此,所有的更改就完成了,打开Arduino IDE可以看到自己的假板子也在列表了,步进电机的方向控制也可以由映射5来操作了。
由于我还只是初学者,第一次写文章,所以文中有错误,有术语不正确的地方,还请大家多多指正,感谢!
参考来源:https://stackoverflow.com/questions/21417521/arduino-use-all-ports-atmega2560