Последовательное включения
- Войдите на сайт для отправки комментариев
Вс, 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) Если "порт при считывании валидной карты" это светодиод, то Вы так написали чтобы он мигал:
68digitalWrite(yes, HIGH);69delay(20);70digitalWrite(yes, LOW);нет надо чтобы горел а он пульсирует 5 раз.delay только скорость меняет.
А по-моему это скетч имеет человека, а человек имеет наши мозги.
Михан, тебе или в песочницу, или в ищу исполнителя.
ок спасибо братишка.
Так вы родственники!? :-)
само собой!!!
Так вы родственники!? :-)
Я бы попросил... Обезьяна в какой то мере брат человека. Но в этом случае он явно сводный :)
Я бы попросил...
отец всегда неизвестен, не? )))
отец всегда неизвестен, не? )))
Ну если бы была неизвестна мать было бы странно, не ? )))