Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Arduino digital pins used to light up
- // corresponding segments on the LED display
- #define A 3
- #define B 2
- #define C 6
- #define D 8
- #define E 7
- #define FF 4
- #define G 5
- // Pins driving common anodes
- #define CA1 13
- #define CA2 12
- //Trigger button
- #define T A0
- //Magazine Button
- #define M A5
- //Mode Switches
- #define M6 A2
- #define M18 A3
- #define M35 A4
- // Pins for A B C D E F G, in sequence
- const int segs[7] = { A, B, C, D, E, FF, G };
- // Segments that make each number
- const byte numbers[10] = { 0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, 0b1101101,
- 0b1111101, 0b0000111, 0b1111111, 0b1101111 };
- //State variables
- boolean trigger = false, magazine = false;
- int magtype = 18;
- int ammo = 0;
- void setup() {
- pinMode(A, OUTPUT);
- pinMode(B, OUTPUT);
- pinMode(C, OUTPUT);
- pinMode(D, OUTPUT);
- pinMode(E, OUTPUT);
- pinMode(FF, OUTPUT);
- pinMode(G, OUTPUT);
- pinMode(CA1, OUTPUT);
- pinMode(CA2, OUTPUT);
- pinMode(T, INPUT);
- pinMode(M, INPUT);
- pinMode(M6, INPUT);
- pinMode(M18, INPUT);
- pinMode(M35, INPUT);
- // Serial.begin(9600);
- }
- void loop() {
- int disp = 0;
- boolean TS = digitalRead(T) == HIGH;
- boolean MS = digitalRead(M) == HIGH;
- int mode = magtype;
- mode = 6;
- if(digitalRead(M6) == HIGH) mode = 18;
- if(digitalRead(M35) == HIGH) mode = 35;
- if(mode != magtype){
- magtype = mode;
- if(MS) Reload();
- }
- if(MS){
- if(!magazine){
- //Reload here
- Reload();
- }
- if(magazine){
- if(TS){
- if(!trigger){
- if(ammo > 0) ammo --;
- else{
- //play fancy sounds here
- }
- }
- }
- disp = ammo;
- }
- }
- trigger = TS;
- magazine = MS;
- byte digit1 = floor(disp/10), digit2 = disp%10;
- lightDigit1(numbers[digit1]);
- delay(5);
- lightDigit2(numbers[digit2]);
- delay(5);
- }
- void Reload() {
- ammo = magtype;
- //play fancy sounds here
- }
- void lightDigit1(byte number) {
- digitalWrite(CA1, LOW);
- digitalWrite(CA2, HIGH);
- lightSegments(number);
- }
- void lightDigit2(byte number) {
- digitalWrite(CA1, HIGH);
- digitalWrite(CA2, LOW);
- lightSegments(number);
- }
- void lightSegments(byte number) {
- for (int i = 0; i < 7; i++) {
- int bit = bitRead(number, i);
- digitalWrite(segs[i], bit);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement