Arduino 如何阻止我的代码进入从8到9再回到8的无限循环?
我试图通过编写一个从1到10计数的小程序,使用Arduino 如何阻止我的代码进入从8到9再回到8的无限循环?,arduino,Arduino,我试图通过编写一个从1到10计数的小程序,使用\u开关盒,然后使LED在每次计数器同时达到0、6或9时闪烁。无论何时它达到0或9,它都应该倒计时或倒计时,这取决于它是在底部还是顶部。如何使用我当前的代码使其工作 int COUNT=0//åtelle 0-10 inc.的计数整数。 无效设置(){ 对于(int i=2;i我有一些类似的代码: nt ports [] = {2,3,4,5,6,7,8,9}; // Digital PINS: used for display controll.
\u开关盒
,然后使LED在每次计数器同时达到0、6或9时闪烁。无论何时它达到0或9,它都应该倒计时或倒计时,这取决于它是在底部还是顶部。如何使用我当前的代码使其工作
int COUNT=0//åtelle 0-10 inc.的计数整数。
无效设置(){
对于(int i=2;i我有一些类似的代码:
nt ports [] = {2,3,4,5,6,7,8,9}; // Digital PINS: used for display controll.
int my_display [10] [7] ={ // Array with values of digital pins.
{1,1,1,1,1,1,0}, // 0
{0,1,1,0,0,0,0}, // 1
{1,1,0,1,1,0,1}, // 2
{1,1,1,1,0,0,1}, // 3
{0,1,1,0,0,1,1}, // 4
{1,0,1,1,0,1,1}, // 5
{1,0,1,1,1,1,1}, // 6
{1,1,1,0,0,0,0}, // 7
{1,1,1,1,1,1,1}, // 8
{1,1,1,0,0,1,1}, // 9
};
void setup(){
for (int i = 0; i < 8; i++){ // Set all digital pin in OUTPUT mode.
pinMode(ports[i], OUTPUT);
}
}
void loop(){
digitalWrite(9,LOW); // Pin 9 control the display dot.
for(int i = 0; i<10; i++ ){ // This loop numbers array.
for(int j = 0; j<7; j++ ){ // This loop pins array.
digitalWrite(ports[j],my_display[i][j]); // Set Value to pin in function of number.
}
delay(1000); // Refresh time
}
// Now start reverse count. And put visible the display dot.
digitalWrite(9,HIGH);
for(int i = 9; i>=0; i-- ){
for(int j = 6; j>=0; j-- ){
digitalWrite(ports[j],my_display[i][j]);
}
delay(1000);
}
}
nt端口[]={2,3,4,5,6,7,8,9};//数字管脚:用于显示控制。
int my_display[10][7]={//带有数字管脚值的数组。
{1,1,1,1,1,1,0}, // 0
{0,1,1,0,0,0,0}, // 1
{1,1,0,1,1,0,1}, // 2
{1,1,1,1,0,0,1}, // 3
{0,1,1,0,0,1,1}, // 4
{1,0,1,1,0,1,1}, // 5
{1,0,1,1,1,1,1}, // 6
{1,1,1,0,0,0,0}, // 7
{1,1,1,1,1,1,1}, // 8
{1,1,1,0,0,1,1}, // 9
};
无效设置(){
对于(int i=0;i<8;i++){//将所有数字管脚设置为输出模式。
pinMode(端口[i],输出);
}
}
void循环(){
digitalWrite(9,低);//引脚9控制显示点。
对于(int i=0;i=0;j--){
digitalWrite(端口[j],我的U显示[i][j]);
}
延迟(1000);
}
}
在我的代码中,如果要反转计数,只需更改循环的限制,只需将闪烁代码放在循环的末尾
PD:您说过“每次计数器同时达到0、6或9时,它都会闪烁,然后倒数并重置自身”“如果您将计数倒数到6,怎么可能到9呢?在删除了大量意义不大的代码后(至少当涉及到手头的问题时)看起来您需要类似于以下内容的内容:
int COUNT=0;
int change = 1;
void setup(){...}
void loop() {
switch (COUNT){
// cases 0-9:
// Do something
// break;
}
if(COUNT == 9) { change = -1; }
if(COUNT == 0) { change = 1; }
COUNT += change;
}
在这里,您为每个迭代指定一个增量(1表示递增,-1表示递减),然后在每个迭代中添加该更改以实际上移或下移
然后,您需要做的唯一更改是,当您到达0和9的一端时,将增量调整到相反的方向。我不理解您的if(COUNT==10)
case,将COUNT
设置为9,然后将其递减,您还希望发生什么?在您这样做之后,它是8,小于10,并将像以前一样递增。我不完全理解编码是如何工作的,这就是为什么我问如何不使其再次计数。它不会在6重置,让我编辑问题,抱歉混乱。你能试着在代码中注释一下吗?我的英语不是很好,但我想我能读懂。我把代码改成使用这个系统,但现在它只从0开始计数,直接跳到6,然后直接跳到9,但现在它正确地倒计时了?我说的跳跃,是指它从0跳到1,然后再跳到2等等,它从0直接计数到6,然后我不认为问题出在我的开关盒上,因为它们工作得很好,只是计数似乎不起作用。没关系,你的计数系统并没有像我使用的旧系统那样自动延迟,尽管它使用了我的代码,所以谢谢你。@Encore啊,我明白了,我消除了你if语句中的任何延迟最后,您需要重新添加您的延迟(1000)
,表示歉意