Помогите допилить скетч до конца.
Появилось желание сделать кодовую панель из дискового наберателя. На нем контакта: счетчик, реверс и общая земля. Счетчик в спокойном состоянии замкнут с землей. При прокручивании диска, реверс замыкается с землей. При обратном возращении диска, счетчик размыкается N количество раз, далее реверс отмыкается от земли.
Ниже приведенный скетч работает иначе. Сначало нужно позамыкать счетчик сколько задано, потом один раз реверс. И так далее, пока реверс не будет нажат 4 раза. Далее срабатывает один из светодиодов (правильный код, либо ложный). Так же в скетче прописана кнопка сброса. Как правильно проинвертировать пины, чтобы все заработало как необходимо?
ВОТ САМ СКЕТЧ:
#define PIN_SW_COUNTER 2
#define PIN_SW_REVERSE 3
#define PIN_SW_HANGUP 4
#define PIN_LED_PASS 52
#define PIN_LED_FAIL 53
#define LEN_PASSCODE 4
#define DELAY_DEBOUNCE 50
const uint8_t pass[LEN_PASSCODE] = {1,2,3,4};
uint8_t code[LEN_PASSCODE];
uint8_t n_digits = 0;
void setup()
{
pinMode(PIN_SW_COUNTER, INPUT_PULLUP);
pinMode(PIN_SW_REVERSE, INPUT_PULLUP);
pinMode(PIN_SW_HANGUP, INPUT_PULLUP);
pinMode(PIN_LED_PASS, OUTPUT);
pinMode(PIN_LED_FAIL, OUTPUT);
}
void loop()
{
if (!digitalRead(PIN_SW_HANGUP))
{
n_digits = 0;
for (uint8_t i = 0; i < n_digits; i++) code[i] = 0;
digitalWrite(PIN_LED_PASS, LOW);
digitalWrite(PIN_LED_FAIL, LOW);
}
if (!digitalRead(PIN_SW_COUNTER))
{
code[n_digits]++;
delay(DELAY_DEBOUNCE);
while (!digitalRead(PIN_SW_COUNTER));
delay(DELAY_DEBOUNCE);
}
if (!digitalRead(PIN_SW_REVERSE))
{
n_digits++;
delay(DELAY_DEBOUNCE);
while (!digitalRead(PIN_SW_REVERSE));
delay(DELAY_DEBOUNCE);
}
if (n_digits>=LEN_PASSCODE)
{
bool match = true;
for (uint8_t i = 0; i < LEN_PASSCODE; i++) if (pass[i]!=code[i]) match = false;
if (match) digitalWrite(PIN_LED_PASS, HIGH);
else digitalWrite(PIN_LED_FAIL, HIGH);
n_digits = 0;
for (uint8_t i = 0; i < n_digits; i++) code[i] = 0;
}
}
Почему Вы считаете, что на пост не содержащий даже слова "пожалуйста", зато содержащий совершенно нечитабельный код, вставленный с нарушеним правил форума (http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii ) кто-то откликнется? Вы оптимист! :)))
а вдруг....))))