文号
t47933
阅读
21084
回复
17
收藏
16
【H3C小组】一、Arduino二级火箭分离开伞自动控制程序源码【原创】
2012/07/13
IP:天津
放假这两天自学了arduino单片机编程,自己有其他编程语言的基础,现在给我们小组的二级火箭写了个控制程序,用了大概8小时吧。这是我第一个写的arduino程序,有什么错误的地方请大家帮忙指出。

单片机使用arduino NANO 3.0 ,体积小,重量轻

说明:通过Arduino单片机控制固体燃料二级火箭的分离和开伞动作,以及航拍模块控制
1~4针脚分别为继电器1~4
继电器1控制航拍模块供电
继电器2控制航拍模块拍照按钮
继电器3控制二级点火及爆破切割分离
继电器4控制降落伞打开
5针脚为三轴加速度传感器Z轴的数据接入

整个程序基本就是通过判断Z轴加速度大小来进行操作
程序思路


由于航拍采用成品化的D82密拍,自带的电池质量不好,所以直接拆掉,节省体积。USB接口5V供电,通过继电器1控制航拍模块电源,上电后自动开启声控录像,由于此模式不稳定。所以在继电器1上电10秒后自动接通继电器2,虚拟按下拍照键,终止声控录像模式。再通过持续接通继电器2,一秒,进入录像模式。
void setup()
{
pinMode( 3 , OUTPUT);
Serial.begin(9600);
pinMode( 4 , OUTPUT);
pinMode( 2 , OUTPUT);
pinMode( 1 , OUTPUT);
}
void loop()
{
delay( 1500 );
Serial.print( "System Start Success!!" );
Serial.println("");
digitalWrite( 1 , LOW );
Serial.print( "Samera Turn On ......" );
Serial.println("");
delay( 10000 );
Serial.print( "Camera Turn On Success!" );
Serial.println("");
digitalWrite( 2 , LOW );
delay( 100 );
digitalWrite( 2 , HIGH );
Serial.print( "Camera Start ....." );
Serial.println("");
digitalWrite( 2 , LOW );
delay( 1000 );
digitalWrite( 2 , HIGH );
Serial.print( "Camera Start Success!!" );
Serial.println("");
while ( ( ( analogRead(A5) ) <= ( 1 ) ) )
{
Serial.print( "Wait Start....." );
Serial.println("");
delayMicroseconds( 1000 );
}
Serial.print( "Start !!!" );
Serial.println("");
while ( ( ( analogRead(A5) ) >= ( 1 ) ) )
{
Serial.print( "a=" );
Serial.print( analogRead(A5) );
Serial.println("");
}
Serial.print( "First Rocket Power Over!" );
Serial.println("");
Serial.print( "Start Leave Program......" );
Serial.println("");
while ( ( ( analogRead(A5) ) < ( 1 ) ) )
{
digitalWrite( 3 , LOW );
delay( 2000 );
digitalWrite( 3 , HIGH );
delay( 1000 );
Serial.print( "Second Fire....." );
Serial.println("");
}
delayMicroseconds( 1000 );
while ( ( ( analogRead(A5) ) < ( 1 ) ) )
{
Serial.print( "Wait satrt....." );
Serial.println("");
delayMicroseconds( 1000 );
}
Serial.print( "Second Frie Success!!" );
Serial.println("");
while ( ( ( analogRead(A5) ) >= ( 0 ) ) )
{
delayMicroseconds( 1000 );
Serial.print( "a=" );
Serial.print( analogRead(A5) );
Serial.println("");
}
delayMicroseconds( 1000 );
if (( ( analogRead(A5) ) <= ( 0 ) ))
{
Serial.print( "[s:9]arachute Open....." );
Serial.println("");
digitalWrite( 4 , LOW );
delay( 2000 );
digitalWrite( 4 , HIGH );
while ( ( ( analogRead(A5) ) < ( 0 ) ) )
{
Serial.print( "a=" );
Serial.print( analogRead(A5) );
Serial.println("");
}
}
Serial.print( "A Successful Landing" );
Serial.println("");
delay( 20000 );
Serial.print( "Close Cream...." );
Serial.println("");
digitalWrite( 1 , HIGH );
Serial.print( "Game00over" );
Serial.println("");
Serial.print( "GPS" );
Serial.println("");
}


H3C小组二次会议将于近日召开。届时,将进行程序测试,以及数传模块测试。

最终感谢科创论坛对于H3C小组假期火箭项目的基金支持!
166_19829_1dc8de520c711f6.jpg
+1
科创币
焓熵`
2012/07/13
幾時發射?來年會把~
+25
科创币
银色荆棘
2012/07/13
辛苦。 第二次会议我因军训就不参加了,代我向氕氘氚问好。
+10
科创币
古人
2012/07/13
支持教育局,最近也准备学习Arduino。
+50
科创币
虎哥
2012/07/19
支持
14年6个月前IP:未同步
420006
1楼
终于看到为数不多的用Arduino的了。。。。
Nano的确很小很好用,特别是做成品的时候。
引用
评论
2
14年6个月前IP:未同步
420019
2楼
Arduino 好像模块化的啊…………各种函数引用…………简单是简单了,让大家都会用,要深入还是要写些程序的
引用
评论
1
14年6个月前IP:未同步
420029
3楼
支持教育局,最近也准备学习Arduino。
引用
评论
1
14年6个月前IP:未同步
420047
4楼
小火箭采用爆破切割分离,MS不是很好控制~!
引用
评论
game00over作者
14年6个月前IP:未同步
420062
5楼
回 4楼(wsygz08) 的帖子
箭体整个采用PVC排雨水管,在分离出外壁刻出环形分离槽,槽内填充HMTD,快引钻孔连接到内部的二级发动机点火头。在二级发动机点火时,快引引爆HMTD,切割分离
引用
评论
14年6个月前IP:未同步
420073
6楼
回 3楼(古人) 的帖子
Arduino根本不用学。。。太容易了,所以只有吾等傻瓜+懒人喜欢用
引用
评论
1
14年6个月前IP:未同步
420130
7楼
回 5楼(game00over) 的帖子
PVC管厚度不一定均匀 运输过程中也可能变形 只炸开一半那就爽了
引用
评论
game00over作者
14年6个月前IP:未同步
420192
8楼
回 7楼(nongmiintou) 的帖子
PVC排水管本地购买,这里的PVC质量很好。基本均匀,就算不均匀,环形的凹槽,加上打孔以及HMTD的威力,也足以全部炸开了。
另外在地面还要进行爆破切割分离的实验,确定药量以及凹槽深度等等。实验无误,才会正式应用于火箭发射
引用
评论
14年5个月前IP:未同步
423572
9楼
Nano 的啥CPU?具体型号?
引用
评论
14年5个月前IP:未同步
423573
10楼
ATmega328 吗?
引用
评论
14年5个月前IP:未同步
423576
11楼
回 10楼(普利子蛋) 的帖子
是的,贴片封装的328
引用
评论
14年5个月前IP:未同步
423577
12楼
回 楼主(game00over) 的帖子
不过你这程序串口调试的语句和实际控制的语句差不多多了。。。。
到处是Seiral.println();
引用
评论
game00over作者
14年5个月前IP:未同步
423594
13楼
回 12楼(justinpiggy) 的帖子
额,这一版的程序已经废弃,有BUG。新版的已经写好,等待明天去测试
引用
评论
10年10个月前IP:浙江
808362
14楼
用C写的?
引用
评论
10年10个月前IP:浙江
808363
15楼
没注释 有些还是看不懂。。。
引用
评论
10年9个月前IP:黑龙江
810974
16楼
好,精辟
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的