Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.25 KB | None | 0 0
  1. #include <math.h>
  2. int encoderPinA = 13;
  3. int encoderPinB = 12;
  4. int encoderButton = 11;
  5. int fireButton = 2;
  6. int coilPin = 0;
  7.  
  8. //BCDb je pre jednotky
  9. int BCDa_A = 3;
  10. int BCDa_B = 4;
  11. int BCDa_C = 5;
  12. int BCDa_D = 6;
  13.  
  14. //BCDb je pre desiatky
  15. int BCDb_A = 7;
  16. int BCDb_B = 8;
  17. int BCDb_C = 9;
  18. int BCDb_D = 10;
  19.  
  20. void setup() {
  21.   pinMode(encoderPinA, INPUT);
  22.   pinMode(encoderPinB, INPUT);
  23.   pinMode(encoderButton, INPUT);
  24.   pinMode(fireButton, INPUT);
  25.   pinMode(BCDa_A, OUTPUT);
  26.   pinMode(BCDa_B, OUTPUT);
  27.   pinMode(BCDa_C, OUTPUT);
  28.   pinMode(BCDa_D, OUTPUT);
  29.   pinMode(BCDb_A, OUTPUT);
  30.   pinMode(BCDb_B, OUTPUT);
  31.   pinMode(BCDb_C, OUTPUT);
  32.   pinMode(BCDb_D, OUTPUT);
  33.   pinMode(coilPin, OUTPUT);
  34. }
  35.  
  36. int encoderPosVal;
  37. int encoderPos = 0;
  38. int encoderPinALast = LOW;
  39. int n = LOW;
  40.  
  41. //driver pre jedničky:
  42. void BCDaDriver(int displayNumber) {
  43.   switch(displayNumber) {
  44.     case 0:
  45.       digitalWrite(BCDa_A, LOW);
  46.       digitalWrite(BCDa_B, LOW);
  47.       digitalWrite(BCDa_C, LOW);
  48.       digitalWrite(BCDa_D, LOW);
  49.       break;
  50.  
  51.     case 1:
  52.       digitalWrite(BCDa_A, HIGH);
  53.       digitalWrite(BCDa_B, LOW);
  54.       digitalWrite(BCDa_C, LOW);
  55.       digitalWrite(BCDa_D, LOW);
  56.       break;
  57.  
  58.     case 2:
  59.       digitalWrite(BCDa_A, LOW);
  60.       digitalWrite(BCDa_B, HIGH);
  61.       digitalWrite(BCDa_C, LOW);
  62.       digitalWrite(BCDa_D, LOW);
  63.       break;
  64.  
  65.     case 3:
  66.       digitalWrite(BCDa_A, HIGH);
  67.       digitalWrite(BCDa_B, HIGH);
  68.       digitalWrite(BCDa_C, LOW);
  69.       digitalWrite(BCDa_D, LOW);
  70.       break;
  71.  
  72.     case 4:
  73.       digitalWrite(BCDa_A, LOW);
  74.       digitalWrite(BCDa_B, LOW);
  75.       digitalWrite(BCDa_C, HIGH);
  76.       digitalWrite(BCDa_D, LOW);
  77.       break;
  78.  
  79.     case 5:
  80.       digitalWrite(BCDa_A, HIGH);
  81.       digitalWrite(BCDa_B, LOW);
  82.       digitalWrite(BCDa_C, HIGH);
  83.       digitalWrite(BCDa_D, LOW);
  84.       break;
  85.  
  86.     case 6:
  87.       digitalWrite(BCDa_A, LOW);
  88.       digitalWrite(BCDa_B, HIGH);
  89.       digitalWrite(BCDa_C, HIGH);
  90.       digitalWrite(BCDa_D, LOW);
  91.       break;
  92.  
  93.     case 7:
  94.       digitalWrite(BCDa_A, HIGH);
  95.       digitalWrite(BCDa_B, HIGH);
  96.       digitalWrite(BCDa_C, HIGH);
  97.       digitalWrite(BCDa_D, LOW);
  98.       break;
  99.  
  100.     case 8:
  101.       digitalWrite(BCDa_A, LOW);
  102.       digitalWrite(BCDa_B, LOW);
  103.       digitalWrite(BCDa_C, LOW);
  104.       digitalWrite(BCDa_D, HIGH);
  105.       break;
  106.  
  107.     case 9:
  108.       digitalWrite(BCDa_A, HIGH);
  109.       digitalWrite(BCDa_B, LOW);
  110.       digitalWrite(BCDa_C, LOW);
  111.       digitalWrite(BCDa_D, HIGH);
  112.       break;
  113.   }
  114. }
  115.  
  116. //dirver pre desiatky:
  117. void BCDbDriver(int displayNumber) {
  118.   switch(displayNumber) {
  119.     case 0:
  120.       digitalWrite(BCDb_A, LOW);
  121.       digitalWrite(BCDb_B, LOW);
  122.       digitalWrite(BCDb_C, LOW);
  123.       digitalWrite(BCDb_D, LOW);
  124.       break;
  125.  
  126.     case 1:
  127.       digitalWrite(BCDb_A, HIGH);
  128.       digitalWrite(BCDb_B, LOW);
  129.       digitalWrite(BCDb_C, LOW);
  130.       digitalWrite(BCDb_D, LOW);
  131.       break;
  132.  
  133.     case 2:
  134.       digitalWrite(BCDb_A, LOW);
  135.       digitalWrite(BCDb_B, HIGH);
  136.       digitalWrite(BCDb_C, LOW);
  137.       digitalWrite(BCDb_D, LOW);
  138.       break;
  139.  
  140.     case 3:
  141.       digitalWrite(BCDb_A, HIGH);
  142.       digitalWrite(BCDb_B, HIGH);
  143.       digitalWrite(BCDb_C, LOW);
  144.       digitalWrite(BCDb_D, LOW);
  145.       break;
  146.  
  147.     case 4:
  148.       digitalWrite(BCDb_A, LOW);
  149.       digitalWrite(BCDb_B, LOW);
  150.       digitalWrite(BCDb_C, HIGH);
  151.       digitalWrite(BCDb_D, LOW);
  152.       break;
  153.  
  154.     case 5:
  155.       digitalWrite(BCDb_A, HIGH);
  156.       digitalWrite(BCDb_B, LOW);
  157.       digitalWrite(BCDb_C, HIGH);
  158.       digitalWrite(BCDb_D, LOW);
  159.       break;
  160.  
  161.     case 6:
  162.       digitalWrite(BCDb_A, LOW);
  163.       digitalWrite(BCDb_B, HIGH);
  164.       digitalWrite(BCDb_C, HIGH);
  165.       digitalWrite(BCDb_D, LOW);
  166.       break;
  167.  
  168.     case 7:
  169.       digitalWrite(BCDb_A, HIGH);
  170.       digitalWrite(BCDb_B, HIGH);
  171.       digitalWrite(BCDb_C, HIGH);
  172.       digitalWrite(BCDb_D, LOW);
  173.       break;
  174.  
  175.     case 8:
  176.       digitalWrite(BCDb_A, LOW);
  177.       digitalWrite(BCDb_B, LOW);
  178.       digitalWrite(BCDb_C, LOW);
  179.       digitalWrite(BCDb_D, HIGH);
  180.       break;
  181.  
  182.     case 9:
  183.       digitalWrite(BCDb_A, HIGH);
  184.       digitalWrite(BCDb_B, LOW);
  185.       digitalWrite(BCDb_C, LOW);
  186.       digitalWrite(BCDb_D, HIGH);
  187.       break;
  188.   }
  189. }
  190.  
  191. int getEncoderPos() {
  192.   n = digitalRead(encoderPinA);
  193.   if ((encoderPinALast == LOW) && (n == HIGH)) {
  194.     encoderPos--;
  195.   } else {
  196.     encoderPos++;
  197.   }
  198.  
  199.   if (encoderButton == HIGH) {
  200.     return encoderPos;
  201.   }
  202. }
  203.  
  204. void encoderToSSegment() {
  205.   int encPos = getEncoderPos();
  206.   int num;
  207.   int encPosJednicky = encPos % 10;
  208.   int encPosDesiatky = floor(encPos/10);
  209.   BCDaDriver(encPosJednicky);
  210.   BCDbDriver(encPosDesiatky);
  211. }
  212.  
  213. int checkFireStatus() {
  214.   if ((fireButton == LOW) && (getEncoderPos() == LOW)) {
  215.     return 0;
  216.   }
  217.  
  218.   if ((fireButton == HIGH) && (getEncoderPos() == LOW)) {
  219.     return 0;
  220.   }
  221.  
  222.   if((fireButton == HIGH) && (getEncoderPos() > 0)) {
  223.     return 1;
  224.   }
  225. }
  226.  
  227. void loop() {
  228.   digitalWrite(coilPin, LOW);
  229.   encoderToSSegment();
  230.   int fireStatus = checkFireStatus();
  231.   if(fireStatus == HIGH) {
  232.     digitalWrite(coilPin, HIGH);
  233.     delay(500);
  234.     digitalWrite(coilPin, LOW);
  235.     delay(500);
  236.     digitalWrite(coilPin, HIGH);
  237.     delay(500);
  238.     digitalWrite(coilPin, LOW);
  239.   }
  240. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement