创建不同频率的脉冲
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' 的值。
我想用我的 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' 的值。