Я использую библиотеку 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-го пина.