พอดีผมอยากจะให้ตัวเลขนับขึ้นโดยกดสวิตซ์1แล้วกดสวิตซ์2ให้หยุดและสวิตซ์3ให้นับลง
//int a=2,b=3,c=4,d=5,e=6,f=7,g=8,dt=9;
//int digi1=14,digi2=15,digi3=16,digi4=17;
int sw1=10,sw2=12,bsw1,bsw2;
int seg[10][8] = {{1,1,1,1,1,1,0,0},{0,1,1,0,0,0,0,0},
{1,1,0,1,1,0,1,0},{1,1,1,1,0,0,1,0},
{0,1,1,0,0,1,1,0},{1,0,1,1,0,1,1,0},
{1,0,1,1,1,1,1,0},{1,1,1,0,0,0,0,0},
{1,1,1,1,1,1,1,0},{1,1,1,1,0,1,1,0}};
int disp[4] = {7,2,6,0};
int i,x,n,num=0;
boolean st=0;
void setup()
{ pinMode(sw1,INPUT_PULLUP); pinMode(sw2,INPUT_PULLUP);
for(i=2; i<10; i++) pinMode(i,OUTPUT);
for(i=14; i<18; i++) pinMode(i,OUTPUT);
for(i=2; i<10; i++) digitalWrite(i,0);
for(i=14; i<18; i++) digitalWrite(i,1);
}
void loop()
{
disp[0]=num/1000;
disp[1]=(num/100)%10;
disp[2]=(num%100)/10;
disp[3]=num%10;
for (n=0; n<20; n++)
{for (x=0; x<4; x++)
{for (i=0; i<8; i++) digitalWrite(i+2,seg[disp[x]][i]);
digitalWrite(x+14,0); delay(1);
digitalWrite(x+14,1);
}}
bsw1=digitalRead(sw1);
if(bsw1==0) {st=!st; delay(10);}
if(st==0) num++;
if (num>9999) num=0;
}
ลองเขียนโปรแกรมและทำความเข้าใจโคดทีละส่วน
1. เขียนโปรแกรมรับค่าจาก keypad แล้วแสดงผลออก serial monitor
2. เขียนโปรแกรมอ่านค่าจากสวิตช์ธรรมดา แล้วให้เพิ่ม/ลดค่า แล้วแสดงผลออก serial monitor
3. เอาส่วนที่ 1 กับ 2 มารวมกัน
จะได้ความรู้และเข้าใจการเขียนโปรแกรมมากขึ้นนะครับ