2016-04-10 15 views
0

私は同じ周波数を使って異なる周波数のパルスを同時に作りたいと思っています。私は以下のような設定をしています。私は同じ機能を持っています。それらのうち1秒間に高い値を作成してからLowになり、もう1つは1ms間Highになり、Lowになります。これは可能ですか?異なる周波数パルスを作成する

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();  


    } 

答えて

0

それはつまり、それだけでdir()の完全なサイクルのために2秒を待ってstepper()を呼び出し、dir()stepper()順を呼び出すので、あなたの現在のコードは動作しません。

あなたはそれを次の操作を行う必要があり、一度に両方の呼び出しをシミュレートするには:

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への呼び出しは、それはdirPin 'の値をトグルするまでの、(約)1秒を持続します。

+0

おかげさまで、ありがとうございました! – Huloo

関連する問題