#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>
void
blink(){
digitalWrite(0,1);
delay(300);
digitalWrite(0,0);
}
char
get_key(){
int i;
int j;
for (j = 21; j < 25; ++j) {
digitalWrite(j, 1);
}
for (;;) {
for (i = 25; i < 29; ++i) {
if (digitalRead(i)) {
for (j = 21; j < 25; ++j) {
digitalWrite(j, 0);
if (!digitalRead(i)) {
blink();
switch (((i - 25) << 2) | (j - 21)) {
case 0: return '1';
case 1: return '4';
case 2: return '7';
case 3: return 'C';
case 4: return '2';
case 5: return '5';
case 6: return '8';
case 7: return '0';
case 8: return '3';
case 9: return '6';
case 10: return '9';
case 11: return '#';
case 12: return 'A';
case 13: return 'B';
case 14: return 'C';
case 15: return 'D';
}
}
}
}
}
}
}
int
get_num (
int count,
int x
){
char k;
printf("in get number");
while(count){
printf ("\ncount = %d", count);
k = get_key();
printf ("key = %c\n", k);
if (k == '#') return x;
if (('0' <= k) && (k <= '9')){
x = (x * 10) + (k - '0') ;
}
else return -1;
--count;
}
k = get_key();
if (k == '#') return x;
else return -1;
}
int
main()
{
int a;
int i,j;
int x,y,z;
int count;
wiringPiSetup();
pinMode(21, OUTPUT);
pinMode(22, OUTPUT);
pinMode(23, OUTPUT);
pinMode(24, OUTPUT);
pinMode(25, INPUT);
pinMode(26, INPUT);
pinMode(27, INPUT);
pinMode(28, INPUT);
pinMode(0, OUTPUT);
x = get_num( 6,0 );
printf("\nthe number = %d\n" , x );
}
No comments:
Post a Comment