极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 27629|回复: 18

【原创软硬开源】民航标准灯光系统模型(单片机课程考查设计)

[复制链接]
发表于 2015-6-24 10:27:49 | 显示全部楼层 |阅读模式
本帖最后由 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
回复

使用道具 举报

发表于 2015-6-24 12:28:20 | 显示全部楼层
赞,这应该是一架空客的飞机,因为波音的飞机都是单闪。
回复 支持 反对

使用道具 举报

发表于 2015-6-24 13:38:07 | 显示全部楼层
                  空客A380
回复 支持 反对

使用道具 举报

发表于 2015-6-24 13:38:27 | 显示全部楼层
                 挺逼真的
回复 支持 反对

使用道具 举报

发表于 2015-6-24 15:55:31 | 显示全部楼层
zhichi支持原创,赞,虽然我不懂
回复 支持 反对

使用道具 举报

发表于 2015-6-24 17:17:52 | 显示全部楼层
指示灯如果这样设计的话, 晚上航拍 会不会被飞行员认为是真机. 弱弱的问下 VideoStudio 好用不?
回复 支持 反对

使用道具 举报

发表于 2015-6-24 19:09:58 | 显示全部楼层
我爱回帖,赞楼主
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-24 20:36:44 | 显示全部楼层
davidce 发表于 2015-6-24 12:28
赞,这应该是一架空客的飞机,因为波音的飞机都是单闪。

红色的BEACON灯不同机型是不一样哒~我没有参考具体的机型,只是大概实现了这样的视觉效果~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-24 20:37:13 | 显示全部楼层
帕米 发表于 2015-6-24 17:17
指示灯如果这样设计的话, 晚上航拍 会不会被飞行员认为是真机. 弱弱的问下 VideoStudio 好用不?

比Adobe的高端玩意方便,剪片特别快。平时就用它
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-24 20:37:32 | 显示全部楼层
ianon 发表于 2015-6-24 15:55
zhichi支持原创,赞,虽然我不懂

感谢支持!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-24 20:38:07 | 显示全部楼层
Yummy0211 发表于 2015-6-24 19:09
我爱回帖,赞楼主

回复 支持 反对

使用道具 举报

发表于 2015-6-24 21:01:01 | 显示全部楼层
Ultrady 发表于 2015-6-24 20:36
红色的BEACON灯不同机型是不一样哒~我没有参考具体的机型,只是大概实现了这样的视觉效果~

我说的是机翼上的白灯
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-24 21:41:08 | 显示全部楼层
davidce 发表于 2015-6-24 21:01
我说的是机翼上的白灯

噢噢。高亮白色防撞灯很多飞机都是3颗。我偷懒了没有分开控制,其实三颗不是同时闪的
回复 支持 反对

使用道具 举报

发表于 2015-6-25 07:33:49 | 显示全部楼层
牛逼,学习了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-25 13:22:03 | 显示全部楼层
Cupid 发表于 2015-6-25 07:33
牛逼,学习了
  1. :lol:lol:lol
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 23:39 , Processed in 0.055865 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表