Последовательное включения

михан
Offline
Зарегистрирован: 27.09.2020

Здравствуйте.имею скетч.подскажите как поправить чтобы при подносе карты срабатывал пин 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;
 }
}

 

михан
Offline
Зарегистрирован: 27.09.2020

а кто знает почему светодиот промиргивает а не горит.

ddr2
Offline
Зарегистрирован: 27.12.2020

1) Если "порт при считывании валидной карты" это светодиод, то Вы так написали чтобы он мигал: 

68    digitalWrite(yes, HIGH);
69    delay(20);
70    digitalWrite(yes, LOW);

 

михан
Offline
Зарегистрирован: 27.09.2020

нет надо чтобы горел а он пульсирует 5 раз.delay только скорость меняет.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ddr2 пишет:
Вы так написали :
Кто Вам это сказал? Человек не написал, человек "имеет" скетч.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

А по-моему это скетч имеет человека, а человек имеет наши мозги.

Михан, тебе или в песочницу, или в ищу исполнителя. 

михан
Offline
Зарегистрирован: 27.09.2020

ок спасибо братишка.

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Так вы родственники!?  :-)

михан
Offline
Зарегистрирован: 27.09.2020

само собой!!!

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Rumata пишет:

Так вы родственники!?  :-)

Я бы попросил... Обезьяна в какой то мере брат человека. Но в этом случае он явно сводный :)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

brokly пишет:

Я бы попросил...

отец всегда неизвестен, не? )))

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

ua6em пишет:

отец всегда неизвестен, не? )))

Ну если бы была неизвестна мать было бы странно, не ? )))