Input LED闪烁时Arduino Rfid读取延迟

Input LED闪烁时Arduino Rfid读取延迟,input,serial-port,arduino,output,delay,Input,Serial Port,Arduino,Output,Delay,我有一个连接到Arduino的RFID阅读器。。并成功地将标签号接收到串行监视器。但当我将LED闪烁置于环路内时,rfid读数会延迟:它会在每次闪烁后一个接一个地接收标签号 代码如下。我想我应该使用多线程或中断,但我不知道怎么做 void setup() { Serial.begin(9600); Serial1.begin(9600); pinMode(2, OUTPUT); } void loop() { // blink led in pin 2

我有一个连接到Arduino的RFID阅读器。。并成功地将标签号接收到串行监视器。但当我将LED闪烁置于环路内时,rfid读数会延迟:它会在每次闪烁后一个接一个地接收标签号

代码如下。我想我应该使用多线程或中断,但我不知道怎么做

void setup() {

   Serial.begin(9600);
   Serial1.begin(9600);
   pinMode(2, OUTPUT);

}

void loop() {

    // blink led in pin 2
    digitalWrite(2, HIGH);
    delay(1000);
    digitalWrite(2, LOW);
    delay(1000);

//Below Serial1.available() checks my rfid reader input signal and print on serial monitor of Arduino.. and Serial1 is on pin RX1 19 (RX1 19 is the default pin for serial1 defined by Arduino developers "http://arduino.cc/en/reference/serial#.Uyvbq6iSzIg") to which my rfid reader is connected

   if (Serial1.available()) {

      int i = Serial1.read();
      Serial.print(i);

     }
}

有一个名为Arduino的文件,它包含在Arduino示例中,我已链接到它。帮自己一个忙,花十分钟阅读教程和代码,以了解它的作用。

有一个名为Arduino的文件,它包含在Arduino示例中,我已经链接到它。帮自己一个忙,花十分钟阅读教程和代码,以了解它的作用。

有一个名为Arduino的文件,它包含在Arduino示例中,我已经链接到它。帮自己一个忙,花十分钟阅读教程和代码,以了解它的作用。

有一个名为Arduino的文件,它包含在Arduino示例中,我已经链接到它。帮自己一个忙,花十分钟阅读教程和代码,以了解它的功能。

您可以使用Arduino定时器和适当的中断。这里是这样的:

void setup() {
    Serial.begin(9600);
    Serial1.begin(9600);
    pinMode(2, OUTPUT);
    /* Initialize timer, e.g. timer1 */
    noInterrupts();    //disable interrupts
    TCCR1A = 0;        //Timer1 control register A
    TCCR1B = 0;        //Timer1 control register B
    TCNT1 = 0;         //Counter of timer1
    OCR1A = 15625;     //Timer1 compare match register

    TCCR1B |= (1<<WGM12);            //Set timer1 in CTC mode
    /* Define prescaler with 1024. If the clock is 16 MHz, then timer1 will run
     * with 16 MHz / 1024 = 15625 Hz --> 64 us, to get one second, we
     * need 15625 cycles, which is the OCR1A register */
    TCCR1B |= (1<<CS10) | (1<<CS12); // clock prescaler = 1024

    TIMSK1 |= (1<<OCIE1A);    //enable timer compare interrupt
    interrupts();             //enable interrupts
}

//This routine is called every time, timer1 counter reaches the compare register
ISR(Timer1_COMPA_vect) {
    digitalWrite(2, digitalRead(2) ^ 1);    //toggle LED
}

//the loop
void loop() {
    if (Serial1.available()) {
        int i = Serial1.read();
        Serial.print(i);
    }
}
void setup(){
Serial.begin(9600);
Serial1.begin(9600);
pinMode(2,输出);
/*初始化计时器,例如计时器1*/
noInterrupts();//禁用中断
TCCR1A=0;//定时器1控制寄存器A
TCCR1B=0;//定时器1控制寄存器B
TCNT1=0;//计时器1的计数器
OCR1A=15625;//定时器1比较匹配寄存器

TCCR1B |=(1您可以使用Arduino的计时器和适当的中断。因此,这里类似于:

void setup() {
    Serial.begin(9600);
    Serial1.begin(9600);
    pinMode(2, OUTPUT);
    /* Initialize timer, e.g. timer1 */
    noInterrupts();    //disable interrupts
    TCCR1A = 0;        //Timer1 control register A
    TCCR1B = 0;        //Timer1 control register B
    TCNT1 = 0;         //Counter of timer1
    OCR1A = 15625;     //Timer1 compare match register

    TCCR1B |= (1<<WGM12);            //Set timer1 in CTC mode
    /* Define prescaler with 1024. If the clock is 16 MHz, then timer1 will run
     * with 16 MHz / 1024 = 15625 Hz --> 64 us, to get one second, we
     * need 15625 cycles, which is the OCR1A register */
    TCCR1B |= (1<<CS10) | (1<<CS12); // clock prescaler = 1024

    TIMSK1 |= (1<<OCIE1A);    //enable timer compare interrupt
    interrupts();             //enable interrupts
}

//This routine is called every time, timer1 counter reaches the compare register
ISR(Timer1_COMPA_vect) {
    digitalWrite(2, digitalRead(2) ^ 1);    //toggle LED
}

//the loop
void loop() {
    if (Serial1.available()) {
        int i = Serial1.read();
        Serial.print(i);
    }
}
void setup(){
Serial.begin(9600);
Serial1.begin(9600);
pinMode(2,输出);
/*初始化计时器,例如计时器1*/
noInterrupts();//禁用中断
TCCR1A=0;//定时器1控制寄存器A
TCCR1B=0;//定时器1控制寄存器B
TCNT1=0;//计时器1的计数器
OCR1A=15625;//定时器1比较匹配寄存器

TCCR1B |=(1您可以使用Arduino的计时器和适当的中断。因此,这里类似于:

void setup() {
    Serial.begin(9600);
    Serial1.begin(9600);
    pinMode(2, OUTPUT);
    /* Initialize timer, e.g. timer1 */
    noInterrupts();    //disable interrupts
    TCCR1A = 0;        //Timer1 control register A
    TCCR1B = 0;        //Timer1 control register B
    TCNT1 = 0;         //Counter of timer1
    OCR1A = 15625;     //Timer1 compare match register

    TCCR1B |= (1<<WGM12);            //Set timer1 in CTC mode
    /* Define prescaler with 1024. If the clock is 16 MHz, then timer1 will run
     * with 16 MHz / 1024 = 15625 Hz --> 64 us, to get one second, we
     * need 15625 cycles, which is the OCR1A register */
    TCCR1B |= (1<<CS10) | (1<<CS12); // clock prescaler = 1024

    TIMSK1 |= (1<<OCIE1A);    //enable timer compare interrupt
    interrupts();             //enable interrupts
}

//This routine is called every time, timer1 counter reaches the compare register
ISR(Timer1_COMPA_vect) {
    digitalWrite(2, digitalRead(2) ^ 1);    //toggle LED
}

//the loop
void loop() {
    if (Serial1.available()) {
        int i = Serial1.read();
        Serial.print(i);
    }
}
void setup(){
Serial.begin(9600);
Serial1.begin(9600);
pinMode(2,输出);
/*初始化计时器,例如计时器1*/
noInterrupts();//禁用中断
TCCR1A=0;//定时器1控制寄存器A
TCCR1B=0;//定时器1控制寄存器B
TCNT1=0;//计时器1的计数器
OCR1A=15625;//定时器1比较匹配寄存器

TCCR1B |=(1您可以使用Arduino的计时器和适当的中断。因此,这里类似于:

void setup() {
    Serial.begin(9600);
    Serial1.begin(9600);
    pinMode(2, OUTPUT);
    /* Initialize timer, e.g. timer1 */
    noInterrupts();    //disable interrupts
    TCCR1A = 0;        //Timer1 control register A
    TCCR1B = 0;        //Timer1 control register B
    TCNT1 = 0;         //Counter of timer1
    OCR1A = 15625;     //Timer1 compare match register

    TCCR1B |= (1<<WGM12);            //Set timer1 in CTC mode
    /* Define prescaler with 1024. If the clock is 16 MHz, then timer1 will run
     * with 16 MHz / 1024 = 15625 Hz --> 64 us, to get one second, we
     * need 15625 cycles, which is the OCR1A register */
    TCCR1B |= (1<<CS10) | (1<<CS12); // clock prescaler = 1024

    TIMSK1 |= (1<<OCIE1A);    //enable timer compare interrupt
    interrupts();             //enable interrupts
}

//This routine is called every time, timer1 counter reaches the compare register
ISR(Timer1_COMPA_vect) {
    digitalWrite(2, digitalRead(2) ^ 1);    //toggle LED
}

//the loop
void loop() {
    if (Serial1.available()) {
        int i = Serial1.read();
        Serial.print(i);
    }
}
void setup(){
Serial.begin(9600);
Serial1.begin(9600);
pinMode(2,输出);
/*初始化计时器,例如计时器1*/
noInterrupts();//禁用中断
TCCR1A=0;//定时器1控制寄存器A
TCCR1B=0;//定时器1控制寄存器B
TCNT1=0;//计时器1的计数器
OCR1A=15625;//定时器1比较匹配寄存器


TCCR1B |=(1在我的情况下,在读取rfid标签时,我需要延时闪烁led。我如何才能做到?请advice@sham999-如果您可以发表评论,您可能没有阅读或不理解“立即眨眼”教程。如果你不懂,你不懂什么?如果你不读,我的自由职业者费率是100美元/小时。我很乐意为你编写代码。我读了。我想打开led 1秒,然后关闭。只需1秒,它就应该亮起来。我怎么能毫不延迟地闪烁?在我的情况下,我需要用闪烁来闪烁led阅读rfid标签时,请不要拖延。我该怎么做?请advice@sham999-如果您可以发表评论,您可能没有阅读或不理解“立即眨眼”教程。如果你不懂,你不懂什么?如果你不读,我的自由职业者费率是100美元/小时。我很乐意为你编写代码。我读了。我想打开led 1秒,然后关闭。只需1秒,它就应该亮起来。我怎么能毫不延迟地闪烁?在我的情况下,我需要用闪烁来闪烁led阅读rfid标签时,请不要拖延。我该怎么做?请advice@sham999-如果您可以发表评论,您可能没有阅读或不理解“立即眨眼”教程。如果你不懂,你不懂什么?如果你不读,我的自由职业者费率是100美元/小时。我很乐意为你编写代码。我读了。我想打开led 1秒,然后关闭。只需1秒,它就应该亮起来。我怎么能毫不延迟地闪烁?在我的情况下,我需要用闪烁来闪烁led阅读rfid标签时,请不要拖延。我该怎么做?请advice@sham999-如果您可以发表评论,您可能没有阅读或不理解“立即眨眼”教程。如果你不懂,你不懂什么?如果你不读,我的自由职业者费率是每小时100美元。我很乐意为你写代码。我读了。我想打开led灯1秒钟,然后关闭。只需1秒钟,它就应该亮起来。我怎么能不延迟地闪烁?先生,这代码不起作用。它只是读取rfid标签。但led不闪烁。你能帮我吗?如果闪烁不起作用,你能检查你的计时器设置吗?你的默认速度是多少?如果你将OCR1A的值更改为低值会发生什么?到目前为止,我在pizzaani的帮助下实现了许多我无法做到的事情。但是先生,我现在的问题是,我如何才能发送两个值从java到arduino,并在arduino中单独处理它们?请帮助我..我已经在这个链接“”中描述了isse