TheJoKr Channel Ответов: 1

Как проверить, совпадает ли значение на дисплее с паролем?


#include <DHT11.h>
#include <Display.h>
#include <TM1637Display.h>

const int BUZZER = 3;
const int RED_LED = 4;
const int GREEN_LED = 5;
const int BLUE_LED = 6;
const int YELLOW_LED = 7;
const int KEY1 = 8;
const int KEY2 = 9;
const int LDR = 16;

int lastkstate = 1;
int mode = 0; // Mode 0 - Start, Mode 1 - Safe, Mode 2 - Unlocking the safe, Mode 3 - Change password
int dispPosition = 0;
int inputNumber = 1;
int password = 1234;

void setup() {
  // put your setup code here, to run once:
  pinMode(RED_LED, OUTPUT);
  pinMode(GREEN_LED, OUTPUT);
  pinMode(BLUE_LED, OUTPUT);
  pinMode(YELLOW_LED, OUTPUT);
  pinMode(KEY1, INPUT_PULLUP);
  pinMode(KEY2, INPUT_PULLUP);
  pinMode(LDR, INPUT);
  Display.show("----");
}

void loop() {
  // put your main code here, to run repeatedly:
  int k1state = digitalRead(KEY1);
  int k2state = digitalRead(KEY2);
  if (mode == 0) {
    Display.show("----");
    digitalWrite(RED_LED, HIGH);
    delay(100);
    digitalWrite(GREEN_LED, HIGH);
    delay(100);
    digitalWrite(BLUE_LED, HIGH);
    delay(100);
    digitalWrite(YELLOW_LED, HIGH);
    delay(100);
    digitalWrite(RED_LED, LOW);
    delay(100);
    digitalWrite(GREEN_LED, LOW);
    delay(100);
    digitalWrite(BLUE_LED, LOW);
    delay(100);
    digitalWrite(YELLOW_LED, LOW);
    delay(100);
    mode++;
  }
  if (mode == 1) {
    if (k1state != lastkstate) {
      if (k1state == 0) {
        delay(50);
        dispPosition++;
        inputNumber = 1;
      }
    }
    if (k2state != lastkstate) {
      if (k2state == 0) {
        delay(50);
        inputNumber++;
      }
    }
    delay(50);
    lastkstate = k2state;
    if (inputNumber > 4) {
      inputNumber = 1;
    }
    if (inputNumber == 1)Display.showCharAt(dispPosition, '1');
    if (inputNumber == 2)Display.showCharAt(dispPosition, '2');
    if (inputNumber == 3)Display.showCharAt(dispPosition, '3');
    if (inputNumber == 4)Display.showCharAt(dispPosition, '4');
    delay(50);
    lastkstate = k1state;
    if (dispPosition > 3) {
      mode++;
    }
  }
  if (mode == 2) {
    if
  }
}


Что я уже пробовал:

Привет, Новичок в Arduino...У меня есть задание сделать сейф с помощью Arduino Rich Shield.. В режиме 2 мне нужно проверить, соответствует ли значение на дисплее заданному паролю, но я не могу найти способ сравнить эти два числа...Я был бы очень признателен, если бы кто-нибудь помог мне с этим. Заранее спасибо

Richard MacCutchan

Что не так с Ан if заявление?

1 Ответов

Рейтинг:
1

KarstenK

должно быть действительно легко сравнить два числа

if( input == passcode ) {
// check sucessful
} else {
// handle passcode error
}
Вы также можете искать цикл do while, например
do {
 // some code to enter passcode
 input = getPasscode();
} while( input != passcode )
но вот правильный пароль условие выхода из цикла ;-)


TheJoKr Channel

Я попробовал if (mode == 2) {
if ( input == код доступа ) {
digitalWrite(GREEN_LED, HIGH);
} еще {
digitalWrite(RED_LED, HIGH);
}
}

но по какой-то причине включался только красный светодиод, независимо от того, был ли код неправильным или правильным..