【雕爷学编程】Arduino动手做(156)---OTTO两足舵机机器人
37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百五十六:硬件和软件都开源的多功能OTTO两足舵机机器人
知识点:OTTO机器人是什么?
OTTO是完全开源的,任何人都可以做的交互式机器人。她与Arduino控制系统兼容,其主要外观材料可以直接3d打印而来,甚至可以说她是为培养人们学习机器人的热情而建造的。通过输入已有的程序,OTTO现在可以步行,跳舞,唱歌等等,他还可以通过超声波感应躲开障碍物。 OTTO的灵感来源于另一个称为Zowi 的两足机器人。OTTO在硬件和软件上都是真正的开源,鼓励世界上任何人发明创造出自己的,具有更多功能和特性版本的OTTO。
OTTO机器人官方网址:www.ottodiy.com
https://ottodiycn.mystrikingly.com/
体验制作相关文件,点击此处下载链接:https://pan.baidu.com/s/1EEkDRCdqNryFFHClZclkvg
提取码:okck
OTTO机器人组件清单
1.Arduino控制器 (Arduino Nano microcontroller)
2.Arduino扩展板(Arduino NANO Shield I/O Extension Board Expansion XD-212)
3.USB数据线 (大部分Arduino套件都有)
4.HC-SR04超声波传感器(HC-SR04 Ultrasound sensor)
5.4个舵机(Mini servo SG90 9g),每一个舵机应当配备2个尖头螺丝和1个小螺丝。
6.5V蜂鸣器
7.6根母母头面包板跳线(Female to Female breadboard connectors cable,10cm)
8.5号电池盒
9.4个5号电池(1.5V)
10.十字型螺丝刀,磁化的最好。
11. 超声波传感器
12. 尖头螺丝,短螺丝
13. 3D打印头,身体,两只腿,左右脚
备选项:电烙铁(如果要安装电池就需要用到)
OTTO的小实验场景
OTTO外观打印件的说明
你可以从这里下载3d打印机的源文件自行打印,也可以找3d打印商进行打印机购买。如果自行打印,其打印设置要求:精度-0.15mm, 填充密度-20%。
源文件下载链接:https://pan.baidu.com/s/1Ei_NzV5RR84f2g58HHAnkA
线路连接
准备好杜邦线及及蜂鸣器,根据图形所示的连接方法将各处引针连接完毕
下载并安装Arduino IDE软件(目前版本 Arduino IDE 2.1.1)
Arduino IDE 是Arduino官方提供的开发环境,支持windows、Mac OS、linux等系统。点击下载链接后,会看到多个版本,建议下载最新版。
官方下载地址:https://www.arduino.cc/en/Main/Software
开发板选择——Arduino Nano
处理器选择——ATmega328P
端口选择——COM3(各个电脑不相同,随机)
注意
在Nano板上传代码时,如果碰到以下avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x36错误,可以尝试在Arduino IDE上尝试以下操作以下菜单:'工具- 处理器 - ATmega328P(Old Bootloader)'应该可以解决。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百五十六:硬件和软件都开源的多功能OTTO两足舵机机器人
安装库:IDE—工具—管理库—搜索“Servo”—安装
项目之一:通过IO9口,逐一测试四只舵机
/* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验一百五十六:硬件和软件都开源的多功能OTTO两足舵机机器人 1、安装库:IDE—工具—管理库—搜索“Servo”—安装 2、实验之一:通过IO9口,逐一测试四只舵机 */ #include <Servo.h> Servo myservo; int pos = 0; void setup() { myservo.attach(9); } void loop() { for (pos = 0; pos <= 180; pos += 1) { // in steps of 1 degree myservo.write(pos); delay(15); } for (pos = 180; pos >= 0; pos -= 1) { myservo.write(pos); delay(15); } }