Callback functie nextion gebruiken in arduino

algemene C code
Berichten: 77
Geregistreerd: 17 Mrt 2016, 17:05
Woonplaats: Julianadorp

Re: Callback functie nextion gebruiken in arduino

Berichtdoor Creator » 24 Aug 2019, 13:57

Whoo das andere koek :shock:

Ik heb eerst de twee knoppen vervangen voor en dualstate button, dat scheelt weer code.
Inderdaad de if in klok() eruit gehaald, idd idioot om die twee keer erin te zetten. En ik maar denken dat het zo moest :roll:

Alleen die delay eruit? Ik begrijp dat ik dan een;
variabele maak type
unsigned long vorigeMillis = 0; // resetten van de teller
en een
const long interval = 1000; // de 1 sec vertraging voor de teller
in de main loop()
unsigned long huidigeMillis = millis(); // de daadwerkelijke teller tot interval

if (huidigeMillis - vorigeMillis >= interval) {

vorigeMillis = huidigeMillis; // terug naar 0 en opnieuw beginnen

//en dan raak ik het kwijt

if ( )
{
moet hier de timerloop staan van sec,min,uren? ;
}
else
{

}

Advertisement

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

Re: Callback functie nextion gebruiken in arduino

Berichtdoor nicoverduin » 24 Aug 2019, 15:26

In de loop:
cpp code
Als true
Als timer loopt
Als 1 seconde verlopen
Klok()
Start timer
Einde Als
Anders
Klok()
Start timer
Einde Als
Einde Als
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 77
Geregistreerd: 17 Mrt 2016, 17:05
Woonplaats: Julianadorp

Re: Callback functie nextion gebruiken in arduino

Berichtdoor Creator » 24 Aug 2019, 15:27

Ik denk dat ik de puzzel heb opgelost ;)

hier de volledige code voor het starten en stoppen/pauzeren en wederom starten van een timer.

Code: Alles selecteren
/*
 *********************************************************************
   Test sketch t.b.v. het starten en stoppen/pauzeren van een timer.
   Gebruikte hardware:
    - Arduino MEGA 2560 communiceerd op Serial2
    - Nextion Basic 3,2 inch display
 *********************************************************************
*/
#include <Nextion.h>

//*************declareer de globale constante*************************
boolean start = false;

//*************setup variabelen voor tijd telling ********************
uint32_t timer;           // de timer
uint16_t Hour = 0;
uint16_t Minute = 0;
uint16_t Second = 0;

unsigned long vorigeMillis = 0; // resetten van de teller
const long interval = 1000;     // de 1 sec vertraging voor de teller
   
//*************setup van nextion buttons *****************************
  NexDSButton btstart = NexDSButton(0, 6, "btstart");   // start-stop timer

/*
   tekst veld - time.txt voor odo tijd
*/
//*************defineer lees lijst nextion buttons *******************
NexTouch *nex_listen_list[] =
{
  &btstart,
  NULL
};

//*************defineer buttons als void pointers ********************
void btstartPushCallback (void *ptr)
{
  uint32_t number5 = 0;  // Create variable to store value we are going to get
  btstart.getValue(&number5);  // Read value of dual state button to know the state (0 or 1)

  if(number5 == 1)
  {                             // If dual state button is equal to 1 (meaning is ON)...
    start = true;
  } else
  {
    start =false;
  }
}


void setup() {              // put your setup code here, to run once:
//Serial.begin(9600);     // tbv seriele monitor
  start = false;
  nexInit();                // Start communicatie met nextion display

  //******************Callback functie initieren***************************
    btstart.attachPush(btstartPushCallback);

  //******************Display tijd op display 000:00:00********************
  char Time[11];
  sprintf(Time, "%03d:%02d:%02d", Hour, Minute, Second);
  Serial2.print(F("time.txt=\""));
  Serial2.print(Time);
  Serial2.print("\"");
  Serial2.write(0xff);
  Serial2.write(0xff);
  Serial2.write(0xff);
}

void loop()                 // put your main code here, to run repeatedly:
{
  nexLoop(nex_listen_list); // luister naar de buttons uit de luister lijst
 
  unsigned long huidigeMillis = millis(); // de daadwerkelijke teller
  if (huidigeMillis - vorigeMillis >= interval)
  {
   vorigeMillis = huidigeMillis; // terug naar 0 en opnieuw beginnen
 
   if (start == true)
    {
      klok();
    }
    else
    {
      timer = 0 ;
      start = false;
    }
  }
}
//******************Sub programma voor klok timer ***********************

void klok()                 // funcie aanroepen in main loop
{
  timer = millis();
  Second++;                       // seconde verlopen
    if (Second == 60)
    {
      Minute++;                     // minuut verlopen?
      Second = 0;
    }
    if (Minute == 60)
    {
      Hour++;                       // uur verlopen?
      Minute = 0;
    }
//*********************display de tijd op nextion display ***************
  char Time[11];
  sprintf(Time, "%03d:%02d:%02d", Hour, Minute, Second);
  Serial2.print(F("time.txt=\""));
  Serial2.print(Time);
  Serial2.print("\"");
  Serial2.write(0xff);
  Serial2.write(0xff);
  Serial2.write(0xff);
}

Berichten: 77
Geregistreerd: 17 Mrt 2016, 17:05
Woonplaats: Julianadorp

Re: Callback functie nextion gebruiken in arduino

Berichtdoor Creator » 25 Aug 2019, 13:42

Nog een vraagje, iets wat me niet duidelijk is.

Waarom hebben de Nextion items een functie met (void * ptr) en sub functie's alleen een void xxxx ()?

is de pointer functie omdat er een waarde uit de nextion komt ?
ik heb er best veel over gelezen maar het is me niet duidelijk geworden.

Wie kan licht in de duisternis schenken ;)

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Callback functie nextion gebruiken in arduino

Berichtdoor Koepel » 25 Aug 2019, 22:48

Die vraag heb ik net zitten beantwoorden :? http://arduinoforum.nl/viewtopic.php?f=9&t=3880

Vorige

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 10 gasten