fork download
  1. #include <iostream>
  2.  
  3. void displayDigit( uint8_t digit, uint8_t pos )
  4. {
  5. printf( "\tdisplayDigit( %d, %d )\n\t{\n", digit, pos );
  6.  
  7. uint8_t positionPin = pos + 9;
  8.  
  9. //digitalWrite( positionPin, HIGH );
  10. printf( "\t\tdigitalWrite( %d, HIGH )\n\n", positionPin );
  11.  
  12. // States of each segment for each digit
  13. uint8_t segmentsData[] =
  14. {
  15. //8765432 // segments output pins
  16. 0b0111111, // segments for digit '0'
  17. 0b0000110, // segments for digit '1'
  18. 0b1011011, // segments for digit '2'
  19. 0b1001111, // segments for digit '3'
  20. 0b1100110, // segments for digit '4'
  21. 0b1101101, // segments for digit '5'
  22. 0b1111101, // segments for digit '6'
  23. 0b0000111, // segments for digit '7'
  24. 0b1111111, // segments for digit '8'
  25. 0b1100111, // segments for digit '9'
  26. };
  27.  
  28. uint8_t digitData = segmentsData[ digit ]; // select the segments data for this digit
  29.  
  30. for ( uint8_t i = 0; i < 7; i++ )
  31. {
  32. uint8_t segmentPin = i + 2; // segments pins from 2 to 8
  33. uint8_t segmentState = (digitData >> i) & 1; // equivalent to bitRead( digitData, i )
  34.  
  35. //digitalWrite( segmentPin, segmentState ? LOW : HIGH );
  36. printf( "\t\tdigitalWrite( %d, %s )\n", segmentPin, segmentState ? "LOW" : "HIGH" );
  37. }
  38.  
  39. //digitalWrite( positionPin, LOW );
  40. printf( "\n\t\tdigitalWrite( %d, LOW )\n", positionPin );
  41.  
  42. printf( "\t}\n" );
  43. }
  44.  
  45. void displayNumber( uint16_t number )
  46. {
  47. if ( number >= 0 && number <= 9999 )
  48. {
  49. printf( "displayNumber( %d )\n{\n", number );
  50.  
  51. uint8_t pos = 0;
  52. uint16_t n = number;
  53.  
  54. while ( n != 0 )
  55. {
  56. displayDigit( n % 10, pos++ );
  57. n /= 10;
  58. }
  59.  
  60. printf( "}\n" );
  61. }
  62. }
  63.  
  64.  
  65. int main()
  66. {
  67. displayNumber( 1234 );
  68. displayNumber( 1337 );
  69.  
  70. return 0;
  71. }
Success #stdin #stdout 0s 5468KB
stdin
Standard input is empty
stdout
displayNumber( 1234 )
{
	displayDigit( 4, 0 )
	{
		digitalWrite( 9, HIGH )

		digitalWrite( 2, HIGH )
		digitalWrite( 3, LOW )
		digitalWrite( 4, LOW )
		digitalWrite( 5, HIGH )
		digitalWrite( 6, HIGH )
		digitalWrite( 7, LOW )
		digitalWrite( 8, LOW )

		digitalWrite( 9, LOW )
	}
	displayDigit( 3, 1 )
	{
		digitalWrite( 10, HIGH )

		digitalWrite( 2, LOW )
		digitalWrite( 3, LOW )
		digitalWrite( 4, LOW )
		digitalWrite( 5, LOW )
		digitalWrite( 6, HIGH )
		digitalWrite( 7, HIGH )
		digitalWrite( 8, LOW )

		digitalWrite( 10, LOW )
	}
	displayDigit( 2, 2 )
	{
		digitalWrite( 11, HIGH )

		digitalWrite( 2, LOW )
		digitalWrite( 3, LOW )
		digitalWrite( 4, HIGH )
		digitalWrite( 5, LOW )
		digitalWrite( 6, LOW )
		digitalWrite( 7, HIGH )
		digitalWrite( 8, LOW )

		digitalWrite( 11, LOW )
	}
	displayDigit( 1, 3 )
	{
		digitalWrite( 12, HIGH )

		digitalWrite( 2, HIGH )
		digitalWrite( 3, LOW )
		digitalWrite( 4, LOW )
		digitalWrite( 5, HIGH )
		digitalWrite( 6, HIGH )
		digitalWrite( 7, HIGH )
		digitalWrite( 8, HIGH )

		digitalWrite( 12, LOW )
	}
}
displayNumber( 1337 )
{
	displayDigit( 7, 0 )
	{
		digitalWrite( 9, HIGH )

		digitalWrite( 2, LOW )
		digitalWrite( 3, LOW )
		digitalWrite( 4, LOW )
		digitalWrite( 5, HIGH )
		digitalWrite( 6, HIGH )
		digitalWrite( 7, HIGH )
		digitalWrite( 8, HIGH )

		digitalWrite( 9, LOW )
	}
	displayDigit( 3, 1 )
	{
		digitalWrite( 10, HIGH )

		digitalWrite( 2, LOW )
		digitalWrite( 3, LOW )
		digitalWrite( 4, LOW )
		digitalWrite( 5, LOW )
		digitalWrite( 6, HIGH )
		digitalWrite( 7, HIGH )
		digitalWrite( 8, LOW )

		digitalWrite( 10, LOW )
	}
	displayDigit( 3, 2 )
	{
		digitalWrite( 11, HIGH )

		digitalWrite( 2, LOW )
		digitalWrite( 3, LOW )
		digitalWrite( 4, LOW )
		digitalWrite( 5, LOW )
		digitalWrite( 6, HIGH )
		digitalWrite( 7, HIGH )
		digitalWrite( 8, LOW )

		digitalWrite( 11, LOW )
	}
	displayDigit( 1, 3 )
	{
		digitalWrite( 12, HIGH )

		digitalWrite( 2, HIGH )
		digitalWrite( 3, LOW )
		digitalWrite( 4, LOW )
		digitalWrite( 5, HIGH )
		digitalWrite( 6, HIGH )
		digitalWrite( 7, HIGH )
		digitalWrite( 8, HIGH )

		digitalWrite( 12, LOW )
	}
}