Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <math.h>
- int encoderPinA = 13;
- int encoderPinB = 12;
- int encoderButton = 11;
- int fireButton = 2;
- int coilPin = 0;
- //BCDb je pre jednotky
- int BCDa_A = 3;
- int BCDa_B = 4;
- int BCDa_C = 5;
- int BCDa_D = 6;
- //BCDb je pre desiatky
- int BCDb_A = 7;
- int BCDb_B = 8;
- int BCDb_C = 9;
- int BCDb_D = 10;
- void setup() {
- pinMode(encoderPinA, INPUT);
- pinMode(encoderPinB, INPUT);
- pinMode(encoderButton, INPUT);
- pinMode(fireButton, INPUT);
- pinMode(BCDa_A, OUTPUT);
- pinMode(BCDa_B, OUTPUT);
- pinMode(BCDa_C, OUTPUT);
- pinMode(BCDa_D, OUTPUT);
- pinMode(BCDb_A, OUTPUT);
- pinMode(BCDb_B, OUTPUT);
- pinMode(BCDb_C, OUTPUT);
- pinMode(BCDb_D, OUTPUT);
- pinMode(coilPin, OUTPUT);
- }
- int encoderPosVal;
- int encoderPos = 0;
- int encoderPinALast = LOW;
- int n = LOW;
- //driver pre jedničky:
- void BCDaDriver(int displayNumber) {
- switch(displayNumber) {
- case 0:
- digitalWrite(BCDa_A, LOW);
- digitalWrite(BCDa_B, LOW);
- digitalWrite(BCDa_C, LOW);
- digitalWrite(BCDa_D, LOW);
- break;
- case 1:
- digitalWrite(BCDa_A, HIGH);
- digitalWrite(BCDa_B, LOW);
- digitalWrite(BCDa_C, LOW);
- digitalWrite(BCDa_D, LOW);
- break;
- case 2:
- digitalWrite(BCDa_A, LOW);
- digitalWrite(BCDa_B, HIGH);
- digitalWrite(BCDa_C, LOW);
- digitalWrite(BCDa_D, LOW);
- break;
- case 3:
- digitalWrite(BCDa_A, HIGH);
- digitalWrite(BCDa_B, HIGH);
- digitalWrite(BCDa_C, LOW);
- digitalWrite(BCDa_D, LOW);
- break;
- case 4:
- digitalWrite(BCDa_A, LOW);
- digitalWrite(BCDa_B, LOW);
- digitalWrite(BCDa_C, HIGH);
- digitalWrite(BCDa_D, LOW);
- break;
- case 5:
- digitalWrite(BCDa_A, HIGH);
- digitalWrite(BCDa_B, LOW);
- digitalWrite(BCDa_C, HIGH);
- digitalWrite(BCDa_D, LOW);
- break;
- case 6:
- digitalWrite(BCDa_A, LOW);
- digitalWrite(BCDa_B, HIGH);
- digitalWrite(BCDa_C, HIGH);
- digitalWrite(BCDa_D, LOW);
- break;
- case 7:
- digitalWrite(BCDa_A, HIGH);
- digitalWrite(BCDa_B, HIGH);
- digitalWrite(BCDa_C, HIGH);
- digitalWrite(BCDa_D, LOW);
- break;
- case 8:
- digitalWrite(BCDa_A, LOW);
- digitalWrite(BCDa_B, LOW);
- digitalWrite(BCDa_C, LOW);
- digitalWrite(BCDa_D, HIGH);
- break;
- case 9:
- digitalWrite(BCDa_A, HIGH);
- digitalWrite(BCDa_B, LOW);
- digitalWrite(BCDa_C, LOW);
- digitalWrite(BCDa_D, HIGH);
- break;
- }
- }
- //dirver pre desiatky:
- void BCDbDriver(int displayNumber) {
- switch(displayNumber) {
- case 0:
- digitalWrite(BCDb_A, LOW);
- digitalWrite(BCDb_B, LOW);
- digitalWrite(BCDb_C, LOW);
- digitalWrite(BCDb_D, LOW);
- break;
- case 1:
- digitalWrite(BCDb_A, HIGH);
- digitalWrite(BCDb_B, LOW);
- digitalWrite(BCDb_C, LOW);
- digitalWrite(BCDb_D, LOW);
- break;
- case 2:
- digitalWrite(BCDb_A, LOW);
- digitalWrite(BCDb_B, HIGH);
- digitalWrite(BCDb_C, LOW);
- digitalWrite(BCDb_D, LOW);
- break;
- case 3:
- digitalWrite(BCDb_A, HIGH);
- digitalWrite(BCDb_B, HIGH);
- digitalWrite(BCDb_C, LOW);
- digitalWrite(BCDb_D, LOW);
- break;
- case 4:
- digitalWrite(BCDb_A, LOW);
- digitalWrite(BCDb_B, LOW);
- digitalWrite(BCDb_C, HIGH);
- digitalWrite(BCDb_D, LOW);
- break;
- case 5:
- digitalWrite(BCDb_A, HIGH);
- digitalWrite(BCDb_B, LOW);
- digitalWrite(BCDb_C, HIGH);
- digitalWrite(BCDb_D, LOW);
- break;
- case 6:
- digitalWrite(BCDb_A, LOW);
- digitalWrite(BCDb_B, HIGH);
- digitalWrite(BCDb_C, HIGH);
- digitalWrite(BCDb_D, LOW);
- break;
- case 7:
- digitalWrite(BCDb_A, HIGH);
- digitalWrite(BCDb_B, HIGH);
- digitalWrite(BCDb_C, HIGH);
- digitalWrite(BCDb_D, LOW);
- break;
- case 8:
- digitalWrite(BCDb_A, LOW);
- digitalWrite(BCDb_B, LOW);
- digitalWrite(BCDb_C, LOW);
- digitalWrite(BCDb_D, HIGH);
- break;
- case 9:
- digitalWrite(BCDb_A, HIGH);
- digitalWrite(BCDb_B, LOW);
- digitalWrite(BCDb_C, LOW);
- digitalWrite(BCDb_D, HIGH);
- break;
- }
- }
- int getEncoderPos() {
- n = digitalRead(encoderPinA);
- if ((encoderPinALast == LOW) && (n == HIGH)) {
- encoderPos--;
- } else {
- encoderPos++;
- }
- if (encoderButton == HIGH) {
- return encoderPos;
- }
- }
- void encoderToSSegment() {
- int encPos = getEncoderPos();
- int num;
- int encPosJednicky = encPos % 10;
- int encPosDesiatky = floor(encPos/10);
- BCDaDriver(encPosJednicky);
- BCDbDriver(encPosDesiatky);
- }
- int checkFireStatus() {
- if ((fireButton == LOW) && (getEncoderPos() == LOW)) {
- return 0;
- }
- if ((fireButton == HIGH) && (getEncoderPos() == LOW)) {
- return 0;
- }
- if((fireButton == HIGH) && (getEncoderPos() > 0)) {
- return 1;
- }
- }
- void loop() {
- digitalWrite(coilPin, LOW);
- encoderToSSegment();
- int fireStatus = checkFireStatus();
- if(fireStatus == HIGH) {
- digitalWrite(coilPin, HIGH);
- delay(500);
- digitalWrite(coilPin, LOW);
- delay(500);
- digitalWrite(coilPin, HIGH);
- delay(500);
- digitalWrite(coilPin, LOW);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement