Помогите понять, почему в коде, команда else не работает. При поднесении метки к считывателю digitalWrite(relay, 1); исполняется, а digitalWrite(relay, 0); нет.
C++:
if (uidDec == 822179977) // Сравниваем Uid метки, если он равен заданому то реле открывает.
{
digitalWrite(relay, 1);
}
else {
digitalWrite(relay, 0);
}
C++:
#include <SPI.h>
#include <MFRC522.h> // библиотека "RFID".
#define SS_PIN 10
#define RST_PIN 9
#define relay 14
MFRC522 mfrc522(SS_PIN, RST_PIN);
unsigned long uidDec, uidDecTemp; // для храниения номера метки в десятичном формате
void setup() {
Serial.begin(9600);
Serial.println("Waiting for card...");
SPI.begin(); // инициализация SPI / Init SPI bus.
mfrc522.PCD_Init(); // инициализация MFRC522 / Init MFRC522 card.
pinMode(relay,OUTPUT);
}
void loop() {
// Поиск новой метки
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Выбор метки
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
uidDec = 0;
// Выдача серийного номера метки.
for (byte i = 0; i < mfrc522.uid.size; i++)
{
uidDecTemp = mfrc522.uid.uidByte[i];
uidDec = uidDec * 256 + uidDecTemp;
}
Serial.println("Card UID: ");
Serial.println(uidDec); // Выводим UID метки в консоль.
if (uidDec == 822179977) // Сравниваем Uid метки, если он равен заданому то реле открывает.
{
digitalWrite(relay, 1);
}
else {
digitalWrite(relay, 0);
}
}