![39d9ae9fdeeaeefd88bfb991d7bc443e.png](https://i-blog.csdnimg.cn/blog_migrate/ce40b95932dc54e00cf4940dfae07105.png)
小海狮们大家好,又到了我们的每周一推时间。今天主题是旋转LED灯的原理,让我们一起来看看吧!
首先有请我们的LED灯登场!
![5a71eb3a2423b54802772593d1535abd.gif](https://i-blog.csdnimg.cn/blog_migrate/1d2c065e4f897a2419bd922c9cdbefc5.gif)
![5a71eb3a2423b54802772593d1535abd.gif](https://i-blog.csdnimg.cn/blog_migrate/1d2c065e4f897a2419bd922c9cdbefc5.gif)
![308d1659a4ad5c1a00525784d21604c3.png](https://i-blog.csdnimg.cn/blog_migrate/0b2c05f716a9c7322824851e90bb609e.jpeg)
![5a71eb3a2423b54802772593d1535abd.gif](https://i-blog.csdnimg.cn/blog_migrate/1d2c065e4f897a2419bd922c9cdbefc5.gif)
![5a71eb3a2423b54802772593d1535abd.gif](https://i-blog.csdnimg.cn/blog_migrate/1d2c065e4f897a2419bd922c9cdbefc5.gif)
![35a7d72f91c67287d40eadd6e944643d.gif](https://i-blog.csdnimg.cn/blog_migrate/af94824f9f884a279ec0cf64a8aef184.gif)
指尖陀螺旋转LED灯
![e6880364eb28cfc8e5e41193ab0e9ceb.png](https://i-blog.csdnimg.cn/blog_migrate/54f4ae4b139ccc5497e0fcd77b8d3f5f.jpeg)
如果你在网上用google搜索“POV led”一词(POV即persistancd of vision),会找到世界各地的各种LED旋转屏的制作介绍。那些摇晃出的空中图案,漂浮在车轮上的动画,以及形态各异的时钟,一定给你留下深刻印象。你是否想过自己亲自动手做一个属于你自己的LED旋转屏呢?所有你看到的LED旋转屏的原理说白了就是一个晃动的流水灯。在51单片机最简系统的其中的一个端口P0接上8个LED,就是一个典型的流水灯实验电路。也就是这个样子的。
![335eb52bb76ee2b79ef4b9211f789564.png](https://i-blog.csdnimg.cn/blog_migrate/1cd0e0cd642569e9a753f7c13b9c49f5.jpeg)
那让我们来看一下LED灯的制作过程吧!
Q&AQ1:我们需要哪些材料呢?
首先我们需要一个单片机、一个电机以及LED灯。
Q2:我们搭建硬件需要哪些步骤?
①旋转LED的核心是单片机,首先要根据单片机最小系统图,制作出控制器的最小系统。
②将单片机的P1和P2引脚用导线引出,准备用来控制LED灯。同时将电源的正极用导线引出,作为LED灯的公共端。
③将若干个个LED灯在PCB板上焊成一列,将每个灯的正极连接到一起并连接到单片机的正极的引出线上,把每个灯的负极按从上到下的顺序连接到P1P2端口上。
④找一个结实点的底座,将电机固定好,并在电机的电源线上串上可变电阻,用来调节转速。将制作好的上体固定在电机的底座上就制作完成了。
![491772f52d7b105f9e93b29cf7958348.png](https://i-blog.csdnimg.cn/blog_migrate/bf2342dae816a67db8364bd86416ea2e.jpeg)
电路图真的看起来非常复杂呢。
Q3:我们软件控制需要哪些步骤呢?
接下来是程序部分,这个是比较简单的,大家只需要修改引脚和汉字的代码即可将程序烧录到单片机,让电机转起来就成功了。这里有一个源代码提供给大家,大家快来试试看吧!
下载地址:
![01fbd86121a98c226e25763263e5134b.png](https://i-blog.csdnimg.cn/blog_migrate/57576f62b80053e01e94170945bf83f8.png)
(向上滑动获得代码)
int d = 2;
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(A5, OUTPUT);
}
void loop() {
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(A5, HIGH);
delay(1);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
digitalWrite(A3, LOW);
digitalWrite(A4, LOW);
digitalWrite(A5, LOW);
digitalWrite(3, HIGH);
digitalWrite(6, HIGH);
digitalWrite(A5, HIGH);
delay(1);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
digitalWrite(A3, LOW);
digitalWrite(A4, LOW);
digitalWrite(A5, LOW);
digitalWrite(2, HIGH);
digitalWrite(7, HIGH);
digitalWrite(A5, HIGH);
delay(1);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);