Keypad with 7 segment display
hello guys!
i need code:
when pressed e.g. 1 on serial monitor shows :
what problem?
my project make 4 7-led segment display. 1#3#5#7 ---> display shows 1357.
i need code:
code: [select]
#include <key.h>
#include <keypad.h>
byte digitplace;
byte digit0;
byte digit1;
byte digit2;
byte digit3;
byte digit0pins[] = {14,15,16,17,18,19,20,}; // g-f-e-d-c-b-a example
byte digit1pins[] = {21,22,23,24,25,26,27,};
byte digit2pins[] = {28,29,30,31,32,33,34,};
byte digit3pins[] = {35,36,37,38,39,40,41,};
byte fontarray[] = {
0b00111111, // 0 x-g-f-e-d-c-b-a, 1 =- segment on
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111, // 9
};
byte maskarray[] = {0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00010000, 0b00100000, 0b01000000,};
byte i;
const byte numrows= 4;
const byte numcols= 4;
char keymap [numrows][numcols]=
{
{'1', '2', '3', 'a'},
{'4', '5', '6', 'b'},
{'7', '8', '9', 'c'},
{'*', '0', '#', '+'}
};
byte rowpins[numrows] = {13,12,11,10}; //rows 0 4
byte colpins[numcols]= {9,8,7,6}; //columns 0 4
keypad mykeypad= keypad(makekeymap(keymap), rowpins, colpins, numrows, numcols);
void setup() {
serial.begin(9600);
for (i=0; i<7; i=i+1){
pinmode (digit0pins[i], output);
pinmode (digit1pins[i], output);
pinmode (digit2pins[i], output);
pinmode (digit3pins[i], output);
}
}
void loop() {
char keypressed = mykeypad.getkey();
if (keypressed != no_key)
{
if (keypressed >= 48){ // www.asciitable.com]www.asciitable.com see if @ least '0' came in
keypressed = keypressed - 48; // yes, convert ascii character number,
}
if (keypressed >= 0 && keypressed <=9){ // display valid numbers
switch (digitplace) // switch between different digits
{
case 0: // digit0
for (i=0; i<7;i=i+1){
if ((fontarray[keypressed] && maskarray[i]) == 0){ // test if segment equal 0, turn off
// example digit0 = 1, fontarray[1] = 0b00000110. = 0, 0b00000110 && 0b00000001 = 0,
// pin segment gets turned off
// example digit0 = 1, fontarray[1] = 0b00000110. = 1, 0b00000110 && 0b0000010 = 0b00000010,
// pin segment b gets turned on
digitalwrite (digit0pins[i], low);
serial.println("digit0");
serial.println(digit0pins[i]);
delay(500);
}
else { // otherwise, turn on
digitalwrite (digit0pins[i], high);
serial.println("digit 0");
serial.println(digit0pins[i]);
}
}
break;
case 1: // digit1
for (i=0; i<7;i=i+1){
if ((fontarray[keypressed] && maskarray[i]) == 0){
digitalwrite (digit1pins[i], low);
serial.println("digit1");
serial.println(digit1pins[i]);
delay(500);
}
else { // otherwise, turn on
digitalwrite (digit1pins[i], high);
serial.println("digit 1");
serial.println(digit1pins[i]);
delay(500);
}
}
break;
case 2: // digit2
for (i=0; i<7;i=i+1){
if ((fontarray[keypressed] && maskarray[i]) == 0){
digitalwrite (digit2pins[i], low);
serial.println("digit2");
serial.println(digit2pins[i]);
delay(500);
}
else { // otherwise, turn on
digitalwrite (digit2pins[i], high);
serial.println("digit 2");
serial.println(digit2pins[i]);
delay(500);
}
}
break;
case 3: // digit3
for (i=0; i<7;i=i+1){
if ((fontarray[keypressed] && maskarray[i]) == 0){
digitalwrite (digit3pins[i], low);
serial.println("digit3");
serial.println(digit3pins[i]);
delay(500);
}
else { // otherwise, turn on
digitalwrite (digit3pins[i], high);
serial.println("digit 3");
serial.println(digit3pins[i]);
delay(500);
}
}
break;
}
if (keypressed =='#'){ // if # came in, move next digit
digitplace = digitplace +1;
if (digitplace == 4){
digitplace = 0;
}
}
}
}
}
when pressed e.g. 1 on serial monitor shows :
code: [select]
digit 0
14
digit 0
15
digit 0
16
digit 0
17
digit 0
18
digit 0
19
digit 0
20
what problem?
my project make 4 7-led segment display. 1#3#5#7 ---> display shows 1357.
code: [select]
if (keypressed == '#') { // if # came in, move next digit
digitplace = digitplace + 1;
if (digitplace == 4) {
digitplace = 0;
}
}
is correctly positioned?
format , indent code , makes mistakes easier notice.
tools->autoformat or ctrl-t
Arduino Forum > Using Arduino > Programming Questions > Keypad with 7 segment display
arduino
Comments
Post a Comment