nRF24 met vertraging

Arduino specifieke Software
Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: nRF24 met vertraging

Berichtdoor shooter » 08 Dec 2015, 20:24

metafoor moeilijk woord.
en nico methode betekent wel dat de hele stapel (array) moet verschuiven als je de kaart gebruikt.
paul deelen
shooter@home.nl

Advertisement

Berichten: 9
Geregistreerd: 01 Dec 2015, 20:16

Re: nRF24 met vertraging

Berichtdoor SanderdK » 09 Dec 2015, 16:35

Bedankt voor jullie tips.

Ik ben hard bezig geweest met informatie verzamelen over array's.
Ik heb een test opstelling gemaakt met een groen en een rood ledje.
Het is de bedoeling dat ik via de seriële monitor een 1 of een 2 geef waarna er twee seconden niets gebeurt en dan een ledje gaat branden.
Dit is niet gelukt met mijn code:
cpp code
int groen = 4;
int rood = 5;
int state;
unsigned long vertraging[10];


void setup() {
pinMode (groen, OUTPUT);
pinMode (rood, OUTPUT);
Serial.begin(9600);
}

void loop() {


if (Serial.available() > 0) {
state = Serial.read();
}
if (state == '1')
{
unsigned long tijd = millis();
vertraging[1] = millis();
}
if (millis() - 2000 == vertraging[1]) {
Fgroen();

}
else if (state = '2') {
unsigned long tijd = millis();
vertraging[2] = millis();
}
if (millis() - 2000 == vertraging[2]) {
Frood();
}
}



void Fgroen() {
digitalWrite(groen, HIGH);
digitalWrite(rood, LOW);
}


void Frood() {
digitalWrite(rood, HIGH);
digitalWrite(groen, LOW);
}


Iemand tips?

Mvg,

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: nRF24 met vertraging

Berichtdoor nicoverduin » 09 Dec 2015, 16:45

ik zou:
a) int state vervangen voor char state.

Dit stukje:
cpp code
if (state == '1')
{
unsigned long tijd = millis();
vertraging[1] = millis();
}
if (millis() - 2000 == vertraging[1]) {
Fgroen();

}
else if (state = '2') {
unsigned long tijd = millis();
vertraging[2] = millis();
}
if (millis() - 2000 == vertraging[2]) {
Frood();
}


vervangen in

cpp code
if (state == '1')
{
unsigned long tijd = millis();
vertraging[1] = millis();
}
if ((millis() - vertraging[1]) > 2000) {
Fgroen();

}
else if (state == '2') {
unsigned long tijd = millis();
vertraging[2] = millis();
}
if ((millis() - vertraging[2] )> 2000) {
Frood();
}


Ik zou zelf nog wel wat verder gaan, maar nu ff een stap tegelijk
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: nRF24 met vertraging

Berichtdoor shooter » 09 Dec 2015, 22:06

ik zou wel bij int blijven, en gelijk switch state uitleggen.
paul deelen
shooter@home.nl

Berichten: 9
Geregistreerd: 01 Dec 2015, 20:16

Re: nRF24 met vertraging

Berichtdoor SanderdK » 10 Dec 2015, 13:54

Hallo,

Bedankt voor jullie tips. Helaas werken ze niet bij mij.
Ik gebruik nu een code volgens de tip van Shooter:
Code: Alles selecteren
int groen = 4;
int rood = 5;
int state;
unsigned long vertraging[10];


void setup() {
  pinMode (groen, OUTPUT);
  pinMode (rood, OUTPUT);
  Serial.begin(9600);
}

void loop() {


  if (Serial.available() > 0) {
    state = Serial.read();
  }
  switch (state) {
    case '1':
      {
        unsigned long tijd = millis();
        vertraging[1] = millis();

        if ((millis() - vertraging[1]) > 2000) {
          Fgroen();
        }
      }
      break;
    case '2':
      {
        unsigned long tijd = millis();
        vertraging[2] = millis();

        if ((millis() - vertraging[2]) > 2000) {
          Frood();
        }
      }
      break;
  }
}


void Fgroen() {
  digitalWrite(groen, HIGH);
  digitalWrite(rood, LOW);
}


void Frood() {
  digitalWrite(rood, HIGH);
  digitalWrite(groen, LOW);
}


Wat doe ik fout?
Mvg,

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: nRF24 met vertraging

Berichtdoor nicoverduin » 10 Dec 2015, 19:50

Er gaat wel meer fout....
Je leest een teken als deze er is. Vervolgens blijft state dezelfde waarde.
En elke keer door de loop ga je door de switch case
En elke keer reset je te vertraging
En elke keer gaat het fout.
De switch case kan je toepassen alleen voor het starten voor de desbetreffende timer. Waarbij de vraag rijst wat doe je als deze al loopt.
Het af testen van de timers moet buiten de switch case
En als je dan omschakelt, wat doe je met de andere timer
En waarom maak je een variabele tijd elke keer als je er niets aan doet?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: nRF24 met vertraging

Berichtdoor shooter » 10 Dec 2015, 20:44

esten van timers of ingangen doe ik in een functie die door de loop gevraagd wordt, deze functie wordt zoveel mogelijk aangeroepen, zo ook een functie voor stepper.run
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: nRF24 met vertraging

Berichtdoor nicoverduin » 10 Dec 2015, 21:29

shooter schreef:esten van timers of ingangen doe ik in een functie die door de loop gevraagd wordt, deze functie wordt zoveel mogelijk aangeroepen, zo ook een functie voor stepper.run

Zit jij nu 2 posts door elkaar te halen? Ik heb geen stepper gezien :mrgreen:
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: nRF24 met vertraging

Berichtdoor nicoverduin » 10 Dec 2015, 21:30

shooter schreef:metafoor moeilijk woord.
en nico methode betekent wel dat de hele stapel (array) moet verschuiven als je de kaart gebruikt.

Metafoor is een gewoon nederlands woord dus dat valt nog wel mee en je hoeft geen enkele kaart te verschuiven alleen 2 pointers :mrgreen:
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: nRF24 met vertraging

Berichtdoor shooter » 11 Dec 2015, 00:32

mijn loop is
functieaanroep inputs
functieaanroep timers
aanroep status
aanroep procedures.
aanroep uitgangen zoals steppers
dat komt denk ik door de PLC ervaring.
paul deelen
shooter@home.nl

VorigeVolgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 78 gasten