查看: 28094|回复: 23

NO.12 基于Arduino的穿戴式LED灯条表演服

[复制链接]

该用户从未签到

发表于 2013-6-25 22:24 | 显示全部楼层 |阅读模式
本帖最后由 syl312 于 2013-7-10 10:36 编辑

演示视频:附上我们学生节时的表演视频,最终的效果就是如下了


项目设计初衷:来自美国达人秀的反重力团队的表演光影舞,希望制作多套这样的衣服来在学生节上进行表演。

硬件结构示意图:如下图,其中灯条用LED来表示。
LEDCostumeHardware.PNG
简要说明:图中绿色的就是常见的电机控制板,当时时间紧,直接采用现有的电机控制板来控制LED灯条,因为LED灯条需要12V供电。同时电机控制板上已经有5V的输出,所以实际中不需要上图的5V电池,直接用12V供电就行。

程序源代码(其实比较简单):

kittenblock中小学创客名师推荐的图形化编程软件

#define LEG 13
#define BODY 12
#define LARM 11
#define RARM 10
#define CHESTH 9
#define CHESTX 8

#define NEXT 7

int count=0;
int i=0;

void setup() { 
  pinMode(13, OUTPUT);     
  pinMode(12, OUTPUT);     
  pinMode(11, OUTPUT);     
  pinMode(10, OUTPUT);     
  pinMode(9, OUTPUT);     
  pinMode(8, OUTPUT); 
  pinMode(5,OUTPUT);
  pinMode(7,INPUT_PULLUP);
  Show(0);
}

void loop() {
  while(true)
  {
    if(isBTNNEXT())  
    {
      i++;
      Show(i);
      delay(1000);
    }    
  }
}

boolean isBTNNEXT(){
  int sta=10;//usual status is HIGH,turns LOW when button press
  for(int j=0;j<10;j++)
  {
    sta=sta-digitalRead(NEXT);
  }

  if(sta>=8)
    return true;
  else
    return false;
}

void HeartBlink(int time)
{
  digitalWrite(CHESTH,HIGH);
  delay(time);
  digitalWrite(CHESTH,LOW);
}

void Show(int part)
{
  switch (part)
  {
    case 0:
    {
      allLow();
    }
    break;
    case 1:
    {
      for(int j=10;j<=13;j++)
        digitalWrite(j,HIGH);
      delay(100);
      for(int j=10;j<=13;j++)
          digitalWrite(j,LOW);
      delay(100);

      for(int j=10;j<=13;j++)
        digitalWrite(j,HIGH);
      delay(100);
      for(int j=10;j<=13;j++)
          digitalWrite(j,LOW);
      delay(100);

      for(int j=10;j<=13;j++)
        digitalWrite(j,HIGH);
      delay(100);
      for(int j=10;j<=13;j++)
          digitalWrite(j,LOW);
      delay(100);

      for(int j=10;j<=13;j++)
        digitalWrite(j,HIGH);
      delay(100);

      digitalWrite(CHESTH,HIGH);
      delay(100);
      digitalWrite(CHESTH,LOW);
      delay(100);
      digitalWrite(CHESTH,HIGH);
      delay(100);
      digitalWrite(CHESTH,LOW);
      delay(100);

      delay(700);

      digitalWrite(CHESTH,HIGH);
      delay(100);
      digitalWrite(CHESTH,LOW);
      delay(100);
      digitalWrite(CHESTH,HIGH);
      delay(100);
      digitalWrite(CHESTH,LOW);
      delay(100);

      delay(700);

      digitalWrite(CHESTH,HIGH);
      delay(100);
      digitalWrite(CHESTH,LOW);
      delay(100);
      digitalWrite(CHESTH,HIGH);
      delay(100);
      digitalWrite(CHESTH,LOW);
      delay(100);

      delay(700);

      digitalWrite(CHESTH,HIGH);
      delay(100);
      digitalWrite(CHESTH,LOW);
      delay(100);
      digitalWrite(CHESTH,HIGH);
      delay(100);
      digitalWrite(CHESTH,LOW);
      delay(100);

      delay(700);

      digitalWrite(CHESTH,HIGH);
      delay(100);
      digitalWrite(CHESTH,LOW);
      delay(100);
      digitalWrite(CHESTH,HIGH);
      delay(100);
      digitalWrite(CHESTH,LOW);
      delay(100);

      delay(700);

      digitalWrite(CHESTH,HIGH);
      delay(100);
      digitalWrite(CHESTH,LOW);
      delay(100);
      digitalWrite(CHESTH,HIGH);
      delay(100);
      digitalWrite(CHESTH,LOW);
      delay(100);

      delay(700);

      digitalWrite(CHESTH,HIGH);
      delay(100);
    }
    break;

    case 2:
    {
      allLow();
    }
    break;

    case 3:
    {
      for(int j=9;j<=13;j++)
        digitalWrite(j,HIGH);
      delay(100);
      for(int j=9;j<=13;j++)
          digitalWrite(j,LOW);
      delay(100);

      for(int j=9;j<=13;j++)
        digitalWrite(j,HIGH);
      delay(100);
      for(int j=9;j<=13;j++)
          digitalWrite(j,LOW);
      delay(100);

      for(int j=9;j<=13;j++)
        digitalWrite(j,HIGH);
      delay(100);
      for(int j=9;j<=13;j++)
          digitalWrite(j,LOW);
      delay(100);

      for(int j=9;j<=13;j++)
        digitalWrite(j,HIGH);
      delay(100);
      for(int j=9;j<=13;j++)
          digitalWrite(j,LOW);
      delay(100);

      allHigh();
    }
    break;

    case 4:
    {
      allLow();
    }
    break;

    case 5:
    {
      allHigh();
    }
    break;

    case 6:
    {
      digitalWrite(LEG,LOW);
    }
    break;

    case 7:
    {
      allHigh();
    }
    break;

    case 8:
    {
      allLow();
    }
    break;

    case 9:
    {
      digitalWrite(RARM,HIGH);
    }
    break;

    case 10:
    {
      allLow();
    }
    break;

    case 11:
    {
      allHigh();
    }
    break;

    case 12:
    {
      allLow();
    }
    break;
  }
    if(part== 13)
    {
      allHigh();
      digitalWrite(CHESTH,LOW);
      digitalWrite(CHESTX,HIGH);
    }

    if(part==14);
    {
      allLow();
    }

    switch(part){
      case 0: allLow();
      break;
      case 1: allHigh();
      break;
      case 2: allLow();
      break;
      case 3: allHigh();
      break;
      case 4: allLow();
      break;
      case 5: allHigh();
      break;
      case 6: 
      {
        allHigh();
        digitalWrite(LEG,LOW);
      }
      break;
      case 7: allHigh();
      break;
      case 8: allLow();
      break;
      case 9: digitalWrite(RARM,HIGH);
      break;
      case 10: allLow();
      break;
      case 11: allHigh();
      break;
      case 12: allLow();
      break;
      case 13: 
      {
        allHigh();
        digitalWrite(CHESTH,LOW);
        digitalWrite(CHESTX,HIGH);
      }
      break;
      case 14: allLow();
      break;
    }
}

void allHigh()
{
  for(int j=9;j<=13;j++)
    digitalWrite(j,HIGH);
}


void allLow()
{
  for(int j=8;j<=13;j++)
    digitalWrite(j,LOW);
}

演示视频:附上我们学生节时的表演视频,最终的效果就是如下了
学生节精九一节目!小明的逆袭!技术宅的逆袭到来!

因为演完基本把东西都拆了,实在没办法把这个ID等放进去。我找了一下只剩下超级玛丽那里最后的旗子了,就拍了个照片,如下:
IMG_20130625_220021~1.jpg IMG_20130625_220046~1.jpg


最后希望诸位多多支持投票哈!!有什么想法欢迎交流!
多谢多谢!!





  • TA的每日心情
    开心
    2015-12-30 11:43
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2013-6-26 10:22 | 显示全部楼层
    视频节目很有意思!
  • TA的每日心情
    开心
    2015-12-30 11:43
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2013-6-26 10:23 | 显示全部楼层
    妹子的呼喊声也响亮啊~
    哈哈哈~

    该用户从未签到

    发表于 2013-6-26 10:51 | 显示全部楼层
    挺不错的              

    该用户从未签到

     楼主| 发表于 2013-6-26 12:54 | 显示全部楼层
    nust_奔跑 发表于 2013-6-26 10:23
    妹子的呼喊声也响亮啊~
    哈哈哈~

    哈,背景的妹子声音是我媳妇哈~~

    该用户从未签到

     楼主| 发表于 2013-6-26 13:01 | 显示全部楼层
    海南大学7栋 发表于 2013-6-26 10:51
    挺不错的

    多谢支持哈~~~
  • TA的每日心情
    擦汗
    2019-1-26 16:31
  • 签到天数: 446 天

    [LV.9]以坛为家II

    发表于 2013-6-26 17:54 | 显示全部楼层
    好奇表演人员穿好的样子。{:soso_e113:}
    PY让世界更美好~
  • TA的每日心情
    开心
    2015-12-30 11:43
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2013-6-27 09:19 | 显示全部楼层
    syl312 发表于 2013-6-26 17:54
    好奇表演人员穿好的样子。

    开灯应该比较丑~
    关灯比较漂亮~
  • TA的每日心情
    开心
    2016-6-30 15:05
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2013-7-3 10:23 | 显示全部楼层
    动手能力好,创意好,表演好!

    该用户从未签到

    发表于 2013-9-7 22:33 | 显示全部楼层
    我们马上要有艺术节了不知道可不可以借用楼主的创意?
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    AT固件无法正常使用
    AT固件无法正常使用
    按照文档烧入AT固件后,串口(9600)输出如下: 发送AT指令没有反应。
    Arduino MEGA 与UNO 通过nRF24L模块通讯
    Arduino MEGA 与UNO 通过n
    之前在深水宝很“实惠”的店铺买了一些原件,随手砍了esp8266以及nRF24L*3 因为缺
    数字传感器与模拟传感器的使用
    数字传感器与模拟传感器的
    很多新人问,如何写XX传感器的驱动,这里说说简单只需要读取一个数字信号或者模拟信号
    基于Esp8266的点阵时钟
    基于Esp8266的点阵时钟
    芯片是ESP8266 12F 配合点阵单元板(64*32,单色),实现自动对时,天气预报,农历,
    做个遥控玩具
    做个遥控玩具
    现在我想做个手工,想用这个当5V马达+5V灯光+5V音乐的遥控器 可以实现吗?还需要买Ar
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表