Facebook
From asdf, 2 Months ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 166
  1. int pin_pot=A0;
  2. int AD_value=0;
  3. int brzina;
  4. int nDelayMicroseconds = 50;
  5. int d1 = 8;
  6. int d2 = 9;
  7. int d3 = 10;
  8. int d4 = 11;
  9. int data;
  10. int segData;
  11. void setup() {
  12.   DDRD= B11111111;
  13.   DDRB= B11111111;
  14.   pinMode(pin_pot,INPUT);
  15. }
  16. void loop() {
  17.   int d1, d2, d3, d4;
  18.   d1 = data / 1000 % 10; //Znamenka tisućice
  19.   d2 = data / 100 % 10; //Znamenka stotice
  20.   d3 = data / 10 % 10; //Znamenka desetice
  21.   d4 = data % 10;
  22.   data=analogRead(pin_pot);
  23.   for (int m = 0; m<80; m++) {
  24.     segData = DigitTo7SegEncoder(d1, 1);
  25.     pickDigit(1); //Selection of a digital display
  26.     PORTD = segData;
  27.     delayMicroseconds(nDelayMicroseconds);
  28.     segData = DigitTo7SegEncoder(d2, 1);
  29.     pickDigit(2); //Select the first two digital display
  30.     PORTD = segData;
  31.     delayMicroseconds(nDelayMicroseconds);
  32.     segData = DigitTo7SegEncoder(d3, 1);
  33.     pickDigit(3); //Select the first three digital display
  34.     PORTD = segData;
  35.     delayMicroseconds(nDelayMicroseconds);
  36.     segData = DigitTo7SegEncoder(d4, 1);
  37.     pickDigit(4); //Select the first four digital display
  38.     PORTD = segData;
  39.     delayMicroseconds(nDelayMicroseconds);
  40.   }
  41. }
  42. void pickDigit(int x) //Defined pickDigit (x), whose role is to open the port dx
  43. {
  44. digitalWrite(d1, HIGH);
  45. digitalWrite(d2, HIGH);
  46. digitalWrite(d3, HIGH);
  47. digitalWrite(d4, HIGH);
  48. switch (x)
  49. {
  50. case 1:
  51. digitalWrite(d1, LOW);
  52. break;
  53. case 2:
  54. digitalWrite(d2, LOW);
  55. break;
  56. case 3:
  57. digitalWrite(d3, LOW);
  58. break;
  59. default:
  60. digitalWrite(d4, LOW);
  61. break;
  62. }
  63. }
  64. unsigned char DigitTo7SegEncoder(unsigned char digit, unsigned char common)
  65. {
  66. unsigned char SegVal;
  67. switch (digit)
  68. {
  69.  case 0: if (comm 1) SegVal = 0b00111111; // broj 0
  70. else SegVal = ~0b00111111;
  71. break;
  72.  case 1: if (comm 1) SegVal = 0b00000110; // broj 1
  73. else SegVal = ~0b00000110;
  74. break;
  75.  case 2: if (comm 1) SegVal = 0b01011011; // broj 2
  76. else SegVal = ~0b01011011;
  77. break;
  78.  case 3: if (comm 1) SegVal = 0b01001111; // broj 3
  79. else SegVal = ~0b01001111;
  80. break;
  81.  case 4: if (comm 1) SegVal = 0b01100110; // broj 4
  82. else SegVal = ~0b01100110;
  83. break;
  84.  case 5: if (comm 1) SegVal = 0b01101101; // broj 5
  85. else SegVal = ~0b01101101;
  86. break;
  87.  case 6: if (comm 1) SegVal = 0b01111101; // broj 6
  88. else SegVal = ~0b01111101;
  89. break;
  90.  case 7: if (comm 1) SegVal = 0b00000111; // broj 7
  91. else SegVal = ~0b00000111;
  92. break;
  93.  case 8: if (comm 1) SegVal = 0b01111111; // broj 8
  94. else SegVal = ~0b01111111;
  95. break;
  96.  case 9: if (comm 1) SegVal = 0b01101111; // broj 9
  97. else SegVal = ~0b01101111;
  98. }
  99. return SegVal;
  100. }