#ifndef shield_h_ #define shield_h_ #include "Arduino.h" #define ON 1 #define OFF 0 #define BUTTON_1_PIN A1 #define BUTTON_2_PIN A2 #define BUTTON_3_PIN A3 #define BEEPER_PIN 3 #define LED_1_PIN 13 #define LED_2_PIN 12 #define LED_3_PIN 11 #define LED_4_PIN 10 #define LED_1 1 #define LED_2 2 #define LED_3 4 #define LED_4 8 #define LED_ALL 15 #define LATCH_DIO 4 // Линия синхронизации данных #define CLK_DIO 7 // Линия тактирования #define DATA_DIO 8 // Линия передачи данных #define BUTTON_PRESSED_IND (0 << 6) #define BUTTON_SHORT_RELEASE_IND (1 << 6) #define BUTTON_LONG_PRESSED_IND (2 << 6) #define BUTTON_LONG_RELEASE_IND (3 << 6) #define BUTTON_1_PRESSED (1 | BUTTON_PRESSED_IND) #define BUTTON_1_SHORT_RELEASE (1 | BUTTON_SHORT_RELEASE_IND) #define BUTTON_1_LONG_PRESSED (1 | BUTTON_LONG_PRESSED_IND) #define BUTTON_1_LONG_RELEASE (1 | BUTTON_LONG_RELEASE_IND) #define BUTTON_2_PRESSED (2 | BUTTON_PRESSED_IND) #define BUTTON_2_SHORT_RELEASE (2 | BUTTON_SHORT_RELEASE_IND) #define BUTTON_2_LONG_PRESSED (2 | BUTTON_LONG_PRESSED_IND) #define BUTTON_2_LONG_RELEASE (2 | BUTTON_LONG_RELEASE_IND) #define BUTTON_3_PRESSED (3 | BUTTON_PRESSED_IND) #define BUTTON_3_SHORT_RELEASE (3 | BUTTON_SHORT_RELEASE_IND) #define BUTTON_3_LONG_PRESSED (3 | BUTTON_LONG_PRESSED_IND) #define BUTTON_3_LONG_RELEASE (3 | BUTTON_LONG_RELEASE_IND) class Shield { public: void initShield(); byte getButton(); void beep(unsigned int on_period = 50, unsigned int off_period = 0, byte cycles = 0, unsigned int loop_cycles = 0, unsigned int loop_delay_period = 0 ); void blinkLeds(byte led, int millsec, bool turnoff_delay); void blinkLeds(byte led1, byte led2, int millsec, bool turnoff_delay); void blinkLeds(byte led1, byte led2, byte led3, int millsec, bool turnoff_delay); void blinkLeds(int millsec, bool turnoff_delay); void writeNumber(byte seg, byte val); void writeAlpha(byte seg, byte val); void writeDisplay(int val); byte AsciiToSegmentValue (byte ascii); private: byte readButton(byte btn, byte &btnVal); // volatile byte m_valButton_1; // volatile byte m_valButton_2; // volatile byte m_valButton_3; // volatile unsigned long m_tm; volatile unsigned long m_timerButtonNext; volatile unsigned long m_timerButtonTo = 1000; volatile unsigned long m_timerButton = 0; volatile unsigned long m_timerBeeperNext; volatile unsigned long m_timerBeeperTo = 1; volatile unsigned long m_timerBeeperOnPeriod = 0; volatile unsigned long m_timerBeeperOffPeriod = 0; volatile unsigned long m_timerBeeperLoopDelayPeriod = 0; }; extern Shield MFS; #endif