|
|
本帖最后由 Ultrady 于 2015-6-25 14:01 编辑
本系列帖子老规矩,视频说明一切!
继第一个帖子【原创软硬开源】电路极简2x2x2光立方——基于STC单片机
http://www.geek-workshop.com/thread-14906-1-1.html
后的又一力作。继续将Ultrady原创软硬开源系列帖子发展起来。
和上一个制作一样也是玩LED哒~这个制作是上周刚完成的单片机原理与应用课程的期末考查设计,是我一个人的劳动成果,小组里另外3个人都是搭顺风车过关的~觉得做了这个东西以前应该没有人做过,所以共享出来让大家作为一个参考。
由于时间仓促所以我是用纸板做的模型,如果有人手工精细的话做一个更漂亮的模型应该会很棒!本项目让我通宵了2晚外加一晚没睡几个小时,很少有投入这么多精力去做一件事。做这个的时候最累的就是排线的布线和接线。。本来打算把电路板放在机身后部,把排线焊在电路板上的时候才发现排线不够长。。后来只能委屈点挂在机翼上面了。排线整整齐齐地用3M泡棉双面胶贴好看起来比较美观也不会混乱。
民航标准灯光系统模型
摘 要
现代全球民用航空基本都采用统一的标准,其中一个重要的标准就是灯光系统。民用航空器上的灯光系统是遵循全世界统一的规则进行设计和点亮的。本项目旨在运用单片机原理与应用课程中的知识制作一个模型,以演示民航固定翼飞机从开机到完成飞行停机过夜的整个标准灯光流程。
【勘误!】此处三极管驱动的LED忘记画限流电阻!请在VCC与LED之间加220Ω限流电阻!否则LED将烧毁。2015年6月25日
经过多次修正的原理图
项目的所有说明和原理以及民航灯光系统的介绍通通在附件的论文里请务必参考!
老规矩,接下来是说好的软件开源。
[pre lang="arduino" line="1" file="LIGHT_SYSTEM.ino"]//--------------------Ultrady.cn--------------------
//-----------------Creative Commons-----------------
//----------------------BY-ND-----------------------
//---------------------Radical----------------------
//--------------------June 2015---------------------
#include <Servo.h>
Servo GEAR;
Servo ENGINE;
const int STROBE_LIGHT = 3;
const int BEACON_LIGHT = 7;
const int TAXI_LIGHT = 6;
const int LANDING_LIGHT = 2;
const int BUTTON = A7;
int gear = 100;
int flow = 0;
int enter = 0;
int button_value = 1023;
void setup() {
pinMode(LANDING_LIGHT , OUTPUT);
pinMode(STROBE_LIGHT , OUTPUT);
pinMode(TAXI_LIGHT , OUTPUT);
pinMode(BEACON_LIGHT , OUTPUT);
GEAR.attach(12);
GEAR.write( 90 );//Up
delay(1000);
GEAR.detach();
}
void loop() {
switch (flow){
case 0: //init
START_SOUND();
while(enter != 1){
//__________
//__________
button_value = analogRead(BUTTON);
if (button_value < 100){
enter = 1;
}
}
enter = 0;
tone(13, 523, 250);
delay( 250 );
flow++;
break;
case 1: //Start
GEAR_DOWN();
while(enter != 1){
//__________
BEACON();
delay(1000);
//__________
button_value = analogRead(BUTTON);
if (button_value < 100){
enter = 1;
}
}
enter = 0;
tone(13, 587, 250);
delay( 250 );
flow++;
break;
case 2: //TAXI
digitalWrite( TAXI_LIGHT , HIGH );
ENGINE.attach(11);
ENGINE_TAXI();
while(enter != 1){
//__________
BEACON();
delay(1000);
//__________
button_value = analogRead(BUTTON);
if (button_value < 100){
enter = 1;
}
}
enter = 0;
tone(13, 659, 250);
delay( 250 );
flow++;
break;
case 3: //Waiting for take off
while(enter != 1){
//__________
BEACON();
delay(1000);
BEACON();
delay(1000);
STROBE();
//__________
button_value = analogRead(BUTTON);
if (button_value < 100){
enter = 1;
}
}
enter = 0;
tone(13, 1046, 1000);
delay( 1000 );
flow++;
break;
case 4: //Take off
digitalWrite( LANDING_LIGHT , HIGH );
ENGINE_FLIGHT();
while(enter != 1){
//__________
BEACON();
delay(1000);
BEACON();
delay(1000);
STROBE();
//__________
button_value = analogRead(BUTTON);
if (button_value < 100){
enter = 1;
}
}
enter = 0;
tone(13, 1046, 1000);
delay( 1000 );
flow++;
break;
case 5: //Off
digitalWrite( LANDING_LIGHT , LOW );
digitalWrite( TAXI_LIGHT , LOW );
GEAR_UP();
while(enter != 1){
//__________
BEACON();
delay(1000);
BEACON();
delay(1000);
STROBE();
//__________
button_value = analogRead(BUTTON);
if (button_value < 100){
enter = 1;
}
}
enter = 0;
tone(13, 1046, 1000);
delay( 1000 );
flow++;
break;
case 6: //Cruise
while(enter != 1){
//__________
BEACON();
delay(1000);
//__________
button_value = analogRead(BUTTON);
if (button_value < 100){
enter = 1;
}
}
enter = 0;
tone(13, 1046, 1000);
delay( 1000 );
flow++;
break;
case 7: //Drop
while(enter != 1){
//__________
BEACON();
delay(1000);
BEACON();
delay(1000);
STROBE();
//__________
button_value = analogRead(BUTTON);
if (button_value < 100){
enter = 1;
}
}
enter = 0;
tone(13, 1046, 1000);
delay( 1000 );
flow++;
break;
case 8: //Gear down
GEAR_DOWN();
digitalWrite( TAXI_LIGHT , HIGH );
while(enter != 1){
//__________
BEACON();
delay(1000);
BEACON();
delay(1000);
STROBE();
//__________
button_value = analogRead(BUTTON);
if (button_value < 100){
enter = 1;
}
}
enter = 0;
tone(13, 1046, 1000);
delay( 1000 );
flow++;
break;
case 9: //Approach
digitalWrite( LANDING_LIGHT , HIGH );
while(enter != 1){
//__________
BEACON();
delay(1000);
BEACON();
delay(1000);
STROBE();
//__________
button_value = analogRead(BUTTON);
if (button_value < 100){
enter = 1;
}
}
enter = 0;
tone(13, 1046, 1000);
delay( 1000 );
flow++;
break;
case 10: //Landing
ENGINE_TAXI();
digitalWrite( LANDING_LIGHT , LOW );
while(enter != 1){
//__________
BEACON();
delay(1000);
//__________
button_value = analogRead(BUTTON);
if (button_value < 100){
enter = 1;
}
}
enter = 0;
tone(13, 1046, 1000);
delay( 1000 );
flow++;
break;
case 11: //Parking
ENGINE_STOP();
digitalWrite( TAXI_LIGHT , LOW );
break;
}
}
void BEACON() {
digitalWrite( BEACON_LIGHT , HIGH );
delay( 200 );
digitalWrite( BEACON_LIGHT , LOW );
delay( 500 );
digitalWrite( BEACON_LIGHT , HIGH );
delay( 100 );
digitalWrite( BEACON_LIGHT , LOW );
delay( 100 );
digitalWrite( BEACON_LIGHT , HIGH );
delay( 100 );
digitalWrite( BEACON_LIGHT , LOW );//delay 1000
}
void STROBE() {
digitalWrite( 3 , HIGH );
delay( 50 );
digitalWrite( 3 , LOW );
delay( 100 );
digitalWrite( 3 , HIGH );
delay( 50 );
digitalWrite( 3 , LOW );//delay 2500
}
void GEAR_UP() {
GEAR.attach(12);
for (gear = 180; gear >=100; gear -= 1){
GEAR.write( gear );
delay(30);
}
GEAR.detach();
}
void GEAR_DOWN() {
GEAR.attach(12);
for (gear = 100; gear <180; gear += 1){
GEAR.write( gear );
delay(30);
}
GEAR.detach();
}
void ENGINE_TAXI() {
ENGINE.write( 110 );
}
void ENGINE_FLIGHT() {
ENGINE.write( 180 );
}
void ENGINE_STOP() {
ENGINE.detach();
}
void START_SOUND() {
tone(13, 1046, 250);
delay( 1000 );
tone(13, 1046, 250);
delay( 300 );
tone(13, 1046, 250);
delay( 300 );
tone(13, 1046, 250);
delay( 1300 );
tone(13, 1046, 200);
delay( 200 );
tone(13, 1175, 200);
delay( 200 );
tone(13, 1318, 200);
delay( 200 );
}[/code]
下面附件是开源文件,包括了Arduino的.ino文件,项目的完整论文.doc,还有Altium Design的原理图文件.SchDoc和加上了注释的原理图图片。论文写得非常细心,建议有兴趣的朋友好好看看。
由于我本人也很讨厌在网上好不容易找到的资源又要注册又要回复有些还要给钱才能下(特别是某UDN网你们都懂得)
所以下载权限不设限制。不过还是希望大家喜欢的话顶一顶~
开源万岁!本项目基于CC协议开源,转发请署名注明出处,禁止商业用途。极客工坊首发。
本人是摄影摄像爱好者,也喜欢搞HIFI耳机,目前在校就读嵌入式专业,同时服务于国内2个音频产品厂商。
相同兴趣的同学欢迎找我聊天吹水~
个人LOFTER网站:Ultrady.cn
本系列帖子的特色,精细的视频制作~
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|