TAIJIUINO DUE控制LED太极图-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9385|回复: 11

TAIJIUINO DUE控制LED太极图

[复制链接]
发表于 2012-12-26 17:10 | 显示全部楼层 |阅读模式
TAIJIUINO DUE

TAIJIUINO DUE

TAIJIUINO DUE

TAIJI DIAGRAM LED BOARD

TAIJI DIAGRAM LEDBOARD

TAIJI DIAGRAM LEDBOARD


动态扫描控制太极图样LED灯,实现30级可调亮度,通过DUE native USB模拟的串口发送数据控制太极图图样(1:亮度加;2:亮度减;3/4:切换图样),仅实现4个简单图样。
[mw_shl_code=c,true]uint32_t taiji[76]={
  /** circle */
  0, 14, 15, 16, 17, 18, 19, 20, 21, 22,
  23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
  33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
  43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
  53, 69, 68, 67, 71, 70,  72, 13, 12, 11,
  10,  9,  8,  7,  6,  5,  4,  3,  2,  1,
  /** arc */
  54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
  64, 65, 66, 74,
  /** eye */
  76,  //SCLK
  75,  //MOSI
};
unsigned char taiji_pos[76]={
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1,
};

unsigned long time_cur;
unsigned long time_last;
unsigned int i;
static unsigned char taiji_off_cnt;
static unsigned char taiji_cnt;
unsigned char taiji_contrast;
#define TAIJI_CONTRAST        1

unsigned sys_contrast;
unsigned sys_pattern_num;
void taiji_init(unsigned char contrast)
{
  unsigned char i;
  time_last = millis();
  for(i=0; i<76; i++){
    pinMode(taiji, OUTPUT);
    digitalWrite(taiji, HIGH);
  }
  taiji_contrast = contrast;
  taiji_cnt = 0;
  taiji_off_cnt = 76 - taiji_contrast;
}

void taiji_scan(void)
{
  for(i=0;i<taiji_contrast;i++){
    taiji_off_cnt++;
    if(taiji_off_cnt==76){
      taiji_off_cnt = 0;
    }
    digitalWrite(taiji[taiji_off_cnt], HIGH);
  }
  for(i=0;i<taiji_contrast;i++){
    taiji_cnt++;
    if(taiji_cnt == 76){
      taiji_cnt = 0;
    }
    if(taiji_pos[taiji_cnt]){
      digitalWrite(taiji[taiji_cnt], LOW);
    }
  }
  //  delay(100);
}

void taiji_pattern_init(unsigned char num)
{
  unsigned char i;
  switch(num){
  case 0:
    for(i=0; i<60; i++){
      taiji_pos = 1;
    }
    for(i=60; i<76; i++){
      taiji_pos = 1;
    }
    break;
  case 1:
    for(i=0; i<60; i++){
      taiji_pos = 1;
    }
    for(i=60; i<76; i++){
      taiji_pos = 0;
    }
    break;
  case 2:
    for(i=0; i<60; i++){
      taiji_pos = 0;
    }
    for(i=60; i<76; i++){
      taiji_pos = 1;
    }
    break;
   case 3:
    for(i=0; i<60; i++){
      if(i%2){
        taiji_pos = 0;
      }else{
        taiji_pos = 1;
      }
    }
    for(i=60; i<76; i++){
      taiji_pos = 1;
    }
    break;
    case 4:
    for(i=0; i<60; i++){
      if(i%2){
        taiji_pos = 1;
      }else{
        taiji_pos = 0;
      }
    }
    for(i=60; i<76; i++){
      taiji_pos = 1;
    }
    break;
  }
}

void setup(void)
{
  SerialUSB.begin(9600);
  sys_contrast = TAIJI_CONTRAST;
  taiji_init(TAIJI_CONTRAST);
  sys_pattern_num = 0;
}

void loop(void)
{
  taiji_scan();
  if(SerialUSB.available()){
    switch(SerialUSB.read()){
    case '1':
      if(sys_contrast == 30){
        break;
      }
      sys_contrast++;
      taiji_init(sys_contrast);
      SerialUSB.write("Level:");
      SerialUSB.println(sys_contrast,DEC);
      break;
    case '2':
      if(sys_contrast == 1){
        break;
      }
      sys_contrast--;
      taiji_init(sys_contrast);
      SerialUSB.write("Level:");
      SerialUSB.println(sys_contrast,DEC);
      break;
    case '3':
      if(sys_contrast == 30){
        break;
      }
      sys_pattern_num++;
      taiji_pattern_init(sys_pattern_num);
      SerialUSB.write("Pattern:");
      SerialUSB.println(sys_pattern_num,DEC);
      break;
    case '4':
      if(sys_pattern_num == 0){
        break;
      }
      sys_pattern_num--;
      taiji_pattern_init(sys_pattern_num);
      SerialUSB.write("Pattern:");
      SerialUSB.println(sys_pattern_num,DEC);
      break;
    }
  }
}

[/mw_shl_code]
 楼主| 发表于 2012-12-26 18:19 | 显示全部楼层
taijidiag2.jpg
发表于 2012-12-27 15:48 | 显示全部楼层
支持你!
发表于 2012-12-27 17:07 | 显示全部楼层
这是什么板?
 楼主| 发表于 2012-12-27 17:42 | 显示全部楼层
阿福 发表于 2012-12-27 15:48
支持你!

非常感谢
 楼主| 发表于 2012-12-27 17:44 | 显示全部楼层
hihendry 发表于 2012-12-27 17:07
这是什么板?

根据名字淘宝上面可以搜到,ArduinoDUE衍生板
发表于 2012-12-28 09:12 | 显示全部楼层
这个很有创意哦!
发表于 2012-12-28 10:57 | 显示全部楼层
感觉像中国厂商山寨的.......
 楼主| 发表于 2012-12-31 16:16 | 显示全部楼层
ibh4 发表于 2012-12-28 10:57
感觉像中国厂商山寨的.......

汗了。的确是山寨版。
做的主要改动是:
1.引出了一些官方没有引出的IO引脚
2.删掉了Atmega16U2,并把Atmega16U2独立成模块,这么做的主要目的是要做一个无线串口模块与TaijiUino做无线串口通信,并进行无线烧录。
TaijiUinoDue的无线烧写功能已经实现,元旦后推出敬请关注。
 楼主| 发表于 2012-12-31 16:18 | 显示全部楼层
Randy 发表于 2012-12-28 09:12
这个很有创意哦!

本来就想做一个灯板拿来测板,就画了个图形出来
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-27 22:59 , Processed in 0.082685 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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