2016-04-10 7 views
0

Ich möchte simultan arbeiten verschiedene frequenced Impulse mit meinem uno.Ich habe nur etwas wie unten eingerichtet.Wenn ich das Programm auf uno ausführen beide Funktionen arbeiten mit der gleichen Frequenz.Ich möchte eine von ihnen erstellen einen hohen Wert für 1 Sekunde, dann geht Low und der andere von ihnen erstellen ein High für 1ms dann geht Low.Ist das möglich? Wenn es ist, dann wie?Erstellen verschiedener Frequenzimpulse

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


    } 

Antwort

0

Ihr aktueller Code funktioniert nicht, da es dir() und stepper() sequentiell nennt, das heißt, es kann nur Gespräche stepper() nach den 2 Sekunden für einen vollen Zyklus von dir() warten.

Zur Simulation sowohl Aufruf, sobald Sie es folgendes tun sollten:

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

Der Aufruf von stepForOneSecond wird (ungefähr) 1 Sekunde dauern, danach wird sie den Wert des ‚dirPin‘ wechseln.

+0

danke für Ihre Hilfe arbeitete wie ein Charme! – Huloo

Verwandte Themen