Рфид моргает лампочка
- Войдите на сайт для отправки комментариев
Чт, 20/09/2018 - 10:26
День добрый. Подскажите дельным советом. Уже намучался знаний явно нехватает. Проблема в следующем - Подношу Рфид метку к считывателю лампочка должна включаться, убрал метку лампочка должна отключаться. Вот только лампочка у меня мерцает вместо стабильной работы((
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 8
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
byte card_ID[4];
byte First_card_ID[4]={0xED,0xAA,0xD7,0x73};
boolean State=false;
int RedLed=6;
int GreenLed=5;
int Buzzer=7;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600); // Initialize serial communications with the PC
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
Serial.println("Ready to read a PICC Card ");
for(int def=5;def<8;def++){
pinMode(def,OUTPUT);
}
}
void cmp_id(){
for (byte i = 0; i < mfrc522.uid.size; i++) {
if(card_ID[i]==First_card_ID[i]){
State=true;
}
else{
State=false;
i=5;
}
}
}
void loop() {
// put your main code here, to run repeatedly:
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
Serial.print("Card UID:");
digitalWrite(Buzzer,HIGH);
for (byte i = 0; i < mfrc522.uid.size; i++) {
card_ID[i]=mfrc522.uid.uidByte[i];
Serial.print(" - ");
Serial.print( card_ID[i],HEX);
Serial.print(" - ");
}
cmp_id();
if(State==true){ Serial.println("Accepted, Valid card"); digitalWrite(GreenLed,HIGH);digitalWrite(RedLed,LOW); }
if(State==true){ Serial.println("OFF, Valid card"); digitalWrite(GreenLed,LOW);digitalWrite(RedLed,LOW); }
if(State==false){Serial.println("denied! unValid card ! ");digitalWrite(RedLed,HIGH);digitalWrite(GreenLed,LOW); }
}
Какая лампочка?
Светодиод
Бл... по коду их две - которая мерцает?
Зеленая мерцает. Когда подношу метку.
Догадываюсь мерцание происходит когда заканчивается выполнение кода и снова по новой выполняется.
Условия в строка #58 и #59 внимательно сравните.
Там ещё и бузер орать непрерывно должен, который в 48 строке включается и нигде не выключается.
Может подскажите что нужно дописать? Сидел думал неполучается(
Чтобы подсказать - нужно знать идею. Идея в вашей голове, а не в нашей.
Вот только лампочка у меня мерцает вместо стабильной работы((
А как ей не мерцать, если при поднесенной карте в строке 58 вы ее включаете и тут же, в строке 59 - выключаете?
Выключайте лампочку только тогда, когда убрали карту со считывателя.
А как ей не мерцать, если при поднесенной карте в строке 58 вы ее включаете и тут же, в строке 59 - выключаете?
Выключайте лампочку только тогда, когда убрали карту со считывателя.
59 получается удаляем. Добавить что?
Заплачу. 250 руб
Заплатите за телепатический сеанс? Ответьте для себя на простые вопросы - что должно происходить со светодиодом и при каких событиях.
А как ей не мерцать, если при поднесенной карте в строке 58 вы ее включаете и тут же, в строке 59 - выключаете?
Выключайте лампочку только тогда, когда убрали карту со считывателя.
59 получается удаляем. Добавить что?
Пилять! :) Вы совсем читать не умеете или как?
Вы же даже мой ответ процитировали - так прочитайте его ВНИМАТЕЛЬНО! в первой строчке - что удаляем, во второй - что добавляем.
Заплатите за телепатический сеанс? Ответьте для себя на простые вопросы - что должно происходить со светодиодом и при каких событиях.
В описании темы все написано.
Вот такая задумка:
1. Приподносим метку - светодиод зеленый загорается (без мерцаний)
2. Убираем метку - светодиод зеленый отключается
А как ей не мерцать, если при поднесенной карте в строке 58 вы ее включаете и тут же, в строке 59 - выключаете?
Выключайте лампочку только тогда, когда убрали карту со считывателя.
59 получается удаляем. Добавить что?
Пилять! :) Вы совсем читать не умеете или как?
Вы же даже мой ответ процитировали - так прочитайте его ВНИМАТЕЛЬНО! в первой строчке - что удаляем, во второй - что добавляем.
Я лишь интересущийся..
"Выключайте лампочку только тогда, когда убрали карту со считывателя" - Выразить в коде пока-что проблема
убери ты строку 59, а между 38 и 39 вставь
digitalWrite(GreenLed,LOW);
Advan, здесь на форуме специальный раздел есть, где деньги предлагать нужно Ищу исполнителя называется. Писали бы лучше сразу туда, вдруг кто позарится.
убери ты строку 59, а между 38 и 39 вставь
digitalWrite(GreenLed,LOW);
Проделал. Мерцает также(
Advan, здесь на форуме специальный раздел есть, где деньги предлагать нужно Ищу исполнителя называется. Писали бы лучше сразу туда, вдруг кто позарится.
Подумал может так знатоки помогут но готов заплатить
Подумал может так знатоки помогут но готов заплатить
так вам уже помогли "за так" - но не в коня корм, вы ж ни черта не понимаете.
Либо сначала книжки почитайте и прриходите, когда код начнете понимать, либо в платный раздел.
А, ну да, так и должно быть.
Подумал может так знатоки помогут но готов заплатить
так вам уже помогли "за так" - но не в коня корм, вы ж ни черта не понимаете.
Либо сначала книжки почитайте и прриходите, когда код начнете понимать, либо в платный раздел.
Тогда логично было-бы назвать раздел Программирование для специалистов. Новички бы понимали что ждут их только в платном разделе.
Всем пытающимся помочь очень благодарен.
Тогда логично было-бы назвать раздел Программирование для специалистов.
Местный раздел "программирование" - для программистов. Форум "для полных чайников" где-то в другом месте :)
Вообще, мне кажется, что вариант DetSimen верный. Но ридер я только вечером смогу в руки взять.
#include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 8 MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance. byte card_ID[4]; byte First_card_ID[4]={ 0xED,0xAA,0xD7,0x73}; boolean State=false; int RedLed=6; int GreenLed=5; int Buzzer=7; void setup() { // put your setup code here, to run once: Serial.begin(9600); // Initialize serial communications with the PC SPI.begin(); // Init SPI bus mfrc522.PCD_Init(); // Init MFRC522 card Serial.println("Ready to read a PICC Card "); for(int def=5;def<8;def++){ pinMode(def,OUTPUT); } } void cmp_id(){ for (byte i = 0; i < mfrc522.uid.size; i++) { if(card_ID[i]==First_card_ID[i]){ State=true; } else{ State=false; i=5; } } } void loop() { // put your main code here, to run repeatedly: if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; } Serial.print("Card UID:"); digitalWrite(Buzzer,HIGH); for (byte i = 0; i < mfrc522.uid.size; i++) { card_ID[i]=mfrc522.uid.uidByte[i]; Serial.print(" - "); Serial.print( card_ID[i],HEX); Serial.print(" - "); } cmp_id(); if(State==true){ Serial.println("Accepted, Valid card"); digitalWrite(GreenLed,HIGH); digitalWrite(RedLed,LOW); } if(State==false){ Serial.println("denied! unValid card ! "); digitalWrite(RedLed,HIGH); digitalWrite(GreenLed,LOW); } }Ну немного не по теме #27 но там уже похожее решение.
ПС: Фишка в решении по теме что светодиод должен включаться по карточке, а выключаться самостоятельно по времени, если сигнала с карточки не пришло.
А если так?
#include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 8 MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance. byte card_ID[4]; byte First_card_ID[4]={0xED,0xAA,0xD7,0x73}; boolean State=false; int RedLed=6; int GreenLed=5; int Buzzer=7; void setup() { // put your setup code here, to run once: Serial.begin(9600); // Initialize serial communications with the PC SPI.begin(); // Init SPI bus mfrc522.PCD_Init(); // Init MFRC522 card Serial.println("Ready to read a PICC Card "); for(int def=5;def<8;def++){ pinMode(def,OUTPUT); } } void cmp_id(){ for (byte i = 0; i < mfrc522.uid.size; i++) { if(card_ID[i]==First_card_ID[i]){ State=true; } else{ State=false; i=5; } } } void loop() { // put your main code here, to run repeatedly: if ( ! mfrc522.PICC_IsNewCardPresent()) { digitalWrite(GreenLed,LOW);digitalWrite(RedLed,LOW); return; } else if(State==true) { digitalWrite(GreenLed,HIGH); } else { digitalWrite(RedLed,HIGH);} // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; } Serial.print("Card UID:"); digitalWrite(Buzzer,HIGH); for (byte i = 0; i < mfrc522.uid.size; i++) { card_ID[i]=mfrc522.uid.uidByte[i]; Serial.print(" - "); Serial.print( card_ID[i],HEX); Serial.print(" - "); } cmp_id(); if(State==true){ Serial.println("Accepted, Valid card"); digitalWrite(RedLed,LOW); } if(State==false){Serial.println("denied! unValid card ! ");} }#include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 8 MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance. byte card_ID[4]; byte First_card_ID[4]={ 0xED,0xAA,0xD7,0x73}; boolean State=false; int RedLed=6; int GreenLed=5; int Buzzer=7; void setup() { // put your setup code here, to run once: Serial.begin(9600); // Initialize serial communications with the PC SPI.begin(); // Init SPI bus mfrc522.PCD_Init(); // Init MFRC522 card Serial.println("Ready to read a PICC Card "); for(int def=5;def<8;def++){ pinMode(def,OUTPUT); } } void cmp_id(){ for (byte i = 0; i < mfrc522.uid.size; i++) { if(card_ID[i]==First_card_ID[i]){ State=true; } else{ State=false; i=5; } } } void loop() { // put your main code here, to run repeatedly: if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; } Serial.print("Card UID:"); digitalWrite(Buzzer,HIGH); for (byte i = 0; i < mfrc522.uid.size; i++) { card_ID[i]=mfrc522.uid.uidByte[i]; Serial.print(" - "); Serial.print( card_ID[i],HEX); Serial.print(" - "); } cmp_id(); if(State==true){ Serial.println("Accepted, Valid card"); digitalWrite(GreenLed,HIGH); digitalWrite(RedLed,LOW); } if(State==false){ Serial.println("denied! unValid card ! "); digitalWrite(RedLed,HIGH); digitalWrite(GreenLed,LOW); } }В Вашем варианте приподнеся метку загорается светодиод без мерцания, вот только убирая метку он продолжает бесконечно светиться. А нужно чтобы он затухал.
А если так?
#include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 8 MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance. byte card_ID[4]; byte First_card_ID[4]={0xED,0xAA,0xD7,0x73}; boolean State=false; int RedLed=6; int GreenLed=5; int Buzzer=7; void setup() { // put your setup code here, to run once: Serial.begin(9600); // Initialize serial communications with the PC SPI.begin(); // Init SPI bus mfrc522.PCD_Init(); // Init MFRC522 card Serial.println("Ready to read a PICC Card "); for(int def=5;def<8;def++){ pinMode(def,OUTPUT); } } void cmp_id(){ for (byte i = 0; i < mfrc522.uid.size; i++) { if(card_ID[i]==First_card_ID[i]){ State=true; } else{ State=false; i=5; } } } void loop() { // put your main code here, to run repeatedly: if ( ! mfrc522.PICC_IsNewCardPresent()) { digitalWrite(GreenLed,LOW);digitalWrite(RedLed,LOW); return; } else if(State==true) { digitalWrite(GreenLed,HIGH); } else { digitalWrite(RedLed,HIGH);} // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; } Serial.print("Card UID:"); digitalWrite(Buzzer,HIGH); for (byte i = 0; i < mfrc522.uid.size; i++) { card_ID[i]=mfrc522.uid.uidByte[i]; Serial.print(" - "); Serial.print( card_ID[i],HEX); Serial.print(" - "); } cmp_id(); if(State==true){ Serial.println("Accepted, Valid card"); digitalWrite(RedLed,LOW); } if(State==false){Serial.println("denied! unValid card ! ");} }Я примерно это и хотел. Куда оплачивать труд?
Ньюанс в этом коде приподнеся левую метку зеленый светодиод 1 раз моргает, в идеале было-бы убрать и это моргание.
Ньюанс в этом коде приподнеся левую метку зеленый светодиод 1 раз моргает, в идеале было-бы убрать и это моргание.
Куда оплачивать труд?
Ну если действительно есть такое желание - пишите на почту wex7008b@gmail.com, обсудим.
Ньюанс в этом коде приподнеся левую метку зеленый светодиод 1 раз моргает, в идеале было-бы убрать и это моргание.
Хм... действительно есть такое если сначала поднести правильную карту, я тестил на двухцветном светике и как-то сразу не заметил этого.
Ньюанс в этом коде приподнеся левую метку зеленый светодиод 1 раз моргает, в идеале было-бы убрать и это моргание.
Я не понимаю
#include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 8 MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance. byte card_ID[4]; byte First_card_ID[4]={0xED,0xAA,0xD7,0x73}; boolean State=false; int RedLed=6; int GreenLed=5; int Buzzer=7; void setup() { // put your setup code here, to run once: Serial.begin(9600); // Initialize serial communications with the PC SPI.begin(); // Init SPI bus mfrc522.PCD_Init(); // Init MFRC522 card Serial.println("Ready to read a PICC Card "); for(int def=5;def<8;def++){ pinMode(def,OUTPUT); } } void cmp_id(){ for (byte i = 0; i < mfrc522.uid.size; i++) { if(card_ID[i]==First_card_ID[i]){ State=true; } else{ State=false; i=5; } } } void loop() { delay(500);//<- как вариант сюда // put your main code here, to run repeatedly: if ( ! mfrc522.PICC_IsNewCardPresent()) { digitalWrite(GreenLed,LOW);digitalWrite(RedLed,LOW); return; } else if(State==true) { digitalWrite(GreenLed,HIGH); } else { digitalWrite(RedLed,HIGH);} // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; } Serial.print("Card UID:"); digitalWrite(Buzzer,HIGH); for (byte i = 0; i < mfrc522.uid.size; i++) { card_ID[i]=mfrc522.uid.uidByte[i]; Serial.print(" - "); Serial.print( card_ID[i],HEX); Serial.print(" - "); } cmp_id(); if(State==true){ Serial.println("Accepted, Valid card"); digitalWrite(RedLed,LOW); } if(State==false){Serial.println("denied! unValid card ! ");} }#include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 8 MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance. byte card_ID[4]; byte First_card_ID[4]={0xED,0xAA,0xD7,0x73}; boolean State=false; int RedLed=6; int GreenLed=5; int Buzzer=7; void setup() { // put your setup code here, to run once: Serial.begin(9600); // Initialize serial communications with the PC SPI.begin(); // Init SPI bus mfrc522.PCD_Init(); // Init MFRC522 card Serial.println("Ready to read a PICC Card "); for(int def=5;def<8;def++){ pinMode(def,OUTPUT); } } void cmp_id(){ for (byte i = 0; i < mfrc522.uid.size; i++) { if(card_ID[i]==First_card_ID[i]){ State=true; } else{ State=false; i=5; } } } void loop() { delay(500);//<- как вариант сюда // put your main code here, to run repeatedly: if ( ! mfrc522.PICC_IsNewCardPresent()) { digitalWrite(GreenLed,LOW);digitalWrite(RedLed,LOW); return; } else if(State==true) { digitalWrite(GreenLed,HIGH); } else { digitalWrite(RedLed,HIGH);} // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; } Serial.print("Card UID:"); digitalWrite(Buzzer,HIGH); for (byte i = 0; i < mfrc522.uid.size; i++) { card_ID[i]=mfrc522.uid.uidByte[i]; Serial.print(" - "); Serial.print( card_ID[i],HEX); Serial.print(" - "); } cmp_id(); if(State==true){ Serial.println("Accepted, Valid card"); digitalWrite(RedLed,LOW); } if(State==false){Serial.println("denied! unValid card ! ");} }Приподнеся метку светодиод начинает моргать. Приподнеся левую метку светодиод мигает один раз.