1077浏览
查看: 1077|回复: 6

[项目] 这是追求极致还是死磕?

[复制链接]
2019-5-15版本一:

正面_1_800.jpg
背面_1_800.jpg
2019-6-2版本二:


正面_800.jpg
背面_800.jpg
废话不多说,源码如下
[mw_shl_code=applescript,true]/*
2019 © Arduino_Maker
*/
#include <TimerOne.h>

byte m = 0;   
byte Pvalue = 0;            
boolean BreatheFlag = true;   
byte ModeNumber = 0;         
//byte oldModeNumber = 0;      
boolean Touchflag = false;   
unsigned int Time1 = 0;      
unsigned int timex = 0;      

const byte Ring[5][6]={
                {2,19,13},        
                {9,14,17},        
                {4,8,15,6,10,7},
                {18,16,12},      
                {11,5,3}         
                };
               
void setup() {
  Serial.begin(9600);
  for(int i=0;i<5;i++){
    for(int j=0;Ring[j]!='\0';j++){
      pinMode(Ring[j],OUTPUT);
    }
  }
  Timer1.initialize( 100000 );
  Timer1.attachInterrupt( Timer2Interrupt );
}

void Timer2Interrupt(void){
  if((analogRead(A6) < 100)  && (Touchflag==false)){
    Touchflag = true;
    Time1 = millis();
    ModeNumber = ModeNumber + 1;
    if(ModeNumber == 2) m = 0;
    if(ModeNumber == 7) ModeNumber = 0;
    //Serial.println(ModeNumber);
    }
    else  if((analogRead(A6) > 100)  && (Touchflag==true)){
      Touchflag = false;
      timex = millis() - Time1;
      if(timex > 3000)  ModeNumber = 0;
      }
  }

void loop() {
  
  switch(ModeNumber){
    case 0:   Mode0();      break;
    case 1:   Mode1(10);    break;
    case 2:   Mode2(100);   break;
    case 3:   Mode3(100);   break;
    case 4:   Mode4(100);   break;
    case 5:   Mode5(10);    break;
    case 6:   Mode6(60);    break;
    default:  break;
    }
}

void Mode0(void)
{
  Ring_Run(0,false);
  Ring_Run(1,false);
  Ring_Run(2,false);
  Ring_Run(3,false);
  Ring_Run(4,false);
  }
void Mode1(int Mytime)
{
  analogWrite(Ring[4][0],Pvalue);
  analogWrite(Ring[4][1],Pvalue);
  analogWrite(Ring[4][2],Pvalue);
  if(BreatheFlag==true){
    Pvalue = Pvalue + 1;
    if(Pvalue == 255) BreatheFlag = false;
    }
  if(BreatheFlag==false){
    Pvalue = Pvalue - 1;
    if(Pvalue == 0) BreatheFlag = true;
    }
  delay(Mytime);
  }
void Mode2(int Mytime)
{
  switch(m){
    case 0:   Ring_Run(0,true); break;
    case 1:   delay(4*Mytime);  break;
    case 2:   Ring_Run(1,true); break;
    case 3:   delay(3*Mytime);  break;
    case 4:   Ring_Run(2,true); break;
    case 5:   delay(2*Mytime);  break;
    case 6:   Ring_Run(3,true); break;
    case 7:   delay(Mytime);    break;
    case 8:   Ring_Run(4,true); break;
    case 9:   delay(4*Mytime);  break;
    case 10:  delay(4*Mytime);  break;
    case 11:  Ring_Run(4,false);break;
    case 12:  delay(Mytime);    break;
    case 13:  Ring_Run(3,false);break;
    case 14:  delay(2*Mytime);  break;
    case 15:  Ring_Run(2,false);break;
    case 16:  delay(3*Mytime);  break;
    case 17:  Ring_Run(1,false);break;
    case 18:  delay(4*Mytime);  break;
    case 19:  Ring_Run(0,false);break;
    case 20:  delay(4*Mytime);  break;
    case 21:  delay(4*Mytime);  break;
    default: break;
    }
    m = m + 1;
    if(m == 22) m = 0;
  }
void Mode3(int Mytime)
{
  Ring_Run(0,true);
  Ring_Run(1,true);
  Ring_Run(2,true);
  Ring_Run(3,true);
  Ring_Run(4,true);
  delay(Mytime);
  Ring_Run(0,false);
  Ring_Run(1,false);
  Ring_Run(2,false);
  Ring_Run(3,false);
  Ring_Run(4,false);
  delay(Mytime);
  }
void Mode4(int Mytime)
{
  Leaf_Run(2,false);Leaf_Run(0,true);delay(Mytime);
  Leaf_Run(0,false);Leaf_Run(1,true);delay(Mytime);
  Leaf_Run(1,false);Leaf_Run(2,true);delay(Mytime);  
  }
void Mode5(int Mytime)
{
  digitalWrite(Ring[0][2],LOW);digitalWrite(Ring[0][0],HIGH);delay(Mytime);
  digitalWrite(Ring[0][0],LOW);digitalWrite(Ring[0][1],HIGH);delay(Mytime);
  digitalWrite(Ring[0][1],LOW);digitalWrite(Ring[0][2],HIGH);delay(Mytime);
  digitalWrite(Ring[0][2],LOW);
  digitalWrite(Ring[1][1],LOW);digitalWrite(Ring[1][0],HIGH);delay(Mytime);
  digitalWrite(Ring[1][0],LOW);digitalWrite(Ring[1][2],HIGH);delay(Mytime);
  digitalWrite(Ring[1][2],LOW);digitalWrite(Ring[1][1],HIGH);delay(Mytime);  
  digitalWrite(Ring[1][1],LOW);
  digitalWrite(Ring[2][4],LOW);digitalWrite(Ring[2][5],LOW);digitalWrite(Ring[2][2],HIGH);digitalWrite(Ring[2][3],HIGH);delay(Mytime);
  digitalWrite(Ring[2][2],LOW);digitalWrite(Ring[2][3],LOW);digitalWrite(Ring[2][0],HIGH);digitalWrite(Ring[2][1],HIGH);delay(Mytime);
  digitalWrite(Ring[2][0],LOW);digitalWrite(Ring[2][1],LOW);digitalWrite(Ring[2][4],HIGH);digitalWrite(Ring[2][5],HIGH);delay(Mytime);
  digitalWrite(Ring[2][4],LOW);digitalWrite(Ring[2][5],LOW);
  digitalWrite(Ring[3][2],LOW);digitalWrite(Ring[3][0],HIGH);delay(Mytime);
  digitalWrite(Ring[3][0],LOW);digitalWrite(Ring[3][1],HIGH);delay(Mytime);
  digitalWrite(Ring[3][1],LOW);digitalWrite(Ring[3][2],HIGH);delay(Mytime);
  digitalWrite(Ring[3][2],LOW);
  digitalWrite(Ring[4][2],LOW);digitalWrite(Ring[4][0],HIGH);delay(Mytime);
  digitalWrite(Ring[4][0],LOW);digitalWrite(Ring[4][1],HIGH);delay(Mytime);
  digitalWrite(Ring[4][1],LOW);digitalWrite(Ring[4][2],HIGH);delay(Mytime);
  digitalWrite(Ring[4][2],LOW);
  }
void Mode6(int Mytime)
{
  Ring_Run(0,true);
  Ring_Run(4,true);
  digitalWrite(Ring[2][4],LOW);digitalWrite(Ring[2][3],HIGH);delay(Mytime);
  digitalWrite(Ring[2][3],LOW);digitalWrite(Ring[3][1],HIGH);delay(Mytime);
  digitalWrite(Ring[3][1],LOW);digitalWrite(Ring[2][2],HIGH);delay(Mytime);
  digitalWrite(Ring[2][2],LOW);digitalWrite(Ring[2][1],HIGH);delay(Mytime);
  digitalWrite(Ring[2][1],LOW);digitalWrite(Ring[3][0],HIGH);delay(Mytime);
  digitalWrite(Ring[3][0],LOW);digitalWrite(Ring[2][0],HIGH);delay(Mytime);
  digitalWrite(Ring[2][0],LOW);digitalWrite(Ring[2][5],HIGH);delay(Mytime);
  digitalWrite(Ring[2][5],LOW);digitalWrite(Ring[3][2],HIGH);delay(Mytime);
  digitalWrite(Ring[3][2],LOW);digitalWrite(Ring[2][4],HIGH);delay(Mytime);
  
  }
void Ring_Run(byte n,boolean k)
{
  if(k==true)
    switch(n){
      case 0:
        for(int i = 0;i < 3;i++)  digitalWrite(Ring[0],HIGH);  break;
      case 1:
        for(int i = 0;i < 3;i++)  digitalWrite(Ring[1],HIGH);  break;
      case 2:
        for(int i = 0;i < 6;i++)  digitalWrite(Ring[2],HIGH);  break;
      case 3:
        for(int i = 0;i < 3;i++)  digitalWrite(Ring[3],HIGH);  break;
      case 4:
        for(int i = 0;i < 3;i++)  digitalWrite(Ring[4],HIGH);  break;
      default : break;
      }
    else  switch(n){
      case 0:
        for(int i = 0;i < 3;i++)  digitalWrite(Ring[0],LOW);  break;
      case 1:
        for(int i = 0;i < 3;i++)  digitalWrite(Ring[1],LOW);  break;
      case 2:
        for(int i = 0;i < 6;i++)  digitalWrite(Ring[2],LOW);  break;
      case 3:
        for(int i = 0;i < 3;i++)  digitalWrite(Ring[3],LOW);  break;
      case 4:
        for(int i = 0;i < 3;i++)  digitalWrite(Ring[4],LOW);  break;
      default : break;
      }
  }
void Leaf_Run(byte n,boolean k)
{
  if(k==true)
    switch(n){
      case 0:
        digitalWrite(Ring[1][0],HIGH);
        digitalWrite(Ring[2][0],HIGH);
        digitalWrite(Ring[2][1],HIGH);
        digitalWrite(Ring[3][0],HIGH);
        digitalWrite(Ring[4][0],HIGH);
        break;
      case 1:
        digitalWrite(Ring[1][2],HIGH);
        digitalWrite(Ring[2][5],HIGH);
        digitalWrite(Ring[2][4],HIGH);
        digitalWrite(Ring[3][2],HIGH);
        digitalWrite(Ring[4][2],HIGH);
        break;
      case 2:
        digitalWrite(Ring[1][1],HIGH);
        digitalWrite(Ring[2][2],HIGH);
        digitalWrite(Ring[2][3],HIGH);
        digitalWrite(Ring[3][1],HIGH);
        digitalWrite(Ring[4][1],HIGH);
        break;
      default: break;
      }
    else switch(n){
      case 0:
        digitalWrite(Ring[1][0],LOW);
        digitalWrite(Ring[2][0],LOW);
        digitalWrite(Ring[2][1],LOW);
        digitalWrite(Ring[3][0],LOW);
        digitalWrite(Ring[4][0],LOW);
        break;
      case 1:
        digitalWrite(Ring[1][2],LOW);
        digitalWrite(Ring[2][5],LOW);
        digitalWrite(Ring[2][4],LOW);
        digitalWrite(Ring[3][2],LOW);
        digitalWrite(Ring[4][2],LOW);
        break;
      case 2:
        digitalWrite(Ring[1][1],LOW);
        digitalWrite(Ring[2][2],LOW);
        digitalWrite(Ring[2][3],LOW);
        digitalWrite(Ring[3][1],LOW);
        digitalWrite(Ring[4][1],LOW);
        break;
      default: break;
      }
  }
[/mw_shl_code]


安卓机器人  中级技神

发表于 2019-6-2 19:11:34

神级产品,代码更牛
回复

使用道具 举报

gada888  版主

发表于 2019-6-3 13:39:13

做工精美
回复

使用道具 举报

LANCHUAN  见习技师

发表于 2019-6-3 18:07:17

都是大佬啊
回复

使用道具 举报

螺丝钉yy  初级技师

发表于 2019-6-5 09:33:38

厉害啊,大佬,太炫酷了
回复

使用道具 举报

DFrkl74tPSL  学徒

发表于 2020-3-13 23:16:42

有没有pcb图

回复

使用道具 举报

20060606  高级技匠

发表于 2020-8-6 10:08:43

pcb太好看了
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail