Created
September 1, 2017 14:18
-
-
Save izzuddin91/a673deb52cc819a6d4a700c14db69016 to your computer and use it in GitHub Desktop.
7 segment with decimal point light up at the first point
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() { | |
| 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, HIGH ); | |
| // wait 2 ms | |
| delay(2); | |
| // turn off all segments | |
| drawDigitFast( -1, LOW ); | |
| // turn off cathode for digit1 | |
| digitalWrite(digit1, HIGH); | |
| digitalWrite(digit2, LOW); | |
| drawDigitFast( (number/100) % 10, LOW ); | |
| delay(2); | |
| drawDigitFast( -1, LOW ); | |
| digitalWrite(digit2, HIGH); | |
| digitalWrite(digit3, LOW); | |
| drawDigitFast( (number/10) % 10, LOW ); | |
| delay(2); | |
| drawDigitFast( -1, LOW ); | |
| digitalWrite(digit3, HIGH); | |
| digitalWrite(digit4, LOW); | |
| drawDigitFast( number % 10, LOW ); | |
| delay(2); | |
| drawDigitFast( -1, LOW ); | |
| digitalWrite(digit4, HIGH); | |
| } | |
| //-----------------------------------------------------// | |
| //takes another params, dpValue untuk light up decimal point atau x | |
| void drawDigitFast(int n, bool dpValue) | |
| { | |
| 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] ); | |
| } | |
| digitalWrite(dp, dpValue); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment