Created
September 1, 2017 08:14
-
-
Save izzuddin91/a046dacd2f6665b04e956d4427b1886d to your computer and use it in GitHub Desktop.
7 segment 12 pin led - ATA8041AB
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. sambung A0) | |
| int digit2 = 15; // common cathode for digit2 (i.e. sambung A1) | |
| int digit3 = 16; // common cathode for digit3 (i.e. sambung A2) | |
| int digit4 = 17; // common cathode for digit4 (i.e. sambung 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); | |
| //UNCOMMENT KAT BWH NI KALAU NK BUAT COUNTER DEKAT LED | |
| // put your main code here, to run repeatedly: | |
| // if( millis() / 1000 > ms ) | |
| // { | |
| // ms = millis() / 1000; | |
| // if( ++number > 9999 ) number = 0; | |
| // } | |
| // activate common cathode for digit1 | |
| //as a test, aku letak nilai 9999 display dekat led | |
| number = 9999; | |
| 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