极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10569|回复: 3

这是追求极致还是死磕?

[复制链接]
发表于 2019-6-2 09:41:46 | 显示全部楼层 |阅读模式
2019-5-15版本一:


2019-6-2版本二:


废话不多说,源码如下
  1. /*
  2. 2019 © Arduino_Maker
  3. */
  4. #include <TimerOne.h>

  5. byte m = 0;   
  6. byte Pvalue = 0;            
  7. boolean BreatheFlag = true;   
  8. byte ModeNumber = 0;         
  9. //byte oldModeNumber = 0;      
  10. boolean Touchflag = false;   
  11. unsigned int Time1 = 0;      
  12. unsigned int timex = 0;      

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

  31. void Timer2Interrupt(void){
  32.   if((analogRead(A6) < 100)  && (Touchflag==false)){
  33.     Touchflag = true;
  34.     Time1 = millis();
  35.     ModeNumber = ModeNumber + 1;
  36.     if(ModeNumber == 2) m = 0;
  37.     if(ModeNumber == 7) ModeNumber = 0;
  38.     //Serial.println(ModeNumber);
  39.     }
  40.     else  if((analogRead(A6) > 100)  && (Touchflag==true)){
  41.       Touchflag = false;
  42.       timex = millis() - Time1;
  43.       if(timex > 3000)  ModeNumber = 0;
  44.       }
  45.   }

  46. void loop() {
  47.   
  48.   switch(ModeNumber){
  49.     case 0:   Mode0();      break;
  50.     case 1:   Mode1(10);    break;
  51.     case 2:   Mode2(100);   break;
  52.     case 3:   Mode3(100);   break;
  53.     case 4:   Mode4(100);   break;
  54.     case 5:   Mode5(10);    break;
  55.     case 6:   Mode6(60);    break;
  56.     default:  break;
  57.     }
  58. }

  59. void Mode0(void)
  60. {
  61.   Ring_Run(0,false);
  62.   Ring_Run(1,false);
  63.   Ring_Run(2,false);
  64.   Ring_Run(3,false);
  65.   Ring_Run(4,false);
  66.   }
  67. void Mode1(int Mytime)
  68. {
  69.   analogWrite(Ring[4][0],Pvalue);
  70.   analogWrite(Ring[4][1],Pvalue);
  71.   analogWrite(Ring[4][2],Pvalue);
  72.   if(BreatheFlag==true){
  73.     Pvalue = Pvalue + 1;
  74.     if(Pvalue == 255) BreatheFlag = false;
  75.     }
  76.   if(BreatheFlag==false){
  77.     Pvalue = Pvalue - 1;
  78.     if(Pvalue == 0) BreatheFlag = true;
  79.     }
  80.   delay(Mytime);
  81.   }
  82. void Mode2(int Mytime)
  83. {
  84.   switch(m){
  85.     case 0:   Ring_Run(0,true); break;
  86.     case 1:   delay(4*Mytime);  break;
  87.     case 2:   Ring_Run(1,true); break;
  88.     case 3:   delay(3*Mytime);  break;
  89.     case 4:   Ring_Run(2,true); break;
  90.     case 5:   delay(2*Mytime);  break;
  91.     case 6:   Ring_Run(3,true); break;
  92.     case 7:   delay(Mytime);    break;
  93.     case 8:   Ring_Run(4,true); break;
  94.     case 9:   delay(4*Mytime);  break;
  95.     case 10:  delay(4*Mytime);  break;
  96.     case 11:  Ring_Run(4,false);break;
  97.     case 12:  delay(Mytime);    break;
  98.     case 13:  Ring_Run(3,false);break;
  99.     case 14:  delay(2*Mytime);  break;
  100.     case 15:  Ring_Run(2,false);break;
  101.     case 16:  delay(3*Mytime);  break;
  102.     case 17:  Ring_Run(1,false);break;
  103.     case 18:  delay(4*Mytime);  break;
  104.     case 19:  Ring_Run(0,false);break;
  105.     case 20:  delay(4*Mytime);  break;
  106.     case 21:  delay(4*Mytime);  break;
  107.     default: break;
  108.     }
  109.     m = m + 1;
  110.     if(m == 22) m = 0;
  111.   }
  112. void Mode3(int Mytime)
  113. {
  114.   Ring_Run(0,true);
  115.   Ring_Run(1,true);
  116.   Ring_Run(2,true);
  117.   Ring_Run(3,true);
  118.   Ring_Run(4,true);
  119.   delay(Mytime);
  120.   Ring_Run(0,false);
  121.   Ring_Run(1,false);
  122.   Ring_Run(2,false);
  123.   Ring_Run(3,false);
  124.   Ring_Run(4,false);
  125.   delay(Mytime);
  126.   }
  127. void Mode4(int Mytime)
  128. {
  129.   Leaf_Run(2,false);Leaf_Run(0,true);delay(Mytime);
  130.   Leaf_Run(0,false);Leaf_Run(1,true);delay(Mytime);
  131.   Leaf_Run(1,false);Leaf_Run(2,true);delay(Mytime);  
  132.   }
  133. void Mode5(int Mytime)
  134. {
  135.   digitalWrite(Ring[0][2],LOW);digitalWrite(Ring[0][0],HIGH);delay(Mytime);
  136.   digitalWrite(Ring[0][0],LOW);digitalWrite(Ring[0][1],HIGH);delay(Mytime);
  137.   digitalWrite(Ring[0][1],LOW);digitalWrite(Ring[0][2],HIGH);delay(Mytime);
  138.   digitalWrite(Ring[0][2],LOW);
  139.   digitalWrite(Ring[1][1],LOW);digitalWrite(Ring[1][0],HIGH);delay(Mytime);
  140.   digitalWrite(Ring[1][0],LOW);digitalWrite(Ring[1][2],HIGH);delay(Mytime);
  141.   digitalWrite(Ring[1][2],LOW);digitalWrite(Ring[1][1],HIGH);delay(Mytime);  
  142.   digitalWrite(Ring[1][1],LOW);
  143.   digitalWrite(Ring[2][4],LOW);digitalWrite(Ring[2][5],LOW);digitalWrite(Ring[2][2],HIGH);digitalWrite(Ring[2][3],HIGH);delay(Mytime);
  144.   digitalWrite(Ring[2][2],LOW);digitalWrite(Ring[2][3],LOW);digitalWrite(Ring[2][0],HIGH);digitalWrite(Ring[2][1],HIGH);delay(Mytime);
  145.   digitalWrite(Ring[2][0],LOW);digitalWrite(Ring[2][1],LOW);digitalWrite(Ring[2][4],HIGH);digitalWrite(Ring[2][5],HIGH);delay(Mytime);
  146.   digitalWrite(Ring[2][4],LOW);digitalWrite(Ring[2][5],LOW);
  147.   digitalWrite(Ring[3][2],LOW);digitalWrite(Ring[3][0],HIGH);delay(Mytime);
  148.   digitalWrite(Ring[3][0],LOW);digitalWrite(Ring[3][1],HIGH);delay(Mytime);
  149.   digitalWrite(Ring[3][1],LOW);digitalWrite(Ring[3][2],HIGH);delay(Mytime);
  150.   digitalWrite(Ring[3][2],LOW);
  151.   digitalWrite(Ring[4][2],LOW);digitalWrite(Ring[4][0],HIGH);delay(Mytime);
  152.   digitalWrite(Ring[4][0],LOW);digitalWrite(Ring[4][1],HIGH);delay(Mytime);
  153.   digitalWrite(Ring[4][1],LOW);digitalWrite(Ring[4][2],HIGH);delay(Mytime);
  154.   digitalWrite(Ring[4][2],LOW);
  155.   }
  156. void Mode6(int Mytime)
  157. {
  158.   Ring_Run(0,true);
  159.   Ring_Run(4,true);
  160.   digitalWrite(Ring[2][4],LOW);digitalWrite(Ring[2][3],HIGH);delay(Mytime);
  161.   digitalWrite(Ring[2][3],LOW);digitalWrite(Ring[3][1],HIGH);delay(Mytime);
  162.   digitalWrite(Ring[3][1],LOW);digitalWrite(Ring[2][2],HIGH);delay(Mytime);
  163.   digitalWrite(Ring[2][2],LOW);digitalWrite(Ring[2][1],HIGH);delay(Mytime);
  164.   digitalWrite(Ring[2][1],LOW);digitalWrite(Ring[3][0],HIGH);delay(Mytime);
  165.   digitalWrite(Ring[3][0],LOW);digitalWrite(Ring[2][0],HIGH);delay(Mytime);
  166.   digitalWrite(Ring[2][0],LOW);digitalWrite(Ring[2][5],HIGH);delay(Mytime);
  167.   digitalWrite(Ring[2][5],LOW);digitalWrite(Ring[3][2],HIGH);delay(Mytime);
  168.   digitalWrite(Ring[3][2],LOW);digitalWrite(Ring[2][4],HIGH);delay(Mytime);
  169.   
  170.   }
  171. void Ring_Run(byte n,boolean k)
  172. {
  173.   if(k==true)
  174.     switch(n){
  175.       case 0:
  176.         for(int i = 0;i < 3;i++)  digitalWrite(Ring[0][i],HIGH);  break;
  177.       case 1:
  178.         for(int i = 0;i < 3;i++)  digitalWrite(Ring[1][i],HIGH);  break;
  179.       case 2:
  180.         for(int i = 0;i < 6;i++)  digitalWrite(Ring[2][i],HIGH);  break;
  181.       case 3:
  182.         for(int i = 0;i < 3;i++)  digitalWrite(Ring[3][i],HIGH);  break;
  183.       case 4:
  184.         for(int i = 0;i < 3;i++)  digitalWrite(Ring[4][i],HIGH);  break;
  185.       default : break;
  186.       }
  187.     else  switch(n){
  188.       case 0:
  189.         for(int i = 0;i < 3;i++)  digitalWrite(Ring[0][i],LOW);  break;
  190.       case 1:
  191.         for(int i = 0;i < 3;i++)  digitalWrite(Ring[1][i],LOW);  break;
  192.       case 2:
  193.         for(int i = 0;i < 6;i++)  digitalWrite(Ring[2][i],LOW);  break;
  194.       case 3:
  195.         for(int i = 0;i < 3;i++)  digitalWrite(Ring[3][i],LOW);  break;
  196.       case 4:
  197.         for(int i = 0;i < 3;i++)  digitalWrite(Ring[4][i],LOW);  break;
  198.       default : break;
  199.       }
  200.   }
  201. void Leaf_Run(byte n,boolean k)
  202. {
  203.   if(k==true)
  204.     switch(n){
  205.       case 0:
  206.         digitalWrite(Ring[1][0],HIGH);
  207.         digitalWrite(Ring[2][0],HIGH);
  208.         digitalWrite(Ring[2][1],HIGH);
  209.         digitalWrite(Ring[3][0],HIGH);
  210.         digitalWrite(Ring[4][0],HIGH);
  211.         break;
  212.       case 1:
  213.         digitalWrite(Ring[1][2],HIGH);
  214.         digitalWrite(Ring[2][5],HIGH);
  215.         digitalWrite(Ring[2][4],HIGH);
  216.         digitalWrite(Ring[3][2],HIGH);
  217.         digitalWrite(Ring[4][2],HIGH);
  218.         break;
  219.       case 2:
  220.         digitalWrite(Ring[1][1],HIGH);
  221.         digitalWrite(Ring[2][2],HIGH);
  222.         digitalWrite(Ring[2][3],HIGH);
  223.         digitalWrite(Ring[3][1],HIGH);
  224.         digitalWrite(Ring[4][1],HIGH);
  225.         break;
  226.       default: break;
  227.       }
  228.     else switch(n){
  229.       case 0:
  230.         digitalWrite(Ring[1][0],LOW);
  231.         digitalWrite(Ring[2][0],LOW);
  232.         digitalWrite(Ring[2][1],LOW);
  233.         digitalWrite(Ring[3][0],LOW);
  234.         digitalWrite(Ring[4][0],LOW);
  235.         break;
  236.       case 1:
  237.         digitalWrite(Ring[1][2],LOW);
  238.         digitalWrite(Ring[2][5],LOW);
  239.         digitalWrite(Ring[2][4],LOW);
  240.         digitalWrite(Ring[3][2],LOW);
  241.         digitalWrite(Ring[4][2],LOW);
  242.         break;
  243.       case 2:
  244.         digitalWrite(Ring[1][1],LOW);
  245.         digitalWrite(Ring[2][2],LOW);
  246.         digitalWrite(Ring[2][3],LOW);
  247.         digitalWrite(Ring[3][1],LOW);
  248.         digitalWrite(Ring[4][1],LOW);
  249.         break;
  250.       default: break;
  251.       }
  252.   }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2019-6-2 13:58:44 | 显示全部楼层
所以你这货究竟是个啥?代码一行注释都没有
回复 支持 反对

使用道具 举报

发表于 2019-9-23 15:00:49 | 显示全部楼层
楼主 你好!这个项目的资料可以分享一下吗?就是看着您做的很有创意,效果也蛮不错的。电子小白的我想通过一些有趣的,需要自己动手做的项目学习学习,所以想请问一下这个作品资料能分享吗([email protected])?非常感谢!
回复 支持 反对

使用道具 举报

发表于 2019-9-26 18:33:13 | 显示全部楼层
看外形还以为是一个六轴飞行器,牛x大了,看视频才知道是灯……
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 09:03 , Processed in 0.047398 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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