/* Version - Date - Author - Descriptioin
*
*/
/*Using arrays for 7 segment display
Segments: Pins:
a a a 2 2 2
f b 6 3
f b 6 3
f b 6 3
g g g 8 8 8
e c 6 4
e c 6 4
e c 6 4
d d d 5 5 5
*/
int incomingByte = 0; // for incoming serial data
// a b c d e f g
const byte pins[] = {2,3, 4, 5, 6, 7, 8};
const byte digits[] = {
//gfedcba *** FOR COMMON ANODE 7 SEGMENT DISPAY - REVERSE BITS & WIRING for COMMON CATHODE ***
0b1000000, // 0
0b1111001, // 1
0b0100100, // 2
0b0110000, // 3
0b0011001, // 4
0b0010010, // 5
0b0000010, // 6
0b1111000, // 7
0b0000000, // 8
0b0011000, // 9
0b0001000, // A
0b0000011, // b
0b0110011, // c
0b0100001, //d
0b0000110, // E
0b0001110
};
void displayNumber(byte number) {
number = number -48; // hold the number between 0 and 9
byte d = digits[number];
for (byte i = 0; i < sizeof(pins); i++) { // size of pins is 7 for 7 segment display.
digitalWrite(pins[i], bitRead(d, i)); // turn segments on or off
}
}
void setup()
{
Serial.begin(9600); /// set baud rate, also set serial monitor to no line ending right bottom of serial monitor
Serial.println("Open Serial Monitor and check if anything in serial receve buffer:");
for (byte j = 0; j < sizeof(pins); j++) {
pinMode(pins[j], OUTPUT);
}
}
void loop()
{
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.write(incomingByte);
if((incomingByte>47)& (incomingByte<58)) // get only numbers.
{
displayNumber(incomingByte); // display number in 7 segment
}
}
delay(1000);
}