Advertisement
Guest User

Untitled

a guest
Mar 2nd, 2012
416
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.36 KB | None | 0 0
  1. // Arduino digital pins used to light up
  2. // corresponding segments on the LED display
  3.  
  4. #define A 3
  5. #define B 2
  6. #define C 6
  7. #define D 8
  8. #define E 7
  9. #define FF 4
  10. #define G 5
  11.  
  12. // Pins driving common anodes
  13. #define CA1 13
  14. #define CA2 12
  15.  
  16. //Trigger button
  17. #define T A0
  18.  
  19. //Magazine Button
  20. #define M A5
  21.  
  22. //Mode Switches
  23. #define M6 A2
  24. #define M18 A3
  25. #define M35 A4
  26.  
  27. // Pins for A B C D E F G, in sequence
  28. const int segs[7] = { A, B, C, D, E, FF, G };
  29.  
  30. // Segments that make each number
  31.  
  32. const byte numbers[10] = { 0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, 0b1101101,
  33. 0b1111101, 0b0000111, 0b1111111, 0b1101111 };
  34.  
  35. //State variables
  36. boolean trigger = false, magazine = false;
  37. int magtype = 18;
  38. int ammo = 0;
  39.  
  40. void setup() {
  41.   pinMode(A, OUTPUT);
  42.   pinMode(B, OUTPUT);
  43.   pinMode(C, OUTPUT);
  44.   pinMode(D, OUTPUT);
  45.   pinMode(E, OUTPUT);
  46.   pinMode(FF, OUTPUT);
  47.   pinMode(G, OUTPUT);
  48.   pinMode(CA1, OUTPUT);
  49.   pinMode(CA2, OUTPUT);
  50.  
  51.   pinMode(T, INPUT);
  52.   pinMode(M, INPUT);
  53.  
  54.   pinMode(M6, INPUT);
  55.   pinMode(M18, INPUT);
  56.   pinMode(M35, INPUT);
  57.  
  58.  
  59. //  Serial.begin(9600);
  60. }
  61.  
  62. void loop() {
  63.  
  64.   int disp = 0;
  65.  
  66.   boolean TS = digitalRead(T) == HIGH;
  67.   boolean MS = digitalRead(M) == HIGH;
  68.   int mode = magtype;
  69.  
  70.  
  71.  
  72.   mode = 6;
  73.   if(digitalRead(M6) == HIGH) mode = 18;
  74.   if(digitalRead(M35) == HIGH) mode = 35;
  75.  
  76.   if(mode != magtype){
  77.     magtype = mode;
  78.     if(MS) Reload();
  79.   }
  80.  
  81.   if(MS){
  82.     if(!magazine){
  83.       //Reload here
  84.       Reload();
  85.     }
  86.     if(magazine){
  87.       if(TS){
  88.         if(!trigger){
  89.           if(ammo > 0) ammo --;
  90.           else{
  91.             //play fancy sounds here
  92.           }
  93.         }
  94.       }
  95.      
  96.       disp = ammo;
  97.     }
  98.   }
  99.  
  100.   trigger = TS;
  101.   magazine = MS;
  102.  
  103.   byte digit1 = floor(disp/10), digit2 = disp%10;
  104.  
  105.   lightDigit1(numbers[digit1]);
  106.   delay(5);
  107.   lightDigit2(numbers[digit2]);
  108.   delay(5);
  109. }
  110.  
  111. void Reload() {
  112.   ammo = magtype;
  113.   //play fancy sounds here
  114. }
  115.  
  116. void lightDigit1(byte number) {
  117.   digitalWrite(CA1, LOW);
  118.   digitalWrite(CA2, HIGH);
  119.   lightSegments(number);
  120. }
  121.  
  122. void lightDigit2(byte number) {
  123.   digitalWrite(CA1, HIGH);
  124.   digitalWrite(CA2, LOW);
  125.   lightSegments(number);
  126. }
  127.  
  128. void lightSegments(byte number) {
  129.   for (int i = 0; i < 7; i++) {
  130.     int bit = bitRead(number, i);
  131.     digitalWrite(segs[i], bit);
  132.   }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement