[해결] 라즈베리파이2에 멤브레인 키패드 연결했는데 문제가 발생하네요. ㅜㅜ



  • 소스는 이렇습니다.

    #include <stdio.h>
    #include <stdlib.h>
    #include <wiringPi.h>
    int c=0;
    char get_key(){
    	char MATRIX[4][3]={{'1','2','3'},
    			   {'4','5','6'},
    			   {'7','8','9'},
    			   {'*','0','#'}};
    	int ROW[4]={1,4,5,6};
    	int COL[3]={26,27,28};
    	char key;
    	int i, j;
    	for(j=0; j<3;j++){
    		digitalWrite(COL[j], 1);
    		for(i=0; i<4; i++){
    			if(digitalRead(ROW[i])){
    				digitalWrite(COL[j], 0);
    				key=MATRIX[i][j];
    			}
    		}
    	}
    	return key;
    }	 
    int main(void)
    {
    
    	int ROW[4] = {1,4,5,6};
    	int COL[3] = {26,27,28};
    	int i, j;
    	char key;
    
    	if(wiringPiSetup()==-1)return 0;
    	for(j=0; j<3; j++){
    		pinMode(COL[j], OUTPUT);
    		digitalWrite(COL[j], 0);
    	}
    
    	for(i=0; i<4; i++){
    		pinMode(ROW[i], INPUT);
    	}
    
    	for(;;){
    		key=get_key();
    		if(key){
    			printf("%c", key);
    		}
    		delay(0.8);
    	}
    
    	return 0;
    }
    

    위에 프로그램을 실행하고 키패드를 누르면 아래처럼 여러번 중복되서 출력되는 문제가 발생됩니다.

    문제해결 좀 도와주세요.ㅜㅜ

    0_1462882162301_1.png


  • Global Moderator

    @dnckd4724
    buffer를 지워야 되지 않을까요?
    아니면, get_key() 이외의 함수를 써보세요.



  • 답변 감사합니다. 참고해서 해결해 보도록 하겠습니다.



  • 어떻게 해결하신지 궁금합니다… ㅠㅠ 소스 정보를 좀 알수 있을까요?
    dydals5470@naver.com 메일 부탁드리겠습니다!


답변을 위해 로그인하기