极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1032|回复: 1

用最少I/O直接推動最多LED的方法

[复制链接]
发表于 2019-4-3 11:22:57 | 显示全部楼层 |阅读模式
在LGT群組內 bbsniua 提供了一個很有趣的 用最少I/O直接推動最多LED的方法。
LEDdrivenMethod.JPG
回复

使用道具 举报

 楼主| 发表于 2019-4-3 17:26:27 | 显示全部楼层
一個範例:
LessWireLEDdrivenMethod.JPG
  1. #define D2 2
  2. #define D3 3
  3. #define D4 4
  4. #define D5 5

  5. #define onTime 100

  6. void setup() {
  7.   // put your setup code here, to run once:
  8. LEDallOff();
  9. }

  10. void loop() {
  11.   // put your main code here, to run repeatedly:

  12. LED1On();
  13. delay(onTime);
  14. LEDallOff();
  15. delay(1);

  16. LED2On();
  17. delay(onTime);
  18. LEDallOff();
  19. delay(1);

  20. LED3On();
  21. delay(onTime);
  22. LEDallOff();
  23. delay(1);

  24. LED4On();
  25. delay(onTime);
  26. LEDallOff();
  27. delay(1);

  28. LED5On();
  29. delay(onTime);
  30. LEDallOff();
  31. delay(1);

  32. LED6On();
  33. delay(onTime);
  34. LEDallOff();
  35. delay(1);

  36. LED7On();
  37. delay(onTime);
  38. LEDallOff();
  39. delay(1);

  40. LED8On();
  41. delay(onTime);
  42. LEDallOff();
  43. delay(1);

  44. LED9On();
  45. delay(onTime);
  46. LEDallOff();
  47. delay(1);

  48. LED10On();
  49. delay(onTime);
  50. LEDallOff();
  51. delay(1);

  52. LED11On();
  53. delay(onTime);
  54. LEDallOff();
  55. delay(1);

  56. LED12On();
  57. delay(onTime);
  58. LEDallOff();
  59. delay(1);

  60. }

  61. void LEDallOff(){
  62. pinMode(D2,INPUT);
  63. pinMode(D3,INPUT);
  64. pinMode(D4,INPUT);
  65. pinMode(D5,INPUT);
  66. }

  67. void LED1On(){
  68.   pinMode(D2,OUTPUT);
  69.   pinMode(D3,OUTPUT);
  70.   digitalWrite(D2, HIGH);
  71.   digitalWrite(D3, LOW);
  72. }

  73. void LED2On(){
  74.   pinMode(D2,OUTPUT);
  75.   pinMode(D3,OUTPUT);
  76.   digitalWrite(D3, HIGH);
  77.   digitalWrite(D2, LOW);
  78. }

  79. void LED3On(){
  80.   pinMode(D2,OUTPUT);
  81.   pinMode(D4,OUTPUT);
  82.   digitalWrite(D2, HIGH);
  83.   digitalWrite(D4, LOW);
  84. }

  85. void LED4On(){
  86.   pinMode(D2,OUTPUT);
  87.   pinMode(D4,OUTPUT);
  88.   digitalWrite(D4, HIGH);
  89.   digitalWrite(D2, LOW);
  90. }

  91. void LED5On(){
  92.   pinMode(D2,OUTPUT);
  93.   pinMode(D5,OUTPUT);
  94.   digitalWrite(D2, HIGH);
  95.   digitalWrite(D5, LOW);
  96. }

  97. void LED6On(){
  98.   pinMode(D2,OUTPUT);
  99.   pinMode(D5,OUTPUT);
  100.   digitalWrite(D5, HIGH);
  101.   digitalWrite(D2, LOW);
  102. }

  103. void LED7On(){
  104.   pinMode(D3,OUTPUT);
  105.   pinMode(D4,OUTPUT);
  106.   digitalWrite(D3, HIGH);
  107.   digitalWrite(D4, LOW);
  108. }

  109. void LED8On(){
  110.   pinMode(D3,OUTPUT);
  111.   pinMode(D4,OUTPUT);
  112.   digitalWrite(D4, HIGH);
  113.   digitalWrite(D3, LOW);
  114. }

  115. void LED9On(){
  116.   pinMode(D3,OUTPUT);
  117.   pinMode(D5,OUTPUT);
  118.   digitalWrite(D3, HIGH);
  119.   digitalWrite(D5, LOW);
  120. }

  121. void LED10On(){
  122.   pinMode(D3,OUTPUT);
  123.   pinMode(D5,OUTPUT);
  124.   digitalWrite(D5, HIGH);
  125.   digitalWrite(D3, LOW);
  126. }

  127. void LED11On(){
  128.   pinMode(D4,OUTPUT);
  129.   pinMode(D5,OUTPUT);
  130.   digitalWrite(D4, HIGH);
  131.   digitalWrite(D5, LOW);
  132. }

  133. void LED12On(){
  134.   pinMode(D4,OUTPUT);
  135.   pinMode(D5,OUTPUT);
  136.   digitalWrite(D5, HIGH);
  137.   digitalWrite(D4, LOW);
  138. }

复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2019-8-22 13:25 , Processed in 0.048483 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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