Wijzigen component ID in Nextion editor

Software die niet past in bovenstaande onderwerpen
Berichten: 305
Geregistreerd: 23 Okt 2016, 20:29

Re: Wijzigen component ID in Nextion editor

Berichtdoor benvo » 13 Mei 2017, 13:45

Hallo,

Voor mij dus ook het eerste project wat soms dingen laat zien die door de werking van de Nextion simpel zijn maar zo is het niet altijd.

Op mijn scherm heb ik geen piepje, wat ik overigens wel handig vind. Daarvoor moet ik eens zo'n buzzertje aanschaffen. Er zijn verschillende soorten merkte ik op. Passief en actief. Nou ja, komt wel.
Maar terugkomend op het onderwerp; mijn knoppen verkleuren bij het indrukken wat ook wel duidelijk werkt en gemakkelijk is te realiseren in de Nextion Editor.

Mijn tijd en datum schrijft weg naar het instelscherm. Het hoofdscherm heeft dezelfde tekst velden, bijvoorbeeld tekst veld t0 is het urenveld op beide schermen.
Nico heeft me geleerd dat ik mijn loop niet voortdurend behoef te updaten. Ik dacht dat, voor de uren, te doen op deze manier: if(nuuur!=laasteuurdupdate) dan mag er tekst naar het uurveld weggeschreven worden. Daarna laasteuurupdate=nuuur;. Maar als ik daar beter over nadenk kan dat niet want dan wordt er niets weggeschreven als nuuur==laasteuurupdate is. Eigenlijk moet ik iets hebben wat de uurtijd bewaart op het scherm zolang er niets wijzigt in die tijd. Ik zeg het nu maar zoals ik denk. Qua programmeren is dat nog iets anders.

Een vraag, ook al weer n.a.v. een opmerking van Koepel die dacht dat ik setDS3231time gebruikte. Het equivalent van setDS3231time is voor mijn RTClib. rtc.adjust(). Maar wat is het equivalent voor readDS3231time? Is dat rtc.now()?

Pfffffff

Groet,
Ben.
Laatst gewijzigd door benvo op 13 Mei 2017, 14:09, in totaal 1 keer gewijzigd.

Advertisement

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor nicoverduin » 13 Mei 2017, 14:06

Waarom maak je niet gewoon een standaard string voor de hele tijd:
cpp code
char tijdString[9];
static char vorigeTijd[9];
sprintf(tijdString, "%02d:%02d:%02d", rtc.getHours(), rtc.getMinutes(),rtc.getSeconds());
if (strcmp(tijdString, vorigeTijd) != 0) {
tijdVeldScherm.setText(tijdString); // update het display met de tijd HH:MM:SS
strcpy(tijdStringOud, tijdString); // bewaar tijd string voor de volgende kee
}


Nu wordt de tijd bijgewerkt 1x per seconde omdat die 1x per seconde wijzigt. De rest wordt automatisch meegenomen

En dan kan je dit stuk code vervangen MITS je van de tijd EEN enkel tekst veld maakt:
cpp code
//Zet de tijd op mijn Nextion scherm.

Serial2.print("t0.txt=\""); //t0 is mijn uren teksttbox
if(CurrentTime.hour()<10)
{
Serial2.print("0");
}
Serial2.print(CurrentTime.hour());
Serial2.print("\"\xFF\xFF\xFF");

Serial2.print("t1.txt=\""); //t1 is mijn minuten tekstbox
if(CurrentTime.minute()<10)
{
Serial2.print("0");
}
Serial2.print(CurrentTime.minute());
Serial2.print("\"\xFF\xFF\xFF");

Serial2.print("t2.txt=\""); //t2 is mijn seconden tekstbox
if(CurrentTime.second()<10)
{
Serial2.print("0");
}
Serial2.print(CurrentTime.second());
Serial2.print("\"\xFF\xFF\xFF");


En dat je nog steeds stug volhoud in die 3x 0xFF oplossing is me al helemaal niet duidelijk......
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 305
Geregistreerd: 23 Okt 2016, 20:29

Re: Wijzigen component ID in Nextion editor

Berichtdoor benvo » 13 Mei 2017, 14:29

Je hebt wat ik bedoelde vertaalt naar een programma! Dat vind ik knap! Zelf ben ik aan het oefenen, buiten dit project, door allerlei kleine dingetje te schrijven die soms werken, soms ook niet. Ondermeer komt dit doordat het is alsof je leert praten. Je kunt niet alles vertellen, gewoon, omdat je de woorden nog niet kent. Zie je de woorden staan weet je nog niet precies wat ze betekenen en wat je ermee kan doen. Zo heb ik nu pas door wat die buffers precies doen bij strcat, strcmp en strcopy. en dus ook het antwoord wat je me een tijd geleden al gaf.... Maar ik kom wel steeds verder! Helaas zijn er geen mensen in de buurt of scholing mogelijkheden hier dus is zelf oefenen en veel vragen de oplossing voorlopig.

Deze vragen heb ik bijvoorbeeld?

Waarvoor staat het getal 9 in de string? Ik begrijp wel dat het een grootte aangeeft maar welke grootte precies?

Werkt jouw standaardstring ook voor day, month en year? Of moet ik daarvoor een vergelijkbaar iets voor dit deel maken?

Zo vraag ik me ook af wat readsqwPinmode en writesqwPinmode (keywords RTClib.) precies doen?

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor nicoverduin » 13 Mei 2017, 15:03

In C/C++ moet een char array (in feit gewoon een stel tekens) altijd afgesloten worden met een hex 00 waarde. Zo weet de compiler wanneer het laatste teken is gelezen. Dit geldt voor C/C++ sinds het ontstaan. het formaat HH:MM:SS (lees uren met minuten en seconden en tussen elk een :) is 8 tekens (=bytes) lang. En daar er een 0x00 achter gezet moet worden worden het dus 9 bytes totaal.

deze regel:
cpp code
sprintf(tijdString, "%02d:%02d:%02d", rtc.getHours(), rtc.getMinutes(),rtc.getSeconds());

Kun je ook kopieren voor dag maand jaar.
het stukje
cpp code
"%02d:%02d:%02d"


Geeft aan hoe de waarden geformatteerd moeten worden. In dit geval betekent
% - hier komt een te formatteren (=opmaak) variabele
0 - variabele met voorloop nullen opmaken
2 - de opmaak bestaat uit 2 tekens

Met enige moeite op google kun je die laatste vraag zelf vinden. Kon ik ook :mrgreen:
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 305
Geregistreerd: 23 Okt 2016, 20:29

Re: Wijzigen component ID in Nextion editor

Berichtdoor benvo » 13 Mei 2017, 15:35

Na een paar aanpassingen, aan mijn RTClib en een vergissing in jou sketch werkt de tijd prima.

DateTime now=rtc.now();
char tijdString[9];
static char vorigeTijd[9];

sprintf(tijdString, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());

if (strcmp(tijdString, vorigeTijd) != 0)
{
t0.setText(tijdString); // update het display met de tijd HH:MM:SS
strcpy(vorigeTijd, tijdString); // bewaar tijd string voor de volgende keer
}

Maar de tijd instellen is nu niet meer mogelijk en daar was het allemaal om begonnen.
Wat ik zou kunnen doen is natuurlijk om deze sketch in aangepaste vorm te gebruiken apart voor de uren, minuten, seconden, dagen, maanden en jaren?

Even zien of ik sprintf goed vertaal: %d is decimaal. 02 staat voor 2 getallen in het geval kleiner als 10 vooraf gegaan met een nul. Bij 20%02d staat zo de 20 bijvoorbeeld voor het jaar 2000 waarachter dan weer 2 getallen komen.

Groet,
Ben.

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor Koepel » 13 Mei 2017, 15:43

@nicoverduin Okay, het zit er in. Alleen iets sturen naar het scherm als de tijd of datum ook echt gewijzigd is :D
Ik heb intussen ook nog een automatische zomer/wintertijd-omschakeling gemaakt, die op de seconde nauwkeurig omschakelt. Maar die is voor de pjrc.com TimeLib :(

@benvo De manier van de tijd naar het scherm update hoort los te staan van het instellen van een nieuwe tijd. Dus het zit nog ergens anders in de knoop. Ik gebruik voor het jaartal %4d, omdat het toch altijd 2017 (of hoger) is.

Berichten: 305
Geregistreerd: 23 Okt 2016, 20:29

Re: Wijzigen component ID in Nextion editor

Berichtdoor benvo » 13 Mei 2017, 16:27

Ik zal de sketch nog eens mijn scherm zetten zoals ik het nu gedaan heb. Voor de uren,minuten, seconden,dag, maand en jaar heb de sketch van Nico uit elkaar getrokken zodat hij keurig op mijn , zowel instel als Nextion hoofdscherm past. Dit loopt verder perfect.

De instelmogelijkheid doet het maar heel af en toe. Dus slechter als bij de sketch die ik hiervoor liet zien! Dat snap ik dus niet!


Dank voor het beantwoorden van mijn vragen!

[code2=cpp][/
Code: Alles selecteren

// ----------------------- RTC Library -----------------------
#include "Nextion.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include "RTClib.h"
#include "ChannelManager.h"




// Data aansluiting is aangesloten op pin 7 on the Arduino.
#define ONE_WIRE_BUS 7

// Legt een oneWire aan om te communiceren met elk oneWire apparaat.
OneWire oneWire(ONE_WIRE_BUS);

// Verbind onze oneWire referentie aan Dallas Temperature.
DallasTemperature sensors(&oneWire);


//Zet de meters in NexGauge pointer
NexGauge lichtrood = NexGauge(0,1,"z0");
NexGauge lichtblauw = NexGauge(0,2,"z1");
NexGauge lichtwit = NexGauge (0,3,"z2");
NexGauge ph = NexGauge(0,4,"z3");
NexGauge temp = NexGauge(0,4,"z4");


//Zet de plaatjes in NexPicture p0
NexPicture p0 = NexPicture(0,12,"p0");
 

// ----------------------- Constanten -----------------------

const int MaxChannels = 3;       // Maximaal te gebruiken kanaalnummers, indien nodig te wijzigen naar meer of minder
const int MaxPoints = 25;        // Maximaal te gebruiken en in te voeren licht intensiteits punten, indie nodig te wijzigen in meer of minder
     
const int ledPin=16;             //Tx ledPin op 16
int setPic=LOW;                  //Low of High geeft de afdruk van alarmlicht plaatje 2 of 3
unsigned long previousMillis=0;  //Houdt de voorgaande tijd vast
const long interval=1000;        //intervaltijd van één seconde voor wisseling alarmplaatjes
     
// RTC
RTC_DS3231 rtc;

// Time
DateTime CurrentTime;

// ----------------------- Variabelen -----------------------


// ----------------------- Licht -----------------------

// Invul wijze (Uur, Minuut, Intensiteit)
// De verschillen in intensiteit tussen de ingegeven punten zullen gradueel toenemen of afnemen.


Channel Channels[MaxChannels];
Point Points[MaxChannels][MaxPoints];


void InitializeChannels(int channels) {
   
 
   // Channel 0:
   int channelNo = 0;                               // Kanaal 0 wordt in gebruik genomen
   int pin = 9;                                      // Kanaal 0 gebruikt  pin 9 voor de wit-rode balk
   Channels[channelNo] = Channel(pin, MaxPoints, fademode_linear, Points[channelNo]);      // Initialiseerd kanaal en kiest de FadeMode
   Channels[channelNo].AddPoint(8, 30, 0);           // Voeg punt toe (Kunt ook decimale waarden gebruiken van 0 tot 1 als dat de voorkeur heeft)
   Channels[channelNo].AddPoint(9, 0, 76);
   Channels[channelNo].AddPoint(9 , 30, 255);
   Channels[channelNo].AddPoint(18, 30, 255);
  Channels[channelNo].AddPoint(20, 0, 76);
  Channels[channelNo].AddPoint(20, 30, 25);
  Channels[channelNo].AddPoint(21, 0, 10);
  Channels[channelNo].AddPoint(23, 0, 0);
 
 
 
   
// Channel 1:In te voeren
  channelNo = 1;                                // Kanaal 1 wordt in gebruik genomen
  pin = 10;                                     // Kanaal 1 gebruikt pin 10 voor de wit-blauwe balk
  Channels[channelNo] = Channel(pin, MaxPoints, fademode_linear, Points[channelNo]);
  Channels[channelNo].AddPoint(9, 0, 0);
  Channels[channelNo].AddPoint(9, 15, 76);
  Channels[channelNo].AddPoint(9, 30, 255);
  Channels[channelNo].AddPoint(18, 30, 255);
  Channels[channelNo].AddPoint(19, 30, 127);
  Channels[channelNo].AddPoint(20, 30, 51);
  Channels[channelNo].AddPoint(22, 0, 25);
  Channels[channelNo].AddPoint(23, 0, 0);
 
 

  // Channel 2:
  channelNo = 2;                              // Kanaal 2 wordt in gebruik genomen
  pin = 11;                                   // Kanaal 2 gebruikt pin 11 voor de witte balk
  Channels[channelNo] = Channel(pin, MaxPoints, fademode_linear, Points[channelNo]);
  Channels[channelNo].AddPoint(9, 0, 0);
  Channels[channelNo].AddPoint(9, 15, 127);
  Channels[channelNo].AddPoint(9, 30, 255);
  Channels[channelNo].AddPoint(17, 30, 255);
  Channels[channelNo].AddPoint(17, 45, 127);
  Channels[channelNo].AddPoint(18, 00, 10);
  Channels[channelNo].AddPoint(18, 15, 0);

 
 
 
}

// ----------------------- Functies -----------------------
long lastUpdateTime = 0;

// Update licht intensiteit waarden

 void UpdateLights(DateTime CurrentTime)
{
   long now = Seconds(CurrentTime.hour(), CurrentTime.minute(), CurrentTime.second());   // Zet de huidige tijd naar seconden sinds middernacht
   if(now != lastUpdateTime)                                                            // Geeft alleen een update als er een duidelijk waarneembaar verschil in tijd.
   {
      for(int channel = 0; channel < MaxChannels; channel++)                            // Voor elk kanaal
    {   
    analogWrite(Channels[channel].GetPin(), Channels[channel].GetLightIntensityInt(now));   // Krijgt de geupdate licht intensiteit en schrijft de waarde naar de desbetreffende pin
                                                                                          // update wordt uitgevoerd wanneer de waarde ingelezen wordt

   
     

   //Bereken  het percentage output gebasserd op de huidige licht intensiteit.
   
   {
   
   int channel=0;
   float intensityNow=Channels[channel].GetLightIntensityInt(now);
   float maxIntensity=255;
   float a=intensityNow/maxIntensity;
   float currentPercent=a*100;

   //omrekening lichtwaarde naar naar graden voor lichtschaal
   // licht in percentage is linear
   //licht uit (0) angle=-45 degrees
   //licht 100% aan angle=+225degrees
   //range light % is 100
   //range of angle is 270(225+45)
   //float intensity
   float angle = (currentPercent/100.0*270.0)-45.0;
    if (angle<0)        //Als de stand lager is dan 0 en dus negatief wordt.
    {
      angle+=360;      //maak een positief aantal graden voor de meter
    }
   int rood=int(angle);
   lichtrood.setValue(rood);
   }
   
   {   
   int channel=1;
   float intensityNow=Channels[channel].GetLightIntensityInt(now);
   float maxIntensity=255;
   float a=intensityNow/maxIntensity;
   float currentPercent=a*100;
   
   
    //omrekening lichtwaarde naar naar graden voor lichtschaal
   // licht in percentage is linear
   //licht uit (0) angle=-45 degrees
   //licht 100% aan angle=+225degrees
   //range light % is 100
   //range of angle is 270(225+45)
   //float intensity
   float angle = (currentPercent/100.0*270.0)-45.0;
    if (angle<0)        //Als de stand lager is dan 0 en dus negatief wordt.
    {
      angle+=360;      //maak een positief aantal graden voor de meter
    }
   int blauw=int(angle);
   lichtblauw.setValue(blauw);
   }
   
   { 
   int channel=2;
   float intensityNow=Channels[channel].GetLightIntensityInt(now);
   float maxIntensity=255;
   float a=intensityNow/maxIntensity;
   float currentPercent=a*100;

    //omrekening lichtwaarde naar naar graden voor lichtschaal
   // licht in percentage is linear
   //licht uit (0) angle=-45 degrees
   //licht 100% aan angle=+225degrees
   //range light % is 100
   //range of angle is 270(225+45)
   //float intensity
   float angle = (currentPercent/100.0*270.0)-45.0;
    if (angle<0)        //Als de stand lager is dan 0 en dus negatief wordt.
    {
      angle+=360;      //maak een positief aantal graden voor de meter
    }
   int wit=int(angle);
   lichtwit.setValue(wit);
   }     
   }
 }
   lastUpdateTime = now;
}


// Converteerd de uren:minuten naar seconden sinds middernacht

long Seconds(int hours, int minutes, int seconds) {
   return ((long)hours * 60 * 60) + (minutes * 60) + seconds ;
}


// Declareer een button object [page id:2,component id:3, component name: "b2"].

NexButton b2 = NexButton(2, 3, "b2");    //plus uren
NexButton b3 = NexButton(2, 4, "b3");    //plus minuten
NexButton b4 = NexButton(2, 5, "b4");    //plus seconden
NexButton b5 = NexButton(2, 6, "b5");    //min uren
NexButton b6 = NexButton(2, 7, "b6");    //min minuten
NexButton b7 = NexButton(2, 8, "b7");    //min seconden

NexButton b8 = NexButton(2, 9, "b8");    //plus dag
NexButton b9 = NexButton(2, 10, "b9");   //plus maand
NexButton b10 = NexButton(2, 11, "b10"); //plus jaar
NexButton b11 = NexButton(2, 12, "b11"); //min dag
NexButton b12 = NexButton(2, 13, "b12"); //min maand
NexButton b13 = NexButton(2, 14, "b13"); //min jaar



NexText t0 = NexText(2, 15, "t0");      //uren
NexText t1 = NexText(2, 16, "t1");      //minuten
NexText t2 = NexText(2, 17, "t2");      //seconden     
NexText t3 = NexText(2, 18, "t3");      //dag
NexText t4 = NexText(2, 20, "t4");      //maand
NexText t5 = NexText(2, 19, "t5");      //jaar




char buffer[15] = {0};
char buffer_temp[10] = {0};
char buffer_hour[10] = {0};
char buffer_minute[10] = {0};
char buffer_second[10] = {0};
char buffer_year[10] = {0};
char buffer_month[10] = {0};
char buffer_day[10] = {0};
char buffer_week[10] = {0};

uint8_t number = 0;


// Registeer een button object op de touch event lijst. 
 
NexTouch *nex_listen_list[] =
{
   
    &b2,
    &b3,
    &b4,
    &b5,
    &b6,
    &b7,
    &b8,
    &b9,
    &b10,
    &b11,
    &b12,
    &b13,   
    &t0,
    &t1,
    &t2,
    &t3,
    &t4,
    &t5,
    NULL
};

//Button Callback functie
//Bij het loslaten van de knop zal de tekstwaarde met plus of min één wijzigen


void b2PopCallback(void*ptr)
{
 TimeSpan verschil(0, +1, 0, 0);        //dagen, uren, minuten, seconden
 rtc.adjust(rtc.now() +verschil);      //geeft de uren +1
}

void b5PopCallback(void*ptr)
{
 TimeSpan verschil(0, -1, 0, 0);        //dagen, uren, minuten, seconden
 rtc.adjust(rtc.now() +verschil);      //geeft de uren -1
}


void b3PopCallback(void*ptr)
{
  TimeSpan verschil(0, 0, +1, 0);        //dagen, uren, minuten, seconden
 rtc.adjust(rtc.now() +verschil);      //geeft de minuten +1
}

void b6PopCallback(void*ptr)
{
 TimeSpan verschil(0, 0, -1, 0);        //dagen, uren, minuten, seconden
 rtc.adjust(rtc.now() +verschil);      //geeft de minuten -1
}

void b4PopCallback(void*ptr)
{
  TimeSpan verschil(0, 0, 0, +1);        //dagen, uren, minuten, seconden
 rtc.adjust(rtc.now() +verschil);      //geeft de seconden +1
}

void b7PopCallback(void*ptr)
{
 TimeSpan verschil(0, 0, 0, -1);        //dagen, uren, minuten, seconden
 rtc.adjust(rtc.now() +verschil);      //geeft de seconden -1
}

void b8PopCallback(void*ptr)
{
  TimeSpan verschil(+1, 0, 0, 0);        //dagen, uren, minuten, seconden
 rtc.adjust(rtc.now() +verschil);      //geeft de dag +1
}

void b11PopCallback(void*ptr)
{
  TimeSpan verschil(-1, 0, 0, 0);        //dagen, uren, minuten, seconden
 rtc.adjust(rtc.now() +verschil);      //geeft de dag -1
}

void b9PopCallback(void*ptr)
{
  // geeft de maand plus 1
  DateTime now=rtc.now();
  int maand = now.month();
  if(maand < 12)
  {
    maand++;
  }
  else
  {
    maand = 0;
  }
  DateTime nieuweTijd(now.year(), maand, now.day(), now.hour(), now.minute(), now.second());
  rtc.adjust(nieuweTijd);
}

void b12PopCallback(void*ptr)
{
  //geeft de maand -1
  DateTime now=rtc.now();
  int maand = now.month();
  if(maand >1)
  {
    maand--;
  }
  else
  {
    maand = 12;
  }
  DateTime nieuweTijd(now.year(), maand, now.day(), now.hour(), now.minute(), now.second());
  rtc.adjust(nieuweTijd);
}

void b10PopCallback(void*ptr)
{
  //geeft het jaar +1
  DateTime now=rtc.now();
  int jaar = now.year();
  jaar++;
  DateTime nieuweTijd(jaar, now.month(), now.day(), now.hour(), now.minute(), now.second());
  rtc.adjust(nieuweTijd);
}

void b13PopCallback(void*ptr)
{
  //geeft het jaar -1
  DateTime now=rtc.now();
  int jaar = now.year();
  if(jaar > 2000)
   {
    jaar--;
   }
  DateTime nieuweTijd(jaar, now.month(), now.day(), now.hour(), now.minute(), now.second());
  rtc.adjust(nieuweTijd);
 
}





// ----------------------- Setup -----------------------
void setup()
{
  Wire.begin();
 
 
  //Zet de baudrate nodig voor de communicatie met het Nextion scherm
  nexInit();

  //Merkt de losgelaten knop op.
  b2.attachPop(b2PopCallback, &b2);
  b3.attachPop(b3PopCallback, &b3);
  b4.attachPop(b4PopCallback, &b4);
  b5.attachPop(b5PopCallback, &b5);
  b6.attachPop(b6PopCallback, &b6);
  b7.attachPop(b7PopCallback, &b7);
  b8.attachPop(b8PopCallback, &b8);
  b9.attachPop(b9PopCallback, &b9);
  b10.attachPop(b10PopCallback, &b10);
  b11.attachPop(b11PopCallback, &b11);
  b12.attachPop(b12PopCallback, &b12);
  b13.attachPop(b13PopCallback, &b13);
 
 
  //Pin is uitgang
  pinMode(ledPin,OUTPUT);
  //Start de Temperatuurlibrary/sensor
  sensors.begin();
 
 
  Serial.begin(9600); 
  delay(1000); // wacht to de Serial monitor geopend wordt.

  if (! rtc.begin()) {
    Serial.println("Kan de RTC niet vinden");
    while (1);
  }

  if (rtc.lostPower()) {
    Serial.println("RTC zonder stroom geweest, nu op tijd zetten!");
    // De volgende regel zet de RTC op de datum en tijd toen de sketch was gecompileerd.
   // rtc.adjust(DateTime(2017,4,3, 13,19,0));
    // Deze regel zet de RTC op een bepaalde datum en tijd, bijvoorbeeld:
    // Januari 21e, 2014 op 3 uur na de middag zou je zo in moeten voeren:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }


 
   // Initialiseer de kanaal schema's
   InitializeChannels(MaxChannels);
   
   // Clock
   Wire.begin();
   rtc.begin();

 
   rtc.adjust(DateTime(__DATE__, __TIME__));   // Stelt de RTC tijd in op de sketch samenstelling, wordt gebruikt voor één run. De tijd wordt gereset op het moment dat een apparaat wordt gereset!



   

}
   // ----------------------- Loop -----------------------

 
void loop(void)

   
   // Stelt in op de huidige tijd
   {
  CurrentTime = rtc.now();

 sensors.requestTemperatures(); // Zend het commando om de temperatuurmeting te halen.

   float x=sensors.getTempCByIndex(0); //Zet de verkregen waarde in x
 
   //Omrekening waarde naar graden voor de temperatuurschaal
    // Temperature (linear)
    // temperature = 0, angle = -45 degrees
    // temperature = 50, angle = +225 degrees.
    // range of temperature is 50
    // range of angle is 270 (225 + 45)
    //float temperature;
    float angle = (x / 50.0 * 270.0) - 45.0;
     if (angle<0)        //Als de stand lager is dan 0 en dus negatief wordt.
    {
      angle+=360;      //maak een positief aantal graden voor de meter
    }
    int degrees = int(angle);
    temp.setValue(degrees);
    if(degrees>=360)
   {
     degrees=0;
   }
   if (x<22||x>29)
    {
     unsigned long currentMillis=millis();
     if(currentMillis-previousMillis>=interval)
      {
        previousMillis=currentMillis;
      }
       if(setPic==HIGH)
       {
       setPic=LOW;
       p0.setPic(2);
       }
        else
        {
         setPic=HIGH;
         p0.setPic(3);
        }         



//Zet de tijd op mijn Nextion scherm.

DateTime now=rtc.now();
char tijdString[9];
static char vorigeTijd[9];

sprintf(tijdString, "%02d", now.hour());

if (strcmp(tijdString, vorigeTijd) != 0)
  {
   t0.setText(tijdString);                        // update het display met de tijd in uren
   strcpy(vorigeTijd, tijdString);                // bewaar tijd string voor de volgende keer
  }



sprintf(tijdString, "%02d", now.minute());

if (strcmp(tijdString, vorigeTijd) != 0)
  {
   t1.setText(tijdString);                        // update het display met de tijd in minuten
   strcpy(vorigeTijd, tijdString);                // bewaar tijd string voor de volgende keer
  }

 


sprintf(tijdString, "%02d", now.second());

if (strcmp(tijdString, vorigeTijd) != 0)
  {
   t2.setText(tijdString);                        // update het display met de tijd in seconden
   strcpy(vorigeTijd, tijdString);                // bewaar tijd string voor de volgende keer
  }
 



 //Zet de datum op mijn Nextionscherm


sprintf(tijdString, "%02d", now.day());

if (strcmp(tijdString, vorigeTijd) != 0)
  {
   t3.setText(tijdString);                        // update het display met de tijd in dagen
   strcpy(vorigeTijd, tijdString);                // bewaar tijd string voor de volgende keer
  }
 

 sprintf(tijdString, "%02d", now.month());

if (strcmp(tijdString, vorigeTijd) != 0)
  {
   t4.setText(tijdString);                        // update het display met de tijd in maanden
   strcpy(vorigeTijd, tijdString);                // bewaar tijd string voor de volgende keer
  }



 sprintf(tijdString, "%02d", now.year());

if (strcmp(tijdString, vorigeTijd) != 0)
  {
   t5.setText(tijdString);                        // update het display met de tijd in jaren
   strcpy(vorigeTijd, tijdString);                // bewaar tijd string voor de volgende keer
  }

}



//Zodra de desbetreffende knop wordt losgelaten
//wordt het corresponderende component (pagina, id en component naam) opgevraagd.

nexLoop(nex_listen_list);



 
 
   // Update lights
   
   UpdateLights(CurrentTime);
   
}
code2]

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor nicoverduin » 13 Mei 2017, 17:12

Je aanpak betekent nog steeds dat je 3x naar het scherm schrijt terwij het in 1x kan. En je vergelijking klopt niet meer
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 305
Geregistreerd: 23 Okt 2016, 20:29

Re: Wijzigen component ID in Nextion editor

Berichtdoor benvo » 13 Mei 2017, 17:32

Klopt, Nico. Dit deed ik omdat ik anders niet meer op mijn scherm terecht kan én omdat de uren, minuten, seconden etc. apart ingesteld moeten kunnen worden. Wanneer het op één veld staat werkt het niet?
Bovendien wordt er nu alleen maar opnieuw gestuurd als er een wijziging is zoals bij de uren één keer per uur en bij de minuten één keer per minuut etc. Of is dit een foute aanname?
En mijn vergelijking klopt niet meer? Dat is me niet duidelijk wat hiermee bedoelt wordt?


Groet,
Ben.

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor nicoverduin » 13 Mei 2017, 19:00

Je bewaard alles in vorige tijd. Dus na een minut overgang wordt vorige tijd overschreven. Dus wordt alles elke keer overschreven....en als iet niet werkt dan doe je iets niet goed. Waarbij de motivatie voor symptoom bestrijding hard aan het dalen is zoals je hebt gemerkt....
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

VorigeVolgende

Terug naar Overige Software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast