由于要做一个道具,于是想到了用Arduino去控制九个白炽灯。搭完装置、传程序执行、给Arduino供5v、给灯泡供220v电,继电器正常工作,可以按照预料的方式点灯,但是在过一段时间(时间不固定,有时可以完成整个程序、有时不能完成)之后,Arduino会莫名其妙复位,运行重新开始。(如果只给Arduino供电、不给灯泡供220v电,继电器正常工作,运行不会跳出。)
各位小哥哥、小姐姐们,是不是我连线的方式有问题?导致灯泡或继电器的供电有问题?不知道能不能解决,不开心。
整个装置的实物图如下:
整个装置的连接图如下,白炽灯用发光二极管代替一下:
装置的程序如下(个人觉得应该不是程序的问题),程序分为两种,第一段使用vixen控制灯的闪烁、第二段直接控制灯的亮灭:
1.使用vixen3控制: - int A = 2;
- int B = 3;
- int C = 4;
- int D = 5;
- int E = 6;
- int F = 7;
- int H = 8;
- int I = 9;
- int J = 10;
- int i = 0;
- int incomingByte[8];
- void setup()
- {
- Serial.begin(57600);
- pinMode(A, OUTPUT);
- pinMode(B, OUTPUT);
- pinMode(C, OUTPUT);
- pinMode(D, OUTPUT);
- pinMode(E, OUTPUT);
- pinMode(F, OUTPUT);
- pinMode(H, OUTPUT);
- pinMode(I, OUTPUT);
- pinMode(J, OUTPUT);
- }
- void loop()
- {
- if (Serial.available() >= 9)
- {
- for (int i=0; i<9;i++)
- {
- incomingByte[i] = Serial.read();
-
- } // Arduino pins
- digitalWrite(A,!incomingByte[0]); // Pin 2
- digitalWrite(B,!incomingByte[1]); // Pin 3
- digitalWrite(C,!incomingByte[2]); // Pin 4
- digitalWrite(D,!incomingByte[3]); // Pin 5
- digitalWrite(E,!incomingByte[4]); // Pin 6
- digitalWrite(F,!incomingByte[5]); // Pin 7
- digitalWrite(H,!incomingByte[6]); // Pin 9
- digitalWrite(I,!incomingByte[7]); // Pin 10
- digitalWrite(J,!incomingByte[8]); // Pin 11
- }
- }
复制代码
2.直接控制: - int led[]={2,3,4,5,6,7,8,9,10};
- int ledCount=9;
- void setup() {
- // put your setup code here, to run once:
- for (int thisLed = 0; thisLed < ledCount; thisLed++) {
- pinMode(led[thisLed], OUTPUT); } //分别定义针脚
- }
- void liushuiA(){
- for (int thisLed = 0; thisLed < ledCount; thisLed+=2) {
- digitalWrite(led[thisLed],HIGH);
- }
- delay(200);
- for (int thisLed =0; thisLed < ledCount; thisLed+=2) {
- digitalWrite(led[thisLed],HIGH);
- }
- delay(200);
- for (int thisLed = 0; thisLed < ledCount; thisLed+=2) {
- digitalWrite(led[thisLed],LOW);
- }
- delay(200);
- for (int thisLed = 0; thisLed < ledCount; thisLed+=2) {
- digitalWrite(led[thisLed],LOW);
- delay(200);
- }
- }
- void liushuiB(){
- for (int thisLed = 0; thisLed < ledCount; thisLed+=1) {
- digitalWrite(led[thisLed],HIGH);
- delay(200);
- }
- for (int thisLed = 0; thisLed < ledCount; thisLed+=1) {
- digitalWrite(led[thisLed],LOW);
- delay(200);
- }
- }
- void liushuiC(){
- for (int thisLed = 0; thisLed < ledCount; thisLed+=2) {
- digitalWrite(led[thisLed],HIGH);
- }
- delay(500);
- for (int thisLed = 0; thisLed < ledCount; thisLed+=2) {
- digitalWrite(led[thisLed],LOW);
- }
- for (int thisLed = 1; thisLed < ledCount; thisLed+=2) {
- digitalWrite(led[thisLed],HIGH);
- }
- delay(500);
- for (int thisLed = 1; thisLed < ledCount; thisLed+=2) {
- digitalWrite(led[thisLed],LOW);
- }
- }
- void liushuiD(){
- for (int thisLed = 0; thisLed < 5; thisLed+=1) {
- digitalWrite(led[thisLed],HIGH);
- delay(500);
- }
- for (int thisLed = 8; thisLed > 4; thisLed-=1) {
- digitalWrite(led[thisLed],HIGH);
- delay(500);
- }
- for (int thisLed = 0; thisLed < 5; thisLed+=1) {
- digitalWrite(led[thisLed],LOW);
- delay(500);
- }
- for (int thisLed = 8; thisLed > 4; thisLed-=1) {
- digitalWrite(led[thisLed],LOW);
- delay(500);
- }
-
- }
- void loop() {
- for(int i=0;i<3;i++){
- liushuiA();
- liushuiB();
- }
- for(int i=0;i<3;i++){
- liushuiC();
- liushuiD();
- }
- for(int i=0;i<3;i++){
- liushuiB();
- liushuiC();
- }
- for(int i=0;i<3;i++){
- liushuiA();
- liushuiD();
- }
- }
复制代码 |