Tuesday, March 18, 2014

Arduino–Day 5: 7 Segment Numeral Display

 

A quick & dirty library for displaying numbers on a 7 Segment Display.  I’m storing the segment patterns in an array at the same position – ordinal - as that of the number.  Thus, a pattern for ‘0’ (Pin 10 & Pin 4 off – Dot & Central bar) would be found at numbers[0].

Countdown on a 7 Seg Display
  1. //Pin patterns for 0-9
  2. int numbers[][8] =  {
  3.     { 1, 1, 1, 0, 1, 1, 1, 0 },
  4.     { 0, 0, 1, 0, 1, 0, 0, 0 },
  5.     { 1, 1, 0, 0, 1, 1, 0, 1 },
  6.     { 0, 1, 1, 0, 1, 1, 0, 1 },
  7.     { 0, 0, 1, 0, 1, 0, 1, 1 },
  8.     { 0, 1, 1, 0, 0, 1, 1, 1 },
  9.     { 1, 1, 1, 0, 0, 1, 1, 1 },
  10.     { 0, 0, 1, 0, 1, 1, 0, 0 },
  11.     { 1, 1, 1, 0, 1, 1, 1, 1 },
  12.     { 0, 1, 1, 0, 1, 1, 1, 1 },
  13. };
  14.  
  15. // Pin 1, 2, 4, 5, 6, 7, 9, 10 anti clockwise starting from lower left corner
  16. int pins[] = {3, 4, 6, 7, 8, 9, 11, 12};
  17.  
  18.  
  19.  
  20. void setup()
  21. {
  22.  
  23.   /* add setup code here */
  24.  
  25. }
  26.  
  27. void loop()
  28. {
  29.  
  30.   /* add main program code here */
  31.  
  32.     for (int number = 9; number <= 0; number++)
  33.     {
  34.         displayNumber(number);
  35.         //Wait 1 second
  36.         delay(1000);
  37.     }
  38.  
  39.     //Display four random number
  40.     for (int i = 1; i < 5; i++)
  41.     {
  42.         int next = random(0, 9);
  43.         displayNumber(next);
  44.         clear();
  45.         delay(1000);
  46.     }
  47.  
  48.     delay(1000);
  49. }
  50.  
  51.  
  52. void displayNumber(int number)
  53. {
  54.     for (int i = 0; i < 8; i++)
  55.     {
  56.         //determine pin for the segment 0-7
  57.         int pin = pins[i];
  58.         bool pinOffOn = numbers[number][i];
  59.  
  60.         pinMode(pin, OUTPUT);
  61.         //Turn on the segment
  62.         digitalWrite(pin, (pinOffOn) ? HIGH : LOW);
  63.     }
  64. }
  65.  
  66.  
  67. void clear()
  68. {
  69.     for (int i = 0; i < 8; i++)
  70.     {
  71.         int pin = pins[i];
  72.         pinMode(pin, OUTPUT);
  73.         digitalWrite(pin, LOW);
  74.     }
  75. }

The above approach is cost prohibitive (number of pins needed to drive a 4 digit number is staggering).

Not knowing Arduino’s capabilities, I’m hypothesizing (speculating) thus:

  1. Either:
    • Arduino should be able to drive multiple outputs through a single pin
    • One pin per digit... Possibly 2 pins for n-number of digits
  2. Or:
    • We can send multiple values through a single Arduino digital pin punctuated by a specific delay (say, 10 millisecond increments). 
    • A timer would measure the difference, and route power to appropriate segment
    • Pros: One pin for each digit
  3. Or:
    • Identify the digit by a specific delay upfront (100 millisecond increments)
    • Route to the right digit
    • All subsequent power would be sent to the same digit (till it's reset by a specific delay)
    • We can send multiple values through a single Arduino digital pin punctuated by a specific delay (say, 10 millisecond increments).
    • A timer would measure the difference, and route power to appropriate segment
      • Pros: One pin for the whole display

17 comments:

for ict 99 said...

Hi, Great.. Tutorial is just awesome..It is really helpful for a newbie like me.. I am a regular follower of your blog. Really very informative post you shared here. Kindly keep blogging. If anyone wants to become a .Net developer learn from Dot Net Training in Chennai. or learn thru ASP.NET Essential Training Online . Nowadays Dot Net has tons of job opportunities on various vertical industry.

Nannie Co Pam said...

Great Article
IEEE Final Year Projects for CSE
IEEE Project Centers in Chennai

Amy Wong said...

There was a time when it was difficult with money. I decided to turn to gambling for all kinds of slot machines and the like. Now knowing this site splendid best internet casino across and opposite to me is no longer scary

nikitha josh said...

Very good information provided, Thanks a lot for sharing such useful information.
best aviation academy in Chennai
Air Hostess Training Institute in Chennai
Airline Courses in Chennai
airport ground staff training in Chennai
Aviation Academy in Chennai
air hostess training in Chennai
airport management courses in Chennai
ground staff training in Chennai

janani ram said...

Excellent and very cool idea and great content of different kinds of the valuable information's.
TOEFL Coaching in Chennai
TOEFL Classes in Chennai
German Classes in Chennai
IELTS Coaching in Chennai
Japanese Classes in Chennai
Spoken English Classes in Chennai
spanish classes in chennai
content writing course in chennai
TOEFL Coaching in OMR
TOEFL Coaching in Porur

telkahost said...

شرکت تلکا هاست پیشرو در میزبانی انواع وب سایت و هم چنین دارای انواع خرید هاست ارزان با کنترل پنل سی پنل میباشد.حتما از سایت ما دیدن کنید و از قیمت های مناسب برای انواع سرویس های وب و ثبت انواع دامنه شگفت زده شوید.

merlin said...

Innovative blog thanks for sharing this information.
Selenium Training in chennai | Selenium Training in annanagar | Selenium Training in omr | Selenium Training in porur | Selenium Training in tambaram | Selenium Training in velachery

Gaurav said...

Excellent Blog! I would like to thank for the efforts you have made in writing this post. I am hoping the same best work from you in the future as well. I wanted to thank you for this websites! Thanks for sharing. Great websites!
data science course in indore

PMP Certification said...

On the off chance that your searching for Online Illinois tag sticker reestablishments, at that point you have need to go to the privilege place.We offer the quickest Illinois tag sticker restorations in the state.

PMP Certification

360DigiTMGMY said...

I think I have never watched such online diaries ever that has absolute things with all nuances which I need. So thoughtfully update this ever for us.
hrdf claimable courses

dataanalyticscourse said...

I think I have never watched such online diaries ever that has absolute things with all nuances which I need. So thoughtfully update this ever for us.
https://360digitmg.com/course/certification-program-in-supply-chain-analytics

dataanalyticscourse said...

I was looking at a portion of your posts on this site and I consider this site is really enlightening! Keep setting up..
360DigiTMG supply chain analytics using r

tejaswini said...

I think this is the minimum value to earn more than just commit
https://360digitmg.com/course/certification-program-in-data-science

abid said...


Thank you for helping people get the information they need. Great stuff as usual. Keep up the great work!!!
about us

devika iangar said...

You should talk it's shocking. Your blog survey would extend your visitors. I was fulfilled to find this site.I expected to thank you for this phenomenal read!!
what is the difference between analysis and analytics

devika iangar said...

You should talk it's shocking. Your blog survey would extend your visitors. I was fulfilled to find this site.I expected to thank you for this phenomenal read!!
what is the difference between analysis and analytics

360DigiTMG said...

I feel extremely glad to have seen your site page and anticipate such a large number of additionally engaging occasions perusing here. Much obliged again for all the subtleties.
HRDF training