程序的目的是用两个RFID模块控制两个舵机,但是不知道为什么总是只有第二个舵机可以工作,跪求大神帮我答疑解惑
#include <SoftwareSerial.h>
#include <Servo.h>
SoftwareSerial RFID1(3,13);
SoftwareSerial RFID2(2,12);
Servo servo1;
Servo servo2;
const byte taglen = 14;
byte temp[taglen];
String rfidStr1 = "";
String rfidStr2 = "";
String tag1="24848484852654968706765663";
String tag2="24848484852654968555250513";
String tag3="24848484852654866524948483";
unsigned long oldtime1,worktime1,oldtime2,worktime2;
boolean workmodel1;
boolean workmodel2;
boolean readTag1(){
boolean ok1 = 0;
if (RFID1.available()){
delay(1000);
for(byte i=0;i<taglen;i++){
temp[i] = RFID1.read();
}
RFID1.flush();
ok1 = 1;
}
return ok1;
}
boolean readTag2(){
boolean ok2 = 0;
if (RFID2.available()){
delay(1000);
for(byte r=0;r<taglen;r++){
temp[r] = RFID2.read();
}
RFID2.flush();
ok2 = 1;
}
return ok2;
}
void setup(){
Serial.begin(9600);
RFID1.begin(9600);
RFID2.begin(9600);
servo1.attach(5);
servo2.attach(6);
oldtime1 = millis();
oldtime2 = millis();
workmodel1 = 0;
workmodel2 = 0;
}
void loop(){
if (millis()-oldtime1>1000)
{
if (readTag1()) {
rfidStr1="";
for (byte i=0;i<taglen;i++){
rfidStr1 += temp[i];
}
Serial.println(rfidStr1);
if(rfidStr1==tag1||rfidStr1==tag2||rfidStr1==tag3){
worktime1 = millis();
workmodel1 = 1;
}
}
if(workmodel1){
if(millis()-worktime1<30000){
servo1.write(75);
}else{
servo1.write(-75);
workmodel1 = 0;
}
}
oldtime1=millis();
}
if (millis()-oldtime2>1000)
{
if (readTag2()) {
rfidStr2="";
for (byte i=0;i<taglen;i++){
rfidStr2 += temp[i];
}
Serial.println(rfidStr2);
if(rfidStr2==tag1||rfidStr2==tag2||rfidStr2==tag3){
worktime2 = millis();
workmodel2 = 1;
}
}
if(workmodel2){
if(millis()-worktime2<30000){
servo2.write(75);
}else{
servo2.write(-75);
workmodel2 = 0;
}
}
oldtime2=millis();
}
}
#include <SoftwareSerial.h>
#include <Servo.h>
SoftwareSerial RFID1(3,13);
SoftwareSerial RFID2(2,12);
Servo servo1;
Servo servo2;
const byte taglen = 14;
byte temp[taglen];
String rfidStr1 = "";
String rfidStr2 = "";
String tag1="24848484852654968706765663";
String tag2="24848484852654968555250513";
String tag3="24848484852654866524948483";
unsigned long oldtime1,worktime1,oldtime2,worktime2;
boolean workmodel1;
boolean workmodel2;
boolean readTag1(){
boolean ok1 = 0;
if (RFID1.available()){
delay(1000);
for(byte i=0;i<taglen;i++){
temp[i] = RFID1.read();
}
RFID1.flush();
ok1 = 1;
}
return ok1;
}
boolean readTag2(){
boolean ok2 = 0;
if (RFID2.available()){
delay(1000);
for(byte r=0;r<taglen;r++){
temp[r] = RFID2.read();
}
RFID2.flush();
ok2 = 1;
}
return ok2;
}
void setup(){
Serial.begin(9600);
RFID1.begin(9600);
RFID2.begin(9600);
servo1.attach(5);
servo2.attach(6);
oldtime1 = millis();
oldtime2 = millis();
workmodel1 = 0;
workmodel2 = 0;
}
void loop(){
if (millis()-oldtime1>1000)
{
if (readTag1()) {
rfidStr1="";
for (byte i=0;i<taglen;i++){
rfidStr1 += temp[i];
}
Serial.println(rfidStr1);
if(rfidStr1==tag1||rfidStr1==tag2||rfidStr1==tag3){
worktime1 = millis();
workmodel1 = 1;
}
}
if(workmodel1){
if(millis()-worktime1<30000){
servo1.write(75);
}else{
servo1.write(-75);
workmodel1 = 0;
}
}
oldtime1=millis();
}
if (millis()-oldtime2>1000)
{
if (readTag2()) {
rfidStr2="";
for (byte i=0;i<taglen;i++){
rfidStr2 += temp[i];
}
Serial.println(rfidStr2);
if(rfidStr2==tag1||rfidStr2==tag2||rfidStr2==tag3){
worktime2 = millis();
workmodel2 = 1;
}
}
if(workmodel2){
if(millis()-worktime2<30000){
servo2.write(75);
}else{
servo2.write(-75);
workmodel2 = 0;
}
}
oldtime2=millis();
}
}
![](http://hiphotos.baidu.com/%D2%C0%BE%C9%BA%DC%B9%C2%B5%A5/pic/item/a230c9ae8d3333ae7dd92a3d.jpg?v=tbs?v=tbs)