Нужно прописать вторую карту для rfid сканера с первой все работает

Fearles8383
Offline
Зарегистрирован: 14.05.2015
1 Работает с одной картой. вторую прописать не удаеться нужна помощь
volatile long reader1 = 0;
003  
004 volatile int reader1Count = 0;

void reader1One(void) {
007

008
reader1Count++;
009

010
reader1 = reader1 << 1;
011

012
reader1 |= 1;
013

014
}
015

016
void reader1Zero(void) {
017

018
reader1Count++;
019

020
reader1 = reader1 << 1;
021

022
}
023

024
void setup()
025

026
{
027

028
Serial.begin(9600);
029

030
// Attach pin change interrupt service routines from the Wiegand RFID readers
031

032
attachInterrupt(0, reader1Zero, RISING);//DATA0 to pin 2
033

034
attachInterrupt(1, reader1One, RISING); //DATA1 to pin 3
035

036
delay(10);
037

038
// the interrupt in the Atmel processor misses out the first negitave pulse as the inputs are already high,
039

040
// so this gives a pulse to the reader input line to get the interrupts working properly.
041

042
// Then clear out the reader variables.
043

044
// The readers are open collector sitting normally at a one so this is OK
045

046
for(int i = 2; i<4; i++){
047

048
pinMode(i, OUTPUT);
049

050
digitalWrite(i, HIGH); // enable internal pull up causing a one
051

052
digitalWrite(i, LOW); // disable internal pull up causing zero and thus an interrupt
053

054
pinMode(i, INPUT);
055

056
digitalWrite(i, HIGH); // enable internal pull up
057

058
}
059

060
delay(10);
061

062
// put the reader input variables to zero
063

064
reader1 = 0;
065

066
reader1Count = 0;
067

068
}
069

070
void loop() {
071

072
if(reader1Count >=26){
073 if (reader1 = reader1 ==157924){ - номер карты 
Serial.print("Hello); - действие }
074
int serialNumber=(reader1 >> 1) & 0x3fff;
075

076
int siteCode= (reader1 >> 17) & 0x3ff;
077

078
Serial.print(" Reader 1:");
079

080
Serial.print(reader1,HEX);
081

082
Serial.print(" ");
083

084
Serial.print("Reader 1 converted to DEC:");
085

086
Serial.print(reader1& 0xfffffff);
087

088
Serial.print(" ");
089

090
Serial.print("siteCode:");
091

092
Serial.print(siteCode);
093

094
Serial.print(" ");
095

096
Serial.print("serial number:");
097

098
Serial.println(serialNumber);
099

100
reader1 = 0;
101

102
reader1Count = 0;
103

104
}
105

106
}

Focus
Offline
Зарегистрирован: 05.04.2015

http://arduino.ru/forum/obshchii/kak-popisat-vtoruyu-kartu-s-nomerom-dlya-rfid-skanera Тут тоже человеку надо. Я уверен, вдвоём вы решите проблему :D

PS Уже почистили дубль :)

Fearles8383
Offline
Зарегистрирован: 14.05.2015

мне исполнитель нужен 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Fearles8383 пишет:

мне исполнитель нужен 

Вставьте код, как надо. Невозможно понять, что у вас написано.

Вы уверены, что вам нужен исполнитель?

Вот готовое решение:

https://www.youtube.com/watch?v=z6-q_BS9LmQ

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Бегемот, ему точно нужен. Обьявляй ценник и делай. А то он уже весь форум уфлудил.

Fearles8383
Offline
Зарегистрирован: 14.05.2015

на до именно с этим кодом в идео другой сканер - в данном коде работает все что надо но с одной картой прописать несколько не получаеться 

volatile long reader1 = 0;
	 
volatile int reader1Count = 0;
void reader1One(void) {



reader1Count++;


reader1 = reader1 << 1;

reader1 |= 1;


}



void reader1Zero(void) {



reader1Count++;


reader1 = reader1 << 1;


}



void setup()


{



Serial.begin(9600);



// Attach pin change interrupt service routines from the Wiegand RFID readers



attachInterrupt(0, reader1Zero, RISING);//DATA0 to pin 2


attachInterrupt(1, reader1One, RISING); //DATA1 to pin 3



delay(10);



// the interrupt in the Atmel processor misses out the first negitave pulse as the inputs are already high,



// so this gives a pulse to the reader input line to get the interrupts working properly.



// Then clear out the reader variables.


// The readers are open collector sitting normally at a one so this is OK



for(int i = 2; i<4; i++){



pinMode(i, OUTPUT);



digitalWrite(i, HIGH); // enable internal pull up causing a one



digitalWrite(i, LOW); // disable internal pull up causing zero and thus an interrupt



pinMode(i, INPUT);



digitalWrite(i, HIGH); // enable internal pull up



}



delay(10);



// put the reader input variables to zero



reader1 = 0;



reader1Count = 0;



}



void loop() {


if(reader1Count >=26){
 if (reader1 = reader1 ==157924){ - номер карты 
Serial.print("Hello); - действие }

int serialNumber=(reader1 >> 1) & 0x3fff;



int siteCode= (reader1 >> 17) & 0x3ff;



Serial.print(" Reader 1:");



Serial.print(reader1,HEX);



Serial.print(" ");



Serial.print("Reader 1 converted to DEC:");



Serial.print(reader1& 0xfffffff);



Serial.print(" ");



Serial.print("siteCode:");



Serial.print(siteCode);



Serial.print(" ");



Serial.print("serial number:");


Serial.println(serialNumber);



reader1 = 0;



reader1Count = 0;



}

 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Puhlyaviy пишет:
Бегемот, ему точно нужен. Обьявляй ценник и делай. А то он уже весь форум уфлудил.

Сам ты Бегемот...

Как я могу объявить ценник? А если человека кандрашка хватит?
А чем за 500 рублей работать - лучше за спасибо...

Fearles8383
Offline
Зарегистрирован: 14.05.2015

вот частьь\ отвечающая за номер карты и за действие 

void loop() {
124  
125  
126 if(reader1Count >=26){
127  if (reader1 = reader1 ==157924){ - номер карты
128

Serial.print("Hello); - действие }

 а как прописать вторую карту сномером ?

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Gippopotam пишет:

Puhlyaviy пишет:
Бегемот, ему точно нужен. Обьявляй ценник и делай. А то он уже весь форум уфлудил.

Сам ты Бегемот...

Как я могу объявить ценник? А если человека кандрашка хватит?
А чем за 500 рублей работать - лучше за спасибо...


Ну попа там, попа тут. Сделай забесплатно. Кому от этого хуже.

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Так...

Вчитался в код - предложение снимается...

Это

if (reader1 = reader1 ==157924)

мне не осилить, как и сдвиг на 17 бит

 

Fearles8383
Offline
Зарегистрирован: 14.05.2015

вообще ни как не решим ?

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Fearles8383 пишет:

вообще ни как не решим ?

Дайте источник, откуда взяли программу.

Дайте описание RFID-ридера.

Fearles8383
Offline
Зарегистрирован: 14.05.2015
void loop() {
124  
125  
126 if(reader1Count >=26){
127  if (reader1 = reader1 ==157924){ - номер карты
128

Serial.print("Hello); - действие }

 esle if

{

(reader1 = reader1 ==номер карты){

Serial.print("PRI);

}

нельзя ли так. 

 

Fearles8383
Offline
Зарегистрирован: 14.05.2015

источник тут где то на форуме был  а сканер 

Grove - 125KHz RFID

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Э...

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Gippopotam пишет:

Э...


Ога. Он уже месяц тут и даже код вставлять не научился. Так что ты лучше цену назови. Ибо здоровье потом чем востанавливать?

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Fearles8383 пишет:

источник тут где то на форуме был  а сканер 

Grove - 125KHz RFID

Загрузите этот код. Он тоже понтовый, с битовыми операциями, но хотя бы понятно, что и как работает.

http://www.seeedstudio.com/wiki/File:RFID_Wiegand_INT.zip

Fearles8383
Offline
Зарегистрирован: 14.05.2015

а надо на определенную 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Fearles8383 пишет:

а надо на определенную 

Ну вы-же понимаете, что очень сложно?

Нужно добавить целых 10 строчек кода...

Fearles8383
Offline
Зарегистрирован: 14.05.2015

сколько за работу хотите просто уже ни кто не может просто помочь ?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Gippopotam пишет:

Fearles8383 пишет:

а надо на определенную 

Ну вы-же понимаете, что очень сложно?

Нужно добавить целых 10 строчек кода...


Гыыыы, ну ты сам напросился :)

Fearles8383
Offline
Зарегистрирован: 14.05.2015

да ну что я могу сделать ? не получаеться не фига у меня 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Fearles8383 пишет:

сколько за работу хотите просто уже ни кто не может просто помочь ?

Пухлявый с вами заодно? :)

Он меня троллит, чтобы я вам помог?

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Fearles8383 пишет:

да ну что я могу сделать ? не получаеться не фига у меня 

Хорошо, только скажите - а вам это зачем?

Fearles8383
Offline
Зарегистрирован: 14.05.2015

да нет я его не знаю он всех тролит 

Fearles8383
Offline
Зарегистрирован: 14.05.2015

если честно честно это курсовая моя мучаюсь уже не знамо сколько помогите если не сложно чисто по человечески 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Fearles8383 пишет:

да нет я его не знаю он всех тролит 


Кажется он что-то подозревает. :)

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Э не, курсовые помогаем только после того как озвучите свое место учебы, руководителя и все такое

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Fearles8383 пишет:

если честно честно это курсовая моя мучаюсь уже не знамо сколько помогите если не сложно чисто по человечески 

Смотрите - тут такой нюанс. Чтобы иметь возможность различать карты, Ардуино должна знать их номера уже на этапе выполнения программы. Можно записать из на внешний носитель или в EEPROM, а можно банально вписать в сам скетч (как в том скетче, что вы выложили в начале темы). Если первый вариант - то можно опять-же сделать красиво - чтобы все само записывалось, а можно руками.
Вам как нужно?

Fearles8383
Offline
Зарегистрирован: 14.05.2015

как вам проще мне главное чтоб работало

Fearles8383
Offline
Зарегистрирован: 14.05.2015

я думаю проще руками вбивать  

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Fearles8383 пишет:

как вам проще мне главное чтоб работало

Тогда загружайте Сиидстудиевский скетч. При корректной работе он выводит в порт номера приложенных карточек.

Приложите две карточки и вышлите мне их номера.

Fearles8383
Offline
Зарегистрирован: 14.05.2015
6856671
15866998
 

 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Fearles8383 пишет:

6856671
15866998
 

 

Точно из того скетча номера?

Fearles8383
Offline
Зарегистрирован: 14.05.2015

да

Fearles8383
Offline
Зарегистрирован: 14.05.2015

вот скетч

byte RFIDcardNum[4];
byte evenBit = 0;
byte oddBit = 0;
byte isData0Low = 0;
byte isData1Low = 0;
int recvBitCount = 0;
byte isCardReadOver = 0;

void setup()
{
  Serial.begin(9600);
  attachInterrupt(0, ISRreceiveData0, FALLING );  //data0/rx is connected to pin 2, which results in INT 0
  attachInterrupt(1, ISRreceiveData1, FALLING );  //data1/tx is connected to pin 3, which results in INT 1

}

void loop()
{
  //read card number bit
  if(isData0Low||isData1Low){
    if(1 == recvBitCount){//even bit
      evenBit = (1-isData0Low)&isData1Low;
    }
    else if( recvBitCount >= 26){//odd bit
      oddBit = (1-isData0Low)&isData1Low;
      isCardReadOver = 1;
      delay(10);
    }
    else{
      //only if isData1Low = 1, card bit could be 1
      RFIDcardNum[2-(recvBitCount-2)/8] |= (isData1Low << (7-(recvBitCount-2)%8));
    }
    //reset data0 and data1
    isData0Low = 0;
    isData1Low = 0;
  }

  //print the card id number
  if(isCardReadOver){
    //if(checkParity()){
    //Serial.println();
    //Serial.print(RFIDcardNum[2],HEX);//High byte
    //Serial.print(RFIDcardNum[1],HEX);//Midle byte
    //Serial.println(RFIDcardNum[0],HEX);//Low byte
      Serial.println(*((long *)RFIDcardNum));
    //}
    resetData();
  }

}

byte checkParity(){
  int i = 0;
  int evenCount = 0;
  int oddCount = 0;
  for(i = 0; i < 8; i++){
    if(RFIDcardNum[2]&(0x80>>i)){
      evenCount++;
    }
  }
  for(i = 0; i < 4; i++){
    if(RFIDcardNum[1]&(0x80>>i)){
      evenCount++;
    }
  }
  for(i = 4; i < 8; i++){
    if(RFIDcardNum[1]&(0x80>>i)){
      oddCount++;
    }
  }
  for(i = 0; i < 8; i++){
    if(RFIDcardNum[0]&(0x80>>i)){
      oddCount++;
    }
  }
  
  if(evenCount%2 == evenBit && oddCount%2 != oddBit){
    return 1;
  }
  else{
    return 0;
  }
}
void resetData(){
  RFIDcardNum[0] = 0;
  RFIDcardNum[1] = 0;
  RFIDcardNum[2] = 0;
  RFIDcardNum[3] = 0;
  evenBit = 0;
  oddBit = 0;
  recvBitCount = 0;
  isData0Low = 0;
  isData1Low = 0;
  isCardReadOver = 0;
}
// handle interrupt0
void ISRreceiveData0(){
  recvBitCount++;
  isData0Low = 1;
}

// handle interrupt1
void ISRreceiveData1(){
  recvBitCount++;
  isData1Low = 1;
}

 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Fearles8383 пишет:

да

вышлите сюда:

StudioGippopotam@gmail.com

сегодня горит?

Fearles8383
Offline
Зарегистрирован: 14.05.2015

Все скетч выслал ну желательно сегодня

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Fearles8383 пишет:

Все скетч выслал ну желательно сегодня

я вообще-то просил номера карточек...

постараюсь сегодня, но позже

Fearles8383
Offline
Зарегистрирован: 14.05.2015

все отправил номера карточек