Здравствуйте форумчане. Обращаюсь к вам т.к. не силен в программировании, но появилась нужда в создании RFID системы. Аппаратно все работает, скачал скетч в интернете, залил все заработало как нужно. Мне очень нужна ваша помощь в подробном комментировании кода. Вот так он выглядит: #include <SoftwareSerial.h> SoftwareSerial RFID(2, 3); // RX and TX int data1 = 0; int ok = -1; int yes = 13; int no = 12; int tag1[14] = {2,55,49,48,48,56,54,53,70,70,48,53,56,3}; int newtag[14] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0}; void setup() { RFID.begin(9600); Serial.begin(9600); pinMode(yes, OUTPUT); pinMode(no, OUTPUT); } boolean comparetag(int aa[14], int bb[14]) { boolean ff = false; int fg = 0; for (int cc = 0 ; cc < 14 ; cc++) { if (aa[cc] == bb[cc]) { fg++; } } if (fg == 14) { ff = true; } return ff; } void checkmytags() { ok = 0; if (comparetag(newtag, tag1) == true) { ok++; ok++; } } void readTags() { ok = -1; if (RFID.available() > 0) { delay(100); for (int z = 0 ; z < 14 ; z++) { data1 = RFID.read(); newtag[z] = data1; } RFID.flush(); checkmytags(); } if (ok > 0) { Serial.println("Yes"); digitalWrite(yes, HIGH); delay(1000); digitalWrite(yes, LOW); ok = -1; } else if (ok == 0) { Serial.println("NO!!!"); digitalWrite(no, HIGH); delay(1000); digitalWrite(no, LOW); ok = -1; } } void loop() { readTags(); } Заранее спасибо, очень благодарен за ответ. Ну или просто объясните то делает этот кусок скетча boolean comparetag(int aa[14], int bb[14]) { boolean ff = false; int fg = 0; for (int cc = 0 ; cc < 14 ; cc++) { if (aa[cc] == bb[cc]) { fg++; } } if (fg == 14) { ff = true; } return ff; } void checkmytags() { ok = 0; if (comparetag(newtag, tag1) == true) { ok++; ok++; } }
Функция comparetag сравнивает 2 массива. Если все элементы массивов равны - возвращает true (ИСТИНА), иначе - false (ЛОЖЬ). Вот то же самое, только этот вариант не использует лишние переменные и возвращает false на первом несовпадении элементов массива, не перебирая его полностью. Код (Text): boolean comparetag(int tag1[14], int tag2[14]) { for (int i = 0 ; i < 14 ; i++) if (tag1[i] != tag2[i]) return false; return true; }