Arduino mega 2560 (CH340) + китайский RFID RDM6300

rus.punk
Offline
Зарегистрирован: 17.08.2016

Здравствуйте, проблема : 

есть ардуино уно и мега 2560 , используют один и тот же модуль RDM6300 .

Заливаю код с работой через последовательный порт используя SoftwareSerial на пинах 8 и 9 (в принципе там всё равно какие цифровые ипользовать), то на уно всё работает в принципе нормально, заливая на мегу(код тот же самый), ни чего не происходит вообще (пины использовал теже самые , пробовал менять и на другие результат тот же самый).

подскажите куда копать

arduino ide 1.6.10.   

rus.punk
Offline
Зарегистрирован: 17.08.2016

up

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

на меге куча uart. программный нет смысла использовать. попробуй с хардварным

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

если откроете пример softwareserial то увидите в начале -

 Not all pins on the Mega and Mega 2560 support change interrupts,
 so only the following can be used for RX:
 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69

на меге 2560 - 4 HW serial, лучше их использовать

sharik_28.05
Offline
Зарегистрирован: 05.02.2020
#include <SoftwareSerial.h>
SoftwareSerial RFIDSerial(7, 6); // RX, TX
String input,temp;

bool FlagReads=true;
unsigned long TimeReads;


void setup(){
  Serial.begin(19200);
  RFIDSerial.begin(9600);
}

void loop(){

if (RFIDSerial.available() > 0 && FlagReads) {
  input = RFIDSerial.read();
  temp+=input;
    if (temp.length()==26) {
      Serial.println(temp);
      Serial.println(millis());
      FlagReads=false;
      TimeReads=millis();
      temp="";
      input="";
    }
}

if (!FlagReads && millis()-TimeReads>=1000){
//RFIDSerial.flush();
//Serial.flush();
FlagReads=true;  
}

  
}//loop

Подскажите пожалуйста в чём проблема, если карту приложить быстро, всё ок, считывание происходит один раз, а если карту подержать некоторое время и убрать, в монитор несколько раз сыпится информация по карте.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Прочитайте  про Serial.flush();, функционал давно изменился.

Замените на

while (RFIDSerial.available())
    RFIDSerial.read();
 
Работает?