创建不同频率的脉冲

Creating different frequency pulses

我想用我的 uno.I 创建同时工作的不同频率脉冲,我刚刚设置了类似 below.When 我在 uno 上执行程序,两个功能都使用相同的 frequency.I 希望其中一个创建 1 秒的高值然后变为低,另一个创建 1 毫秒的高然后变为 Low.Is 这可能吗?如果是,那么如何?

    int dirPin = 8;
    int stepPin = 9;


    void setup()
    {
      pinMode(dirPin,OUTPUT);
      pinMode(stepPin,OUTPUT);

    }
    void stepper()
    {
      digitalWrite(stepPin,HIGH);
      delay(1);
      digitalWrite(stepPin,LOW);
      delay(1);
    }
    void dir()
    {

          digitalWrite(dirPin,HIGH);
          delay(1000);
          digitalWrite(dirPin,LOW);
          delay(1000);

    }
    void loop()
    {
//interrupts functions from here https://www.arduino.cc/en/Referenc/Interrupts
    noInterrupts();
    dir();
    interrupts();
    stepper();     


    }

您当前的代码无法正常工作,因为它按顺序调用 dir()stepper(),即,它仅在等待 [=] 的完整循环两秒后才调用 stepper() 11=].

要模拟同时调用两者,您应该执行以下操作:

void stepForOneSecond(){
    for(int i = 0; i < 500; ++i){
        digitalWrite(stepPin,HIGH);
        delay(1);
        digitalWrite(stepPin,LOW);
        delay(1);
    }
}

void loop(){
    digitalWrite(dirPin,HIGH);
    stepForOneSecond();
    digitalWrite(dirPin,HIGH);
    stepForOneSecond();
}

stepForOneSecond 的调用将持续(大约)1 秒,之后它将切换 'dirPin' 的值。