Delays vervangen in millis()
46 berichten
• Pagina 3 van 5 • 1, 2, 3, 4, 5
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Delays vervangen in millis()
Wat altijd weer jammer is dat de TS zich afvraagt waarom er een S-curve is en niet even de moeite neem om een simpel test programmatje maakt om het verschil te zien.....
Advertisement
Re: Delays vervangen in millis()
Sketch omzetten naar arrays is dus eigelijk de code verminderen als ik het goed begrijp,
en
Daar ben ik niet aan uit, heb de sketch wel gewijzigd maar doet nog totaal niet wat het moet doen.
Heb het stukje faden wel even uitgeschakeld:
cpp code
en
is dus kiezen welke led er iets moet doen?als 'i' een '0' is, dan is '1' de andere en omgekeerd.
Daar ben ik niet aan uit, heb de sketch wel gewijzigd maar doet nog totaal niet wat het moet doen.
Heb het stukje faden wel even uitgeschakeld:
cpp code
// Arduino IDE 1.0.5
// Led knoppen millis timing
// Maart 2018
// viewtopic.php?f=25&t=2920
const int switchPins[2] = {
2, 3}; // switch P1=2 / switch P2=3
const int ledPins[2] = {
10, 11}; // led P1=10 / led P2=11
unsigned long previousMillis[2];
const int Interval = 100; // led blink interval in milliseconds
boolean active[2] = {
false, false }; // indicates if led is blinking
int count[2]; // count the blinks
int ledState[2]; // the state of the led
// Later in de code is "sizeof(fadeArray)" gebruikt,
// dat kan omdat het enkele bytes zijn.
byte fadeArray[] =
{
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18, 22, 26,
30, 35, 40, 45, 50, 56, 62, 68, 74, 81, 88, 95, 102, 110, 118, 126, 135,
143, 152, 161, 170, 180, 190, 200, 210, 221, 232, 243, 249, 254
};
int fadeIndex = 0; // index in de fade tabel
unsigned long fadeTimer; // timer om van stap naar stap te springen
const int fade_interval = 100; // verspringen van sterkte 1 x per 100 msec
bool up = true; // beginnen met oplopen van fading effect
void setup()
{
// set each pin connected to an SWITCH to input mode
for(int i=0; i<2; i++){ //this is a loop and will repeat eight times
pinMode(switchPins[i],INPUT); //we use this to set each LED pin to output
}
// set each pin connected to an LED to output mode
for(int i=0; i<2; i++){ //this is a loop and will repeat eight times
pinMode(ledPins[i],OUTPUT); //we use this to set each LED pin to output
}
}
void loop()
{
for( int i=0; i<2; i++)
{
if( digitalRead( switchPins[i]) == LOW) // low is pressed
{
// start or restart the blinking of L1 led.
active[i] = true;
previousMillis[i] = millis();
count[i] = 0;
ledState[i] = HIGH;
digitalWrite( ledPins[i], HIGH);
if( !active[i])
{
digitalWrite( ledPins[i], LOW);
}
}
if( ledPins[i])
{
if( millis() - previousMillis[i] >= Interval)
{
previousMillis[i] = millis();
count[i]++;
if( count[i] > 24) // count longer
{
active[i] = false;
}
if( ledState[i] == HIGH || count[i] > 20) // force low above 20
ledState[i] = LOW;
else
ledState[i] = HIGH;
digitalWrite( ledPins[i], ledState[i]);
}
}
/*
//
// kijk of de fade timer loopt
//
if( !L1Active && !L2Active)
{
//
// timer loopt dus controleer of deze is verlopen
//
if( millis() - fadeTimer > fade_interval)
{
fadeTimer = millis();
//
// timer is verlopen dus nu kijken of we op of neer moeten gaan
//
if( up)
{
//
// oplopend dus verhoog de fade index
//
fadeIndex++;
//
// en kijk of we op het maximum zitten
//
if( fadeIndex == sizeof(fadeArray))
{
//
// we zitten op de top dus richting omzetten en aflopen
//
up = !up;
fadeIndex--; // op de hoogste positie van de tabel
}
}
else
{
//
// richting is aflopend dus verlaag de index
//
fadeIndex--;
//
// kijk of we onderaan de array zitten
//
if( fadeIndex == -1)
{
//
// we hebben de laatste index bereikt dus gaan we weer omhoog
//
up = !up;
fadeIndex = 0; // op de laagste positie van de tabel
}
}
//
// nu nog de output wegschrijven
//
analogWrite( L1Pin, fadeArray[fadeIndex]);
// Als de ene led op het helderste punt is, dan is de andere het meest gedimd.
// En halverwege de tabel komen ze elkaar tegen.
// De hoogste index is "sizeof(array) - 1"
int fadeIndex2 = sizeof( fadeArray) - 1 - fadeIndex;
analogWrite( L2Pin, fadeArray[fadeIndex2]);
}
*/
}
}
Re: Delays vervangen in millis()
Dat ziet er best goed uit hoor
Het faden zou ik gewoon met de index helemaal uitschrijven:
Je hebt als het ware twee kanalen van een schakelaar-met-led. En de for-loop "for( int i=0; i<2; i++)" loopt door de kanalen.
Het faden hoort daar buiten te zitten, die heb je nu per ongeluk er binnen gezet.
Tot nu toe leveren wij vrijwel alle code. Dus ik wil graag dat je het probleem van "de andere led" zelf oplost.
Bij het starten of herstarten van het knipperen, dan wordt gekeken of "de andere led" actief is, en die wordt eventueel uitgezet.
Dus de for-loop "for( int i=0; i<2; i++)" doet eerst kanaal voor 'i' is '0' en dan voor 'i' is '1'. Wat is dan "de andere led" of "het andere kanaal" ?
Het faden zou ik gewoon met de index helemaal uitschrijven:
- Code: Alles selecteren
if( !active[0] && !active[1])
Je hebt als het ware twee kanalen van een schakelaar-met-led. En de for-loop "for( int i=0; i<2; i++)" loopt door de kanalen.
Het faden hoort daar buiten te zitten, die heb je nu per ongeluk er binnen gezet.
Tot nu toe leveren wij vrijwel alle code. Dus ik wil graag dat je het probleem van "de andere led" zelf oplost.
Bij het starten of herstarten van het knipperen, dan wordt gekeken of "de andere led" actief is, en die wordt eventueel uitgezet.
Dus de for-loop "for( int i=0; i<2; i++)" doet eerst kanaal voor 'i' is '0' en dan voor 'i' is '1'. Wat is dan "de andere led" of "het andere kanaal" ?
Re: Delays vervangen in millis()
Ik zal mijn grijze massa eens flink aan het werk zetten , tot nu toe lukt het me nog niet om het i=0 en i=1 op te roepen.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Delays vervangen in millis()
Misschien eens tijd om energie in basiskennis steken?
Re: Delays vervangen in millis()
nicoverduin schreef:Misschien eens tijd om energie in basiskennis steken?
Geloof me dat doe ik echt, maar voor een simpele ziel als mij is C++(zelfde als arduino?) programmeren echt next level, zeker zo uit het blote hoofdje zoals jullie dat doen
maar ik zou het zo graag willen.
Moet ook zeggen dat internet vol staat met tutorials, maar iedereen heeft toch weer een andere manier en dat is verwarrend.
Laat ik maar zeggen dat het wel goed komt, ooit
Re: Delays vervangen in millis()
Begrijp je de bedoeling?
In het stukje "hier jouw code !" daar graag "de_andere_led" de waarde (de array index) geven van de andere led. Er zijn meer dan 10 goede manieren. Ik krijg de indruk dat je nog niet eerder met array's had gewerkt.
En ja, ieder heeft zijn eigen stijl. En iedereen vindt zijn eigen stijl het beste.
Misschien krijg je ook wel een eigen stijl die het beste bij je past, en misschien ga je ook wel denken dat jouw stijl de beste is
cpp code
In het stukje "hier jouw code !" daar graag "de_andere_led" de waarde (de array index) geven van de andere led. Er zijn meer dan 10 goede manieren. Ik krijg de indruk dat je nog niet eerder met array's had gewerkt.
En ja, ieder heeft zijn eigen stijl. En iedereen vindt zijn eigen stijl het beste.
Misschien krijg je ook wel een eigen stijl die het beste bij je past, en misschien ga je ook wel denken dat jouw stijl de beste is
cpp code
if( digitalRead( switchPins[i]) == LOW) // low is pressed
{
// start or restart the blinking of L1 led.
active[i] = true;
previousMillis[i] = millis();
count[i] = 0;
ledState[i] = HIGH;
digitalWrite( ledPins[i], HIGH);
int de_andere_led;
// hier jouw code !
if( !active[de_andere_led])
{
digitalWrite( ledPins[de_andere_led], LOW);
}
}
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Delays vervangen in millis()
Of hij let beter op in de les:)
Re: Delays vervangen in millis()
Ik ben niet bepaald een school jongen meer misschien dat het daarom wat roestig gaat, maar sketch werkt nu wel zonder het stukje faden.nicoverduin schreef:Of hij let beter op in de les:)
Het spreekwoordelijke kwartje wil niet vallen , en nu helemaal, nu de sketch het wel doet alleen zonder het faden. Dat is weer het volgende probleem.In het stukje "hier jouw code !" daar graag "de_andere_led" de waarde (de array index) geven van de andere led.
Dat klopt als een bus, daarom ben ik blij dat je het mij probeert uit te leggen.Ik krijg de indruk dat je nog niet eerder met array's had gewerkt.
Re: Delays vervangen in millis()
Hallo, ik snap de telling van arrays van 0 t&m een x nummer.
De sketch werkt op deze manier en scheelt inderdaad een hoop code.
cpp code
De sketch werkt op deze manier en scheelt inderdaad een hoop code.
cpp code
// Arduino IDE 1.0.5
// Led knoppen millis timing
// Maart 2018
// viewtopic.php?f=25&t=2920
const int switchPins[2] = {
2, 3}; // switch P1=2 / switch P2=3
const int ledPins[2] = {
10, 11}; // led P1=10 / led P2=11
unsigned long previousMillis[2];
const int Interval = 100; // led blink interval in milliseconds
boolean active[2] = {
false, false }; // indicates if led is blinking
int count[2]; // count the blinks
int ledState[2]; // the state of the led
void setup()
{
// set each pin connected to an SWITCH to input mode
for(int i=0; i<2; i++){ //this is a loop and will repeat two times
pinMode(switchPins[i],INPUT_PULLUP); //we use this to set each LED pin to output
}
// set each pin connected to an LED to output mode
for(int i=0; i<2; i++){ //this is a loop and will repeat two times
pinMode(ledPins[i],OUTPUT); //we use this to set each LED pin to output
}
}
void loop()
{
for( int i=0; i<2; i++)
{
if( digitalRead( switchPins[i]) == LOW) // low is pressed
{
// start or restart the blinking of L1 led.
active[i] = true;
previousMillis[i] = millis();
count[i] = 0;
ledState[i] = HIGH;
digitalWrite( ledPins[i], HIGH);
if( !active[i])
{
digitalWrite( ledPins[i], LOW);
}
}
if( ledPins[i])
{
if( millis() - previousMillis[i] >= Interval)
{
previousMillis[i] = millis();
count[i]++;
if( count[i] > 24) // count longer
{
active[i] = false;
}
if( ledState[i] == HIGH || count[i] > 20) // force low above 20
ledState[i] = LOW;
else
ledState[i] = HIGH;
digitalWrite( ledPins[i], ledState[i]);
}
}
}
}
46 berichten
• Pagina 3 van 5 • 1, 2, 3, 4, 5
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 34 gasten