Последовательное включения
- Войдите на сайт для отправки комментариев
Вс, 26/12/2021 - 20:15
Здравствуйте.имею скетч.подскажите как поправить чтобы при подносе карты срабатывал пин 6 а при повторном подносе пин 5.и потом опять пин 6.и так по кругу.поднёс 5 поднёс 6 поднёс 5.
#include <SoftwareSerial.h> // Подключаем сам ридер SoftwareSerial RfidReader(2,3); int data1 = 0; bool ok = false; bool reads = false; // активируемый порт при считывании валидной карты int yes = 6; // активируемый порт при считывании карты не из списка int no = 7; // Массив с номерами карт. Для увеличения валидных карт просто добавьте еще один массив внутрь int tags[][14] = { {2, 52, 50, 48, 48, 50, 69, 48, 49, 70, 69, 57, 51, 3 }, {2, 49, 54, 48, 48, 49, 69, 55, 50, 56, 55, 70, 68, 3 } // просто добавьте сюда еще строки - например {2, 49, 54, 48, 48, 49, 69, 55, 50, 56, 55, 70, 68, 3 } }; int newtag[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0}; void setup(){ RfidReader.begin(9600); Serial.begin(9600); pinMode(yes, OUTPUT); pinMode(no, OUTPUT); } // данная функция сравнивает по очереди все 14 символов // массива из базового массива, и только что считанного массива bool comparetag(int aa[14], int bb[14]){ bool 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 loop(){ reads = ok = false; // если карта поднесена if (RfidReader.available() > 0) { delay(100); // создаем массив с данными поднесенной карты for (int x = 0 ; x < 14 ; x++){ data1 = RfidReader.read(); newtag[x] = data1; } RfidReader.flush(); reads = true; // по очереди сравниваем данные карты с валидным массивом for(int i = 0; i < sizeof(tags) ; i++){ if (comparetag(newtag, tags[i]) == true){ ok = true; break; } } } // если произошло считывание if(reads){ // если карта есть в списке валидных if (ok){ digitalWrite(yes, HIGH); delay(20); digitalWrite(yes, LOW); } // если карт нету в списке валидных else { digitalWrite(no, HIGH); delay(20); digitalWrite(no, LOW); } ok = false; } }
а кто знает почему светодиот промиргивает а не горит.
1) Если "порт при считывании валидной карты" это светодиод, то Вы так написали чтобы он мигал:
68
digitalWrite(yes, HIGH);
69
delay(20);
70
digitalWrite(yes, LOW);
нет надо чтобы горел а он пульсирует 5 раз.delay только скорость меняет.
А по-моему это скетч имеет человека, а человек имеет наши мозги.
Михан, тебе или в песочницу, или в ищу исполнителя.
ок спасибо братишка.
Так вы родственники!? :-)
само собой!!!
Так вы родственники!? :-)
Я бы попросил... Обезьяна в какой то мере брат человека. Но в этом случае он явно сводный :)
Я бы попросил...
отец всегда неизвестен, не? )))
отец всегда неизвестен, не? )))
Ну если бы была неизвестна мать было бы странно, не ? )))