Last active
September 1, 2017 08:25
-
-
Save izzuddin91/48f1642bcef021403fbaa7b81445193f to your computer and use it in GitHub Desktop.
7 segment led read data from serial
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| int segA = 3; // top | |
| int segB = 4; // right-top | |
| int segC = 5; // right-bottom | |
| int segD = 6; // bottom | |
| int segE = 7; // left-bottom | |
| int segF = 8; // left-top | |
| int segG = 9; // middle | |
| int dp = 10; | |
| int digit1 = 14; // common cathode for digit1 (i.e. A0) | |
| int digit2 = 15; // common cathode for digit2 (i.e. A1) | |
| int digit3 = 16; // common cathode for digit3 (i.e. A2) | |
| int digit4 = 17; // common cathode for digit4 (i.e. A3) | |
| // Number to display | |
| static int number = 0; | |
| static int ms = 0; | |
| String inData; | |
| int collectedNumber; | |
| int blinkRate=0; | |
| //==============================================================// | |
| void setup() | |
| { | |
| Serial.begin(9600); | |
| // All pins in digital mode | |
| pinMode(digit1, OUTPUT); | |
| pinMode(digit2, OUTPUT); | |
| pinMode(digit3, OUTPUT); | |
| pinMode(digit4, OUTPUT); | |
| pinMode(segA, OUTPUT); | |
| pinMode(segB, OUTPUT); | |
| pinMode(segC, OUTPUT); | |
| pinMode(segD, OUTPUT); | |
| pinMode(segE, OUTPUT); | |
| pinMode(segF, OUTPUT); | |
| pinMode(segG, OUTPUT); | |
| pinMode(dp, OUTPUT); | |
| } | |
| //==============================================================// | |
| void loop() { | |
| digitalWrite(dp, HIGH); | |
| if(Serial.available()){ | |
| char ch = Serial.read(); | |
| inData += ch; | |
| Serial.println(inData); | |
| number = inData.toInt(); | |
| }else{ | |
| inData = ""; | |
| } | |
| digitalWrite(digit1, LOW); | |
| // light on segments for 'thousands' | |
| drawDigitFast( (number/1000) % 10 ); | |
| // wait 2 ms | |
| delay(2); | |
| // turn off all segments | |
| drawDigitFast( -1 ); | |
| // turn off cathode for digit1 | |
| digitalWrite(digit1, HIGH); | |
| digitalWrite(digit2, LOW); | |
| drawDigitFast( (number/100) % 10 ); | |
| delay(2); | |
| drawDigitFast( -1 ); | |
| digitalWrite(digit2, HIGH); | |
| digitalWrite(digit3, LOW); | |
| drawDigitFast( (number/10) % 10 ); | |
| delay(2); | |
| drawDigitFast( -1 ); | |
| digitalWrite(digit3, HIGH); | |
| digitalWrite(digit4, LOW); | |
| drawDigitFast( number % 10 ); | |
| delay(2); | |
| drawDigitFast( -1 ); | |
| digitalWrite(digit4, HIGH); | |
| } | |
| //-----------------------------------------------------// | |
| void drawDigitFast(int n) | |
| { | |
| const byte aPins[8] = { | |
| segA, segB, segC, segD, segE, segF, segG | |
| }; | |
| const byte aSegments[11][8] = { | |
| // A B C D E F G | |
| { HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW }, // 0 | |
| { LOW, HIGH, HIGH, LOW, LOW, LOW, LOW }, // 1 | |
| { HIGH, HIGH, LOW, HIGH, HIGH, LOW, HIGH }, // 2 | |
| { HIGH, HIGH, HIGH, HIGH, LOW, LOW, HIGH }, // 3 | |
| { LOW, HIGH, HIGH, LOW, LOW, HIGH, HIGH }, // 4 | |
| { HIGH, LOW, HIGH, HIGH, LOW, HIGH, HIGH }, // 5 | |
| { HIGH, LOW, HIGH, HIGH, HIGH, HIGH, HIGH }, // 6 | |
| { HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW }, // 7 | |
| { HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH }, // 8 | |
| { HIGH, HIGH, HIGH, HIGH, LOW, HIGH, HIGH }, // 9 | |
| { LOW, LOW, LOW, LOW, LOW, LOW, LOW } // all off | |
| }; | |
| if( n < 0 || n > 10 ) | |
| { | |
| n = 10; | |
| } | |
| for( int i = 0; i < 7; i++ ) | |
| { | |
| digitalWrite( aPins[i], aSegments[n][i] ); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment