nRF24 met vertraging

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

Re: nRF24 met vertraging

Berichtdoor nicoverduin » 11 Dec 2015, 08:33

shooter schreef:mijn loop is
functieaanroep inputs
functieaanroep timers
aanroep status
aanroep procedures.
aanroep uitgangen zoals steppers
dat komt denk ik door de PLC ervaring.

Dit heeft inderdaad een hoog PLC gehalte :mrgreen:
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Advertisement

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

Re: nRF24 met vertraging

Berichtdoor SanderdK » 11 Dec 2015, 18:34

Hallo,

Bedankt voor de vele informatie, ik kom er alleen nog steeds niet uit.
Ik heb de timer buiten de switch-case gezet maar nu werkt de switch-case het zelfde als zonder timer.
De lampjes gaan direct aan en uit.


Code: Alles selecteren
int groen = 4;
int rood = 5;
int state;
unsigned long vertraging[10];
unsigned long tijd = millis();


void setup() {
  pinMode (groen, OUTPUT);
  pinMode (rood, OUTPUT);
  Serial.begin(9600);
  Serial.println("Set-up voltooid");
}

void loop() {

  if (Serial.available() > 0) {
    state = Serial.read();
    Serial.println("Serial Available");
  }
  (vertraging[1] = tijd );
  ((tijd - vertraging[1]) > 2000);

  switch (state) {
    case '1':
      Serial.println("case 1");
      vertraging[1];
      Fgroen();
      break;

    case '2':
      Serial.println("case 2");
      vertraging[2];
      Frood();
      break;
  }
}


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


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


Wat zie ik steeds over het hoofd?

Mvg,

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

Re: nRF24 met vertraging

Berichtdoor nicoverduin » 12 Dec 2015, 09:06

Dit is zinloos....
cpp code
(vertraging[1] = tijd );
((tijd - vertraging[1]) > 2000);

Ik zou nog eens kijken naar blink without delay kijken hoe je timers instelt.
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 » 12 Dec 2015, 13:29

sorry met tijd bedoel ik natuurlijk time()
paul deelen
shooter@home.nl

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

Re: nRF24 met vertraging

Berichtdoor SanderdK » 15 Dec 2015, 13:35

Hallo,

Bedankt voor al jullie reacties.
Het is mij gelukt om de vertraging in te bouwen door middel van blink without delay.
Ik heb deze sketch vrijwel helemaal verandert maar het is nu gelukt.
Dus bedankt voor al jullie tips.

Mvg,

SanderdK

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

Re: nRF24 met vertraging

Berichtdoor nicoverduin » 15 Dec 2015, 16:20

Krijgen wij de laatste versie ook hier nog te zien? Dan heeft een ander er ook wat aan.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: nRF24 met vertraging

Berichtdoor SanderdK » 14 Jan 2016, 17:40

Bij mij lukt het met deze code:

Het doet het alleen niet als het volgende commando binnen 2 seconden binnen komt
cpp code
const int ledRood =  13;
const int ledGroen = 8;
int state = 0;

int ledState = LOW;
int ledState2 = LOW;

unsigned long previousMillis = 0;
const long interval = 2000;

void setup() {
Serial.begin(9600);
pinMode(ledRood, OUTPUT);
pinMode(ledGroen, OUTPUT);
Serial.println("Set-up Voltooid");
}

void loop()
{
if (Serial.available() > 0) {
state = Serial.read();
Serial.println("Serial Available");
}
unsigned long currentMillis = millis();

switch (state) {
case '1':
//Serial.println("Case 1");
Serial.println(currentMillis - previousMillis);
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;

if (ledState == LOW)
ledState = HIGH;
digitalWrite(ledRood, ledState);
digitalWrite(ledGroen, LOW);
}
break;

case '2':
//Serial.println("Case 2");
Serial.println(currentMillis - previousMillis);
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;

if (ledState2 == LOW)
ledState2 = HIGH;
digitalWrite(ledGroen, ledState2);
digitalWrite(ledRood, LOW);
}
break;
}
}

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

Re: nRF24 met vertraging

Berichtdoor shooter » 14 Jan 2016, 18:54

en het programma compileert niet en je maakt de fout door alle tijden dezelfde naam te geven.
je moet natuurlijk wel vertellen dat als de state verandert jij dat ook graag wilt zien.
paul deelen
shooter@home.nl

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

Re: nRF24 met vertraging

Berichtdoor SanderdK » 15 Jan 2016, 19:57

bij mij compileert het programma wel.
Ik heb andere rijden aangemaakt maar nu gebeurt er helemaal niets
cpp code
const int ledRood =  13;
const int ledGroen = 8;
int state = 0;

int ledState = LOW;
int ledState2 = LOW;

unsigned long previousMillis = 0;
unsigned long previousMillis2 = 0;

const long interval = 2000;
const long interval2 = 2000;

void setup() {
Serial.begin(9600);
pinMode(ledRood, OUTPUT);
pinMode(ledGroen, OUTPUT);
Serial.println("Set-up Voltooid");
}

void loop()
{
if (Serial.available() > 0) {
state = Serial.read();
Serial.println("Serial Available");
}
unsigned long currentMillis = millis();
unsigned long currentMillis2 = millis();

switch (state) {
case '1':
//Serial.println("Case 1");
Serial.println(currentMillis - previousMillis);
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;

if (ledState == LOW)
ledState = HIGH;
digitalWrite(ledRood, ledState);
digitalWrite(ledGroen, LOW);
}
break;

case '2':
//Serial.println("Case 2");
Serial.println(currentMillis2 - previousMillis2);
if (currentMillis2 - previousMillis2 >= interval2) {
previousMillis2 = currentMillis2;

if (ledState2 == LOW)
ledState2 = HIGH;
digitalWrite(ledGroen, ledState2);
digitalWrite(ledRood, LOW);
}
break;
}
}

Als ik de // weg haal bij
//Serial.println("Case 1");
//Serial.println("Case 2");
dan kan ik het toch op de serial monitor zien als de state veranderd?!

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

Re: nRF24 met vertraging

Berichtdoor nicoverduin » 15 Jan 2016, 21:18

Je geeft aan dat state een int is terwijl je een char inleest. Het eerste is 2 bytes, het 2e 1. Daarna test je af alsof het een char is.
Kun je niet beter die state veranderen in een char? en initialiseren als
cpp code
char state = '0';
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Vorige

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: inteqrupeyeli, Robertkable en 91 gasten