roboforum.ru

Технический форум по робототехнике.

Ошибка в скетче или в подключении

Ошибка в скетче или в подключении

ilayka » 06 мар 2018, 21:48

Помогите найти ошибку.
Логика: если концевик kv1=HIGH, то rfid читает карту, если uid карты валидный, включаем реле relay1.
Подключил все верно...перепроверил много раз, заливал простой скетч в ардуино, концевик рабочий, реле рабочее, rfid рабочий. Rfid проверял другим скетчем. А этэ не работает:
Код: Выделить всёРазвернуть
#include <SPI.h>
#include <MFRC522.h> // библиотека "RFID"

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
bool perenos = false;
// ----РАСПИНОВКА-----
int kv1 = 2; //пин концевика1
int kv2 = 3; //пин концевика2
int relay1 = 5; //реле1
int relay2 = 1; //реле2
int but1 = 7; //конпка1
int but2 = 8; //кнопка2
unsigned long uidDec, uidDecTemp;  // для храниения номера метки в десятичном формате

/* --------ДАННЫЕ ДЛЯ ВВОДА-----------*/
int x=1; //количество карточек
unsigned long cards [ 2 /* ввести колво карточек вмемто 1*/]{3230407588, 2643501689};

void setup() {
  SPI.begin();            //  инициализация SPI
  mfrc522.PCD_Init();     // инициализация MFRC522
  Serial.begin(9600);
}

void loop() {
  /* проограмма работы с первым концевиком*/
  int kv1_sost = digitalRead(kv1);
  if(kv1_sost){
    for (byte i = 0; i < mfrc522.uid.size; i++)  //считывание UID карты
    {
      uidDecTemp = mfrc522.uid.uidByte[i];
      uidDec = uidDec * 256 + uidDecTemp;
    }
    for(int a=0; a<=x; a++){
      if(uidDec == cards[a]){
        digitalWrite(relay1, HIGH);
        }
        else digitalWrite(relay1, LOW);
    }
    }
     
}

Re: Ошибка в скетче или в подключении

Scorpio » 08 мар 2018, 03:46

Чтобы понять, что происходит, полезно выводить отладочную информацию в СОМ монитор IDE Arduino. Например, посмотреть, что там получается в uidDec, заодно понять, нажимается ли кнопка. Кнопкой надежнее подавать лог.0 на подтянутую через резистор к "+" входную ножку.
В этом куске:
Код: Выделить всёРазвернуть
for(int a=0; a<=x; a++){
      if(uidDec == cards[a]){
        digitalWrite(relay1, HIGH);
        }
        else digitalWrite(relay1, LOW);
    }

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

Re: Ошибка в скетче или в подключении

ilayka » 14 мар 2018, 01:28

Scorpio писал(а):Чтобы понять, что происходит, полезно выводить отладочную информацию в СОМ монитор IDE Arduino. Например, посмотреть, что там получается в uidDec, заодно понять, нажимается ли кнопка. Кнопкой надежнее подавать лог.0 на подтянутую через резистор к "+" входную ножку.
В этом куске:
Код: Выделить всёРазвернуть
for(int a=0; a<=x; a++){
      if(uidDec == cards[a]){
        digitalWrite(relay1, HIGH);
        }
        else digitalWrite(relay1, LOW);
    }

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


Запамятовал отписаться. Пин моды не выставил...решено спасибо.


Rambler\'s Top100 Mail.ru counter