Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
DIY综合交流区
[空气动力快艇] 终于用ART板完成了个玩具
发布于 2012-10-03 17:59:28 浏览:13175
订阅该版
视频:[视频1](http://v.youku.com/v_show/id_XNDY4MDY5MDQ4.html) [视频2](http://v.youku.com/v_show/id_XNDY4MDc4Mjc2.html) [视频3](http://v.youku.com/v_show/id_XNDY4MDkxMTA0.html) 遥控器使用现成的航模遥控器,使用3个通道。 一个通道控制油门, 一个通道控制舵机调整浆叶方向, 一个通道用来选择前进与后退。 发挥ART多线程的优势,一个主程序控制浆叶,另一个程序监测电池电量。 ====================== 主控制程序 ====================== ```int oil = 8; // 油门输入 int dir = 9; // 方向输入 // #1 int pwm = 7; // PWM输出引脚定义 int in1 = 6; // 电机方向使能1 int in2 = 5; // 电机方向使能2 int dir_value = 0; // 记录当前方向值, 0:停止 >0:前进 <0:后退 // 设置方向 void set_dir(int value) { if(value == 0) { digitalWrite(in1, LOW); digitalWrite(in2, LOW); return; } if(value > 0) { digitalWrite(in1, LOW); digitalWrite(in2, HIGH); } else { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); } } // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. //Serial.begin(9600); pinMode(oil, INPUT); pinMode(dir, INPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); set_dir(1); } // the loop routine runs over and over again forever: void loop() { int oil_value; // 读取方向输入 { int new_dir; if(pulseIn(dir, HIGH) > 1700) { new_dir = 1; } else { new_dir = 0; } if(new_dir != dir_value) { dir_value = new_dir; set_dir(0); delay(300); if( dir_value == 0) { set_dir(1); } else { set_dir(-1); } } } // 读取油门输入,油门值是反向 oil_value = pulseIn(oil, HIGH); //Serial.println(oil_value); // 为了比较容易停止,只要值大于1850就算到底。 if(oil_value > 1850) { oil_value = 1850; } // PWM值范围是 0~255。换算之 oil_value = oil_value - (1850 - (255 * 3)); oil_value = (255 * 3) - oil_value; oil_value = oil_value / 3; // 限制一下最大值。 oil_value = oil_value / 3; // 调整最小油门,利于电机启动。 if((oil_value > 0) && (oil_value < 20)) { oil_value = 20; } // 油门输出 analogWrite(pwm, oil_value); //Serial.println(oil_value); delay(10); } ``` ====================== 电量监控程序 ====================== ```const int analogInPin = 0; // Analog input pin that the potentiometer is attached to const int LED_Pin = 12; // Analog input pin that the potentiometer is attached to int sensorValue = 0; // value read from the pot void setup() { pinMode(LED_Pin, OUTPUT); digitalWrite(LED_Pin, LOW); } void loop() { // read the analog in value: sensorValue = analogRead(analogInPin); //rt_kprintf("AD:%u ", sensorValue); if(sensorValue < 2700) // 7V { digitalWrite(LED_Pin, HIGH); delay(80); digitalWrite(LED_Pin, LOW); delay(100); digitalWrite(LED_Pin, HIGH); delay(80); digitalWrite(LED_Pin, LOW); delay(2000); } else { digitalWrite(LED_Pin, HIGH); delay(200); digitalWrite(LED_Pin, LOW); delay(5000); } } ``` ================================== 分割线 ======================================== 湖里面水草太多,水下的螺旋浆不能用,所以弄了个水上的。  [2012-10-03] 刚去试水了,因为还没弄电量指示,不敢开太久。 下次再弄个救援舰,就可以放心开了。  [2012-10-04] 加装了个电量指示,如果电压低于6.8V就闪灯,然后开回来,电池是7.4V的锂电。  使劲塞了塞,都塞进去了。  水草无压力,直接接近1号亭子。  不过有位小朋友去玩具店买了个,就杯具了,没开出5米就回不来了。 打算赶过去帮一把。  快速冲撞。  我再撞。  终于撞开了。  被救的军舰顺利返航。  有了刚才的救援,信心大增,电压指示灯也没闪,于是放心前行。  顺利接近2号亭,野鸭估计这是飘来的,不理会。  继续慢慢接近。  野鸭近照。  再继续靠近,那只大的终于跑掉了。  于是追上去。  太慢,追不上,不过我也没想让追上,因为追上了什么也做了,要是惹得它们不高兴了,随便给我扑腾一下我就回不来了。  既然追不上,就跟去芦苇荡看看。      都玩了这么久了,得意忘形了,也没见电压指示灯闪,可突然发现浆转一下停一下。 这下慌了,没电了,想挣扎一下开回来,最终是没成功。 最后花了10元钱捞上来。  收工,1是回去把电压警告好好调一下,2是救援舰不弄好是不敢玩了。 更多细节待续。。             
查看更多
16
个回答
默认排序
按发布时间排序
grissiom
2012-10-03
这家伙很懒,什么也没写!
遥控的?
geniusgogo
认证专家
2012-10-03
这家伙很懒,什么也没写!
>遥控的? --- 必须的,难道还会是语音控制? 嘿嘿,站在岸上语音指挥也不错哦 [s:175]
chairang
2012-10-04
这家伙很懒,什么也没写!
哈哈哈,好牛逼的样子啊,偷拍啊?
geniusgogo
认证专家
2012-10-04
这家伙很懒,什么也没写!
舰上装了摄像头? 貌似没看到,相片是你划船拍摄的? [s:154]
littleworm
2012-10-04
这家伙很懒,什么也没写!
哇塞 niubility啊····· 好玩 ··· 你这个可以叫 气垫船 吧 没看到转向的舵机? 怎么转向的?
aozima
2012-10-04
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
>舰上装了摄像头? 貌似没看到,相片是你划船拍摄的? [s:154] --- 有个30X的相机(手持颤抖机)。 正在准备救援舰,上面准备安装机械手和摄像机。 >哇塞 niubility啊····· >好玩 ··· >你这个可以叫 气垫船 吧 >没看到转向的舵机? 怎么转向的? --- 浆就在安装在舵机上面。
bernard
2012-10-04
这家伙很懒,什么也没写!
可惜呀,错过了niubility的现场
pldjn
2012-10-04
这家伙很懒,什么也没写!
拍照也做在船上了吗。
grissiom
2012-10-04
这家伙很懒,什么也没写!
牛!遥控信号是怎么传送的?不会是拿航模的遥控器遥控的吧……
aozima
2012-10-04
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
>牛!遥控信号是怎么传送的?不会是拿航模的遥控器遥控的吧…… --- [s:163] 就是用的现成的遥控器,WIFI难度大些,没办法快速DIY。 后面会增加WIFI的,用于大容量的数据传输。
撰写答案
登录
注册新账号
关注者
0
被浏览
13.2k
关于作者
aozima
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
提问
92
回答
4483
被采纳
383
关注TA
发私信
相关问题
1
[项目]搞个开源的硬件项目
2
硬件计划贴,及时更新,欢迎提意见
3
软件计划贴,及时更新,欢迎提意见::WMA,MOUNT,LWIP等问题急需解决.
4
MMS协议
5
定点的wma解压库-libwma
6
QQ群记录 [20090821]
7
STM32网络收音机PCB报名征集
8
第一版调试记录
9
第二版硬件讨论
10
RADIO项目相关模块规格--欢迎大家自己做板时规格与此兼容,减少重复劳动
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
6
五分钟玩转RT-Thread新社区
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【睿擎工业平台试用】EtherCAT主站控制从站IO
2
【睿擎工业平台试用】硬件平台上手和Modbus功能使用
3
基于GD32F303从0搭建文件系统,挂载2个块设备到文件系统
4
rt thread 文件系统dfs挂载2个块设备
5
RT Thread 块设备注册
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
Bootloader
AT
Hardfault
CAN总线
ART-Pi
FinSH
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
FAL
RTC
rt-smart
I2C_IIC
cubemx
UART
BSP
ESP8266
PWM
ota在线升级
WIZnet_W5500
packages_软件包
flash
freemodbus
GD32
潘多拉开发板_Pandora
ADC
编译报错
keil_MDK
定时器
flashDB
rt_mq_消息队列_msg_queue
ulog
socket
msh
中断
Debug
SFUD
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
三世执戟
9
个答案
2
次被采纳
RTT_逍遥
5
个答案
2
次被采纳
加缪
11
个答案
1
次被采纳
用户名由3_15位
5
个答案
1
次被采纳
本月文章贡献
chejia12
9
篇文章
4
次点赞
纯白酱
2
篇文章
4
次点赞
Hlafklio
2
篇文章
1
次点赞
530china
1
篇文章
7
次点赞
rv666
1
篇文章
7
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部