[空气动力快艇] 终于用ART板完成了个玩具

发布于 2012-10-03 17:59:28
视频:视频1 视频2 视频3

遥控器使用现成的航模遥控器,使用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);
}
}


================================== 分割线 ========================================
湖里面水草太多,水下的螺旋浆不能用,所以弄了个水上的。
017-芦苇荡近照1.jpg

[2012-10-03]
刚去试水了,因为还没弄电量指示,不敢开太久。
下次再弄个救援舰,就可以放心开了。
017-芦苇荡近照1.jpg

[2012-10-04]
加装了个电量指示,如果电压低于6.8V就闪灯,然后开回来,电池是7.4V的锂电。
017-芦苇荡近照1.jpg

使劲塞了塞,都塞进去了。
018-芦苇荡近照2.jpg

水草无压力,直接接近1号亭子。
018-芦苇荡近照2.jpg

不过有位小朋友去玩具店买了个,就杯具了,没开出5米就回不来了。
打算赶过去帮一把。
018-芦苇荡近照2.jpg

快速冲撞。
018-芦苇荡近照2.jpg

我再撞。
018-芦苇荡近照2.jpg

终于撞开了。
018-芦苇荡近照2.jpg

被救的军舰顺利返航。
018-芦苇荡近照2.jpg

有了刚才的救援,信心大增,电压指示灯也没闪,于是放心前行。
018-芦苇荡近照2.jpg

顺利接近2号亭,野鸭估计这是飘来的,不理会。
018-芦苇荡近照2.jpg

继续慢慢接近。
018-芦苇荡近照2.jpg

野鸭近照。
010-野鸭近照.jpg

再继续靠近,那只大的终于跑掉了。
011-继续接近-大的跑掉了.jpg

于是追上去。
012-追上去.jpg

太慢,追不上,不过我也没想让追上,因为追上了什么也做了,要是惹得它们不高兴了,随便给我扑腾一下我就回不来了。
013-速度太慢-肯定追不上.jpg

既然追不上,就跟去芦苇荡看看。
014-跟进芦苇荡看看.jpg
015-跟进芦苇荡看看2.jpg
016-跟进芦苇荡看看3.jpg
017-芦苇荡近照1.jpg
018-芦苇荡近照2.jpg

都玩了这么久了,得意忘形了,也没见电压指示灯闪,可突然发现浆转一下停一下。
这下慌了,没电了,想挣扎一下开回来,最终是没成功。
最后花了10元钱捞上来。
019-捞回来.jpg
收工,1是回去把电压警告好好调一下,2是救援舰不弄好是不敢玩了。

更多细节待续。。
speed_boat_run.jpg
speed_boat.jpg
000-航行中.jpg
001-船身.jpg
002-接近1号亭子.jpg
003-.jpg
003-赶去救援.jpg
004-冲上去撞.jpg
005-终于撞开了.jpg
006-开回来了.jpg
007-继续前进.jpg
008-成功接近野鸭.jpg
009-成功接近野鸭2.jpg

查看更多

关注者
0
被浏览
12k
16 个回答
geniusgogo
geniusgogo 认证专家 2012-10-03
遥控的?

必须的,难道还会是语音控制? 嘿嘿,站在岸上语音指挥也不错哦 [s:175]
chairang
chairang 2012-10-04
哈哈哈,好牛逼的样子啊,偷拍啊?
geniusgogo
geniusgogo 认证专家 2012-10-04
舰上装了摄像头? 貌似没看到,相片是你划船拍摄的? [s:154]
littleworm
littleworm 2012-10-04
哇塞 niubility啊·····
好玩 ···
你这个可以叫 气垫船 吧
没看到转向的舵机? 怎么转向的?
aozima
aozima 2012-10-04
拒绝白嫖,拒绝键盘侠!
舰上装了摄像头? 貌似没看到,相片是你划船拍摄的? [s:154]

有个30X的相机(手持颤抖机)。
正在准备救援舰,上面准备安装机械手和摄像机。

哇塞 niubility啊·····
好玩 ···
你这个可以叫 气垫船 吧
没看到转向的舵机? 怎么转向的?

浆就在安装在舵机上面。
bernard
bernard 2012-10-04
可惜呀,错过了niubility的现场
pldjn
pldjn 2012-10-04
拍照也做在船上了吗。
grissiom
grissiom 2012-10-04
牛!遥控信号是怎么传送的?不会是拿航模的遥控器遥控的吧……
aozima
aozima 2012-10-04
拒绝白嫖,拒绝键盘侠!
牛!遥控信号是怎么传送的?不会是拿航模的遥控器遥控的吧……

[s:163] 就是用的现成的遥控器,WIFI难度大些,没办法快速DIY。
后面会增加WIFI的,用于大容量的数据传输。
geniusgogo
geniusgogo 认证专家 2012-10-04
哈哈,还得升级,大容量电源,wifi摄像头,远距离遥控,全天候全水域通行。 [s:175] 说不定还可以弄上两栖型! [s:154]
aaa1982
aaa1982 2012-10-05
太NB了,干脆整个的弄一个套件买吧,无线通信用的是啥?现成的东西无线传照片带宽够么,还能把照片传回来的?

什么时候能公布一个完整的方案? 建议救援艇上面放一个舰载4轴,在弄两个轱辘,集合登陆舰与航母的优势,直接开到钓鱼岛去,呵呵呵。

aozima很有写网络小说的天赋啊
cat_li
cat_li 2012-10-05
不错啊,话说现在拿到art的板子不知道用来干什么,放那吃灰了
aozima
aozima 2012-10-28
拒绝白嫖,拒绝键盘侠!
程序更新了,共两个程序,一个主控制程序控制浆叶,另一个监控程序用来测量电池电量。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览