當旋鈕順時針轉時會依序亮燈
以下是亮燈的順序
int x=input;
for(;i<input;i++)
{
LED1 = x % 2;
LED2 = (x % 4)/2;
LED3 = (((x % 8)/2) >1.5 ? 1:0);
LED4 = (((x % 16)/2) >3 ? 1:0);
LED5 = (((x % 32)/2) >7 ? 1:0);
LED6 = (((x % 64)/2) >15 ? 1:0);
LED7 = (((x % 128)/2) >31 ? 1:0);
LED8 = (((x % 256)/2) >63 ? 1:0);
}
問題:我想要把 旋鈕逆時針旋轉時 來滅燈
滅燈的順序 是亮燈的相反
EX:(旋鈕順時針原本依序是1,2,3亮 旋鈕逆時針後 依序3,2,1滅)
請問我該怎麼改 (明天要交作業了 我真的想不出來QQ)
麻煩大神解惑 小弟會非常感恩的~~~QQ
話說,
i跑哪去了?
而且你迴圈裏面的x永遠不會變啊 XD
我猜你要的是不是
//int x=input; //這行可以省略了
for(int x=0;x<input;x++)
給你試試看,不過想問 >15
、>63
是為了增加燈泡循環的延遲嗎?
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int LED1, LED2, LED3, LED4, LED5, LED6, LED7, LED8;
LED1 = LED2= LED3= LED4= LED5= LED6= LED7= LED8 = 0;
int btn = 1;
int x = 0;
while (1)
{
LED1 = ((x + 9) % 9 > 0 ? 1 : 0);
LED2 = ((x + 9) % 9 > 1 ? 1 : 0);
LED3 = ((x + 9) % 9 > 2 ? 1 : 0);
LED4 = ((x + 9) % 9 > 3 ? 1 : 0);
LED5 = ((x + 9) % 9 > 4 ? 1 : 0);
LED6 = ((x + 9) % 9 > 5 ? 1 : 0);
LED7 = ((x + 9) % 9 > 6 ? 1 : 0);
LED8 = ((x + 9) % 9 > 7 ? 1 : 0);
if (btn == 1)
{
//順時針
x++;
}
if (btn == 2)
{
//逆時針
x--;
}
printf("%d", LED1);
printf("%d", LED2);
printf("%d", LED3);
printf("%d", LED4);
printf("%d", LED5);
printf("%d", LED6);
printf("%d", LED7);
printf("%d", LED8);
printf("\n");
//延遲
int delay = 300000000;
while(delay--);
}
return 0;
}
00000000
10000000
11000000
11100000
11110000
11111000
11111100
11111110
11111111
00000000
10000000
11000000
11100000
<- 這時候切換按鈕
11000000
10000000
00000000
11111111
11111110
11111100
11111000
11110000
11100000
11000000
10000000
00000000