我正在研究arduino proramming,其中我需要一个led然后关闭它然后在下一个.. 16个LED所有tgt和我使用移位寄存器MC74HC595AN又名595寄存器。我发现很难自己编码,因为我还在学习如何用Arduino编程。任何有代码或可以解决代码的人都可以与我分享吗?任何形式的帮助将不胜感激!谢谢!
这是我做过的代码,但似乎没有起作用。
const int button0Pin = 15;
const int button1Pin = 1;
const int button2Pin = 2;
const int button3Pin = 3;
const int button4Pin = 4;
const int button5Pin = 5;
const int button6Pin = 6;
const int button7Pin = 7;
void setup() {
// put your setup code here, to run once:
pinMode(button0Pin, OUTPUT);
pinMode(button1Pin, OUTPUT);
pinMode(button2Pin, OUTPUT);
pinMode(button3Pin, OUTPUT);
pinMode(button4Pin, OUTPUT);
pinMode(button5Pin, OUTPUT);
pinMode(button6Pin, OUTPUT);
pinMode(button7Pin, OUTPUT);
pinMode(14, INPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(button0Pin, 0);
digitalWrite(button1Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
delay(5000);
digitalWrite(button0Pin, 0);
digitalWrite(button1Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 1);
delay(5000);
digitalWrite(button0Pin, 0);
digitalWrite(button1Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 1);
digitalWrite(button2Pin, 0);
delay(5000);
digitalWrite(button0Pin, 0);
digitalWrite(button1Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 1);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
delay(5000);
digitalWrite(button0Pin, 0);
digitalWrite(button1Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 1);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
delay(5000);
digitalWrite(button0Pin, 0);
digitalWrite(button1Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 1);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
delay(5000);
digitalWrite(button0Pin, 0);
digitalWrite(button1Pin, 0);
digitalWrite(button2Pin, 1);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
delay(5000);
digitalWrite(button0Pin, 0);
digitalWrite(button1Pin, 1);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
delay(5000);
digitalWrite(button0Pin, 1);
digitalWrite(button1Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
digitalWrite(button2Pin, 0);
delay(5000);
}
答案 0 :(得分:0)
所以,为了清楚这一点,你要将引脚14初始化为接收输入的东西,但是你从来没有在主循环中实际使用它来检查你是否得到任何输入。
为了让您的生活更轻松,请考虑将引脚命名为较短的名称。而不是“button0Pin”如何只是“b0”?
另外,你可能想尝试使用for循环而不是你正在做的事情(写出单独的代码块,每个代码块在不同的位置输出1个引脚)
您可以在此处阅读arduino参考指南(我每次编程时都会阅读):https://www.arduino.cc/en/Reference/HomePage
此链接:https://electronics.stackexchange.com/questions/17975/arduino-uno-light-leds-right-to-left-and-then-reversed可能类似于您需要的for循环。
希望至少有一点帮助。
答案 1 :(得分:0)
你正确地初始化了pin模式,但是你对button2Pin
进行了大量的写作。
此外,如果您实际上没有将引脚14连接到电源,那么您应该考虑将其设置为INPUT_PULLUP
,以免不必要地消耗多余电量。