Я использую библиотеку AltSoftSerial для создания второго последовательного порта, в дополнение к стандартному. Работает только порт AltSoftSerial

Я настраиваю систему RFID, которая требует 8 считывателей RFID, подключенных к 1 Arduino. Сценарий, который я использую, позволяет мне постоянно читать читателей. Я получаю странный вывод, и только с одного из портов, которые я настроил как последовательный вывод.

Я использую AltSoftSerial библиотека, позволяющая использовать 8-й вывод ввода / вывода в качестве последовательного входа. Теперь только этот контакт работает как вход, в то время как я хотел бы, чтобы и этот, и 0-й контакты давали мне непрерывный ввод.

    #include <AltSoftSerial.h>

   int RFIDResetPin = 13;
   int RFIDResetPin1 = 12;

   AltSoftSerial altSerial;

   void setup()
   {
   Serial.begin(9600);
   pinMode(RFIDResetPin, OUTPUT);
   digitalWrite(RFIDResetPin, HIGH);

   }

   void loop()
   {
   char tagString[13];

   boolean reading = false;


   int index = 0;
   int c = 0;
   while(Serial.available()){
   int readByte = Serial.read(); //read next available byte

   if(readByte == 2) reading = true; //beginning of tag
   if(readByte == 3) reading = false; //end of tag

   if(reading && readByte != 2 && readByte != 10 && readByte != 13){
   //store the tag
   tagString[index] = readByte;
   index ++;
   }
   }

   Serial.println(tagString); //read out any unknown tag

   ////////////////////////////////////

   //This next section works for the AltSoftSerial port 

   /////////////////////////////////////

   while(altSerial.available()); { 

  c = altSerial.read(); 
  Serial.print(c);

   clearTag(tagString); //Clear the char of all value
   resetReader(); //Reset the RFID reader


   }  
   }

   void resetReader(){

   ///////////////////////////////////

   //Reset the RFID reader to read again.

   ///////////////////////////////////

   digitalWrite(RFIDResetPin, LOW);
   digitalWrite(RFIDResetPin, HIGH);
   delay(150);
   }

   void clearTag(char one[]){

   ///////////////////////////////////

   //clear the char array by filling with null – ASCII 0  
   //Will think same tag has been read otherwise

   ///////////////////////////////////

   for(int i = 0; i < strlen(one); i++){ one[i] = 0; } } boolean 
   compareTag(char one[], char two[]){ 

   /////////////////////////////////// 

   //compare two value to see if same, //strcmp not working 100% so we do this

   /////////////////////////////////// 

   if(strlen(one) == 0) return false;   
   //empty for(int i = 0; i < 12; i++){ if(one[i] != two[i]) return false; } 
   return true; //no mismatches }
   }

ожидалось, что результат чтения ни одного тега не будет равен 0 или равен нулю. вместо этого получил -1. ожидал добавления AltSoftSerial прочитайте, чтобы разрешить ввод с 8-го и 0-го контактов. Только получил от 8-го пина.

0 ответов

Другие вопросы по тегам