Twee acties tegelijk laten lopen
5 berichten
• Pagina 1 van 1
Twee acties tegelijk laten lopen
Heren,
Ik ben bezig met een knipperlichtprojectje voor een neefje, twee led's moeten om en om flitsen de derde moet continu blijven flitsen.
Heb al van alles geprobeerd maar ze blijven elkaar steeds opvolgen, ik zal wel iets over het hoofd zien maar kom er zelf niet uit.
Is er iemand van jullie die mij kan vertellen hoe ik pin 13 onafhankelijk van pin 11 en 12 kan programmeren?
Heb er niks over kunnen vinden op het world wide web.
Deze code gebruik ik:
void setup() {
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(11, HIGH);
delay(50);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(50);
digitalWrite(11, LOW);
delay(100);
digitalWrite(12, HIGH);
delay(50);
digitalWrite(12, LOW);
delay(100);
digitalWrite(12, HIGH);
delay(50);
digitalWrite(12, LOW);
delay(100);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}
Alvast mijn hartelijke dank.
Ik ben bezig met een knipperlichtprojectje voor een neefje, twee led's moeten om en om flitsen de derde moet continu blijven flitsen.
Heb al van alles geprobeerd maar ze blijven elkaar steeds opvolgen, ik zal wel iets over het hoofd zien maar kom er zelf niet uit.
Is er iemand van jullie die mij kan vertellen hoe ik pin 13 onafhankelijk van pin 11 en 12 kan programmeren?
Heb er niks over kunnen vinden op het world wide web.
Deze code gebruik ik:
void setup() {
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(11, HIGH);
delay(50);
digitalWrite(11, LOW);
delay(100);
digitalWrite(11, HIGH);
delay(50);
digitalWrite(11, LOW);
delay(100);
digitalWrite(12, HIGH);
delay(50);
digitalWrite(12, LOW);
delay(100);
digitalWrite(12, HIGH);
delay(50);
digitalWrite(12, LOW);
delay(100);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}
Alvast mijn hartelijke dank.
Advertisement
Re: Twee acties tegelijk laten lopen
dit is het snelst op te lossen door blink without delay.
cpp code
heel snel even van arduino.cc gehaald (ook uit het forum)
niks aan veranderd, het gaat dus om het principe.
als het neefje ouder is dan 10 jaar dan geef hem ditstukje maar, hij kan het best zelf hoor.
cpp code
/* Multiple independent delay - Two blinking LEDs
Working code example that blinks two LEDs, each with its own independent period.
This extends the BlinkWithoutDelay example of a single LED, showing how to
implement multiple independent timing paths in the main loop.
Written by several forum members. In public domain. Oct 2011.
Note: works even when millis () wraps around to zero after approximately 50 days.
*/
// Which pins are connected to which LED
const byte greenLED = 8 ;
const byte redLED = 10 ;
// Time periods of blinks in milliseconds (1000 milliseconds to a second).
// Time variable and constants are always unsigned long
const unsigned long greenLEDinterval = 555UL ;
const unsigned long redLEDinterval = 1234UL ;
// Variable holding the timer value so far. One for each "Timer"
unsigned long greenLEDtimer = 0 ;
unsigned long redLEDtimer = 0 ;
// Variable to know what the current LED state is
int greenLEDState = LOW ;
int redLEDState = LOW ;
void setup() {
pinMode (greenLED,OUTPUT) ;
pinMode (redLED,OUTPUT) ;
greenLEDtimer = millis () ;
redLEDtimer = millis () ;
}
void loop() {
// Handling the blink of one LED.
// First, check if it is time to change state
if ( (millis () - greenLEDtimer) >= greenLEDinterval ) {
// It is time to change state. Calculate next state.
if (greenLEDState == LOW)
greenLEDState = HIGH ;
else
greenLEDState = LOW ;
// Write new state
digitalWrite (greenLED, greenLEDState ) ;
// Reset timer
greenLEDtimer = millis () ;
}
// The other LED is controlled the same way. Repeat for more LEDs
if ( (millis () - redLEDtimer) >= redLEDinterval ) {
if (redLEDState == LOW)
redLEDState = HIGH ;
else
redLEDState = LOW ;
digitalWrite (redLED, redLEDState ) ;
redLEDtimer = millis () ;
}
/* Other code that needs to execute goes here.
It will be called many thousands of times per second because the above code
does not wait for the LED blink interval to finish. */
}
heel snel even van arduino.cc gehaald (ook uit het forum)
niks aan veranderd, het gaat dus om het principe.
als het neefje ouder is dan 10 jaar dan geef hem ditstukje maar, hij kan het best zelf hoor.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Twee acties tegelijk laten lopen
Paul,
Zoiets als dit had ik ook al gevonden, maar hoe krijg ik nu dat de led's ( pin 11 & 12) twee keer achter elkaar knipperen en pin 13 continu blijft knipperen.
Met deze methode volgen ze elkaar ook op pin 13 stopt als pin 11 & 12 knipperen, ik wil de blauwe led continu laten knipperen en de rode en groene elkaar afwisselen.
Ik heb deze code ook geprobeerd:
cpp code
De bedoeling is dat deze schakeling op een attiny gebakken word en in een autootje komt, de koplampjes knipperen continu en de twee andere led's moeten in de lichtbalk komen.
Zoiets als dit had ik ook al gevonden, maar hoe krijg ik nu dat de led's ( pin 11 & 12) twee keer achter elkaar knipperen en pin 13 continu blijft knipperen.
Met deze methode volgen ze elkaar ook op pin 13 stopt als pin 11 & 12 knipperen, ik wil de blauwe led continu laten knipperen en de rode en groene elkaar afwisselen.
Ik heb deze code ook geprobeerd:
cpp code
// Which pins are connected to which LED
const byte greenLED = 11 ;
const byte redLED = 12 ;
const byte blueLED = 13 ;
// Time periods of blinks in milliseconds (1000 milliseconds to a second).
// Time variable and constants are always unsigned long
const unsigned long greenLEDinterval = 200UL ;
const unsigned long redLEDinterval = 200UL ;
const unsigned long blueLEDinterval = 25UL;
// Variable holding the timer value so far. One for each "Timer"
unsigned long greenLEDtimer = 0 ;
unsigned long redLEDtimer = 0 ;
unsigned long blueLEDtimer = 0 ;
// Variable to know what the current LED state is
int greenLEDState = LOW ;
int redLEDState = LOW ;
int blueLEDState = LOW ;
void setup() {
pinMode (greenLED,OUTPUT) ;
pinMode (redLED,OUTPUT) ;
pinMode (blueLED, OUTPUT) ;
greenLEDtimer = millis () ;
redLEDtimer = millis () ;
blueLEDtimer = millis () ;
}
void loop() {
// Handling the blink of one LED.
// First, check if it is time to change state
if ( (millis () - greenLEDtimer) >= greenLEDinterval ) {
// It is time to change state. Calculate next state.
if (greenLEDState == LOW)
greenLEDState = HIGH ;
else
greenLEDState = LOW ;
// Write new state
digitalWrite (greenLED, greenLEDState ) ;
// Reset timer
greenLEDtimer = millis () ;
}
// The other LED is controlled the same way. Repeat for more LEDs
if ( (millis () - redLEDtimer) >= redLEDinterval ) {
if (redLEDState == LOW)
redLEDState = HIGH ;
else
redLEDState = LOW ;
digitalWrite (redLED, redLEDState ) ;
redLEDtimer = millis () ;
}
// The other LED is controlled the same way. Repeat for more LEDs
if ( (millis () - blueLEDtimer) >= blueLEDinterval ) {
if (blueLEDState == LOW)
blueLEDState = HIGH ;
else
blueLEDState = LOW ;
digitalWrite (blueLED, blueLEDState ) ;
blueLEDtimer = millis () ;
}
}
De bedoeling is dat deze schakeling op een attiny gebakken word en in een autootje komt, de koplampjes knipperen continu en de twee andere led's moeten in de lichtbalk komen.
Re: Twee acties tegelijk laten lopen
dus als redledstate==high then greenledstate =low.
dan heb je een timer minder nodig.
maar je programma is correct lijkt mij.
nu knipperen zeallemaal onafhankelijk, maar je kunt van alles maken hoor.
de blauwe lamp is onafhankelijk en draait op 1 timer, (maar je kunt ook verschillende tijden gebruiken natuurlijk.
je kunt ook random tijden gebruiken.
je kunt ook een hele volgorde maken met een switch case actie.
maak een paar timing diagrammen en dan komt het prog vanzelf, zo kun je ook diverse dingen schijnbaar tegelijk doen.
dan heb je een timer minder nodig.
maar je programma is correct lijkt mij.
nu knipperen zeallemaal onafhankelijk, maar je kunt van alles maken hoor.
de blauwe lamp is onafhankelijk en draait op 1 timer, (maar je kunt ook verschillende tijden gebruiken natuurlijk.
je kunt ook random tijden gebruiken.
je kunt ook een hele volgorde maken met een switch case actie.
maak een paar timing diagrammen en dan komt het prog vanzelf, zo kun je ook diverse dingen schijnbaar tegelijk doen.
paul deelen
shooter@home.nl
shooter@home.nl
5 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 40 gasten