Wijzigen component ID in Nextion editor

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor benvo » 10 Mei 2017, 18:43

@ Koepel.
setDS3231time wordt in mijn sketch, ook niet in de totale , niet gebruikt. Werkt ook niet samen, trouwens, met de library RTClib van Adafruit.

CurrentTime=rtc.now haalt in mijn sketch de verlichtingstijden op. (Timers)

rtc.adjust gebruiken we al in de functies zoals duidelijk wordt in bovenstaande sketch. Of begrijp ik je nu verkeerd?

In ieder geval moet ik herhaald op de buttons klikken om het gevraagde gedaan te krijgen. Er worden dus behoorlijk wat tikken op de knopjes gemist.

Zou het misschien zin hebben een timer/vertraging in te bouwen. Een "blinck without delay" achtig iets? Of toch een andere oplossing?

Groet,
Ben.

Advertisement

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor Koepel » 10 Mei 2017, 20:30

Als er ergens een foutje zit, dan zoek je dat op en je fixt het.

Ter ontspanning hier een digitale klok zonder Nextion: https://www.youtube.com/watch?v=aKju_Va1AY0

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor benvo » 11 Mei 2017, 15:27

@koepel,

Aardig klokje dat wel... :mrgreen:
Mijn sketch krijg ik niet werkend zoals zou moeten. De tijdsinstelling knoppen moeten heel vaak aangeraakt worden voordat ze iets plus 1 of min 1 zetten.
Je merkte op dat jij een tijd update gebruikt in elke functie. Dat begreep en begrijp ik nog niet. In jouw/mijn sketch staat na elke knop "release" als laatste " rtc.adjust(nieuwe tijd);". Is dat jou bedoelde tijdupdate?
Verder heb ik nog gekeken of een vertraging soulaas zou bieden wat niet het geval is. Ook heb ik gezocht in de buffergrootte, die schijnt ook niet uit te maken. Het is me echt duidelijk dat als er een fout is dat die gerepareerd moet worden. De moeilijkheid is dat er geen echte fout te zien is en ik daarom geen zoekrichting kan vinden. Bij jou werkt het wel? Mis ik iets?

Dank voor je reactie.

Groet,
Ben.

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor nicoverduin » 11 Mei 2017, 15:31

Zet je laatste versie maar ff hier
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor benvo » 11 Mei 2017, 17:07

Ik plaats de hele sketch maar even:

cpp code
// ----------------------- 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()
{
// 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);
}


digitalWrite(ledPin,setPic);

}

//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");

//Zet de datum op mijn Nextionscherm

Serial2.print("t3.txt=\""); //t32 is mijn dag tekstbox
if(CurrentTime.day()<10)
{
Serial2.print("0");
}
Serial2.print(CurrentTime.day());
Serial2.print("\"\xFF\xFF\xFF");

Serial2.print("t4.txt=\""); //t4 is mijn maand tekstbox
if(CurrentTime.month()<10)
{
Serial2.print("0");
}
Serial2.print(CurrentTime.month());
Serial2.print("\"\xFF\xFF\xFF");

Serial2.print("t5.txt=\""); //t5 is mijn jaar tekstbox
if(CurrentTime.year()<10)
{
Serial2.print("0");
}
Serial2.print(CurrentTime.year());
Serial2.print("\"\xFF\xFF\xFF");


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

nexLoop(nex_listen_list);





// Update lights

UpdateLights(CurrentTime);

}

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor nicoverduin » 11 Mei 2017, 19:43

Je loop is veeeeeeeeel te groot en uiterst inefficient. Continu met je display updaten geeft weinig tijd om op knoppen te reageren in nexloop.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor benvo » 12 Mei 2017, 12:54

@Nico,
Dank voor je reactie.

Wanneer je zegt dat het continu updaten van mijn display te weinig tijd geeft voor de knoppenreactie is dat een duidelijk argument.
Echter het op een andere plek zetten van het sketchdeel dat zorgt voor het zichtbaar maken van de klok op mijn Nextion werkt niet. Zodra ik dat doe komt er geen informatie meer door.
Dus de conclusie moet zijn dat alleen verplaatsen niet kan, er wordt meer gevraagd. Maar wat?


Groet,
Ben.

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor nicoverduin » 12 Mei 2017, 13:49

Waarom zou je de tijd continu updaten op het scherm? Dat gaat over de serial en dat is traag....
Je kan ook alleen updaten als er wat is veranderd. Dan worden de seconden alleen maar 1 x per seconde bijgewerkt. Laat staan de minuten en uren. Ook had je de tijd in een buffer kunnen zet met sprintf() waarbij de code drastisch wordt verkleind . Dan moet je wel een veld maken voor de uren en minuten en seconden. En 90% van de code verdwijnt in de loop. Als je dan ook nog update als de string echt is veranderd kan je niet snel genoeg tikken op het scherm.
Je kan al die events ook laten werken met een struct voor alle parameters voor de tijd. Die werk je bij als er een knop is ingedrukt. Tevens zet je een boolean aan dat de rtc geupdate moet worden. In de loop is het dan vroeg genoeg om de feitelijke tijd bij te werken. Koepel zal ook wel zoiets gezegd hebben eerder verwacht ik
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor benvo » 12 Mei 2017, 15:01

Hallo allemaal,

Koepel heeft ook een aantal nuttige adviezen geven. Net zoals jijzelf, Nico. Probleem is eigenlijk dat ik vaak ook nog de adviezen van jullie moet decoderen. Dat is niet jullie schuld, dat ligt aan mij, er is erg veel te leren. Tenslotte ben ik nog maar een beperkte tijd bezig met Arduino/Nextion. Daarom zal het nog even duren voor dat ik heb voldaan aan al je opmerkingen, Nico. Zie dat niet als onwil of eigenwijsheid, ik moet het gewoon eerst doorhebben om het te kunnen maken.

printf() is iets waar ik nog (te) weinig van weet. Op het internet vond ik een boekje uit 1993 geschreven door ene JW Welleman die daar iets over schrijft. Daar zal ik eerst eens induiken.

Over dat continu updaten. Daar had ik al een vergelijkbaar gevoel over; een stukje terug vroeg ik al of een timer achtig iets inbouwen nuttig zou kunnen zijn.

Er is werk te doen dus ik ga maar eens aan de slag!

Dank!

Groet,
Ben.

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor Koepel » 12 Mei 2017, 19:41

@benvo Ja, je gevoel was goed. Sorry, dat ik dat verkeerd begreep.

@nicoverduin He, ik heb nog maar mijn eerste project met een Nextion scherm gemaakt. Dus ik weet nog niet wat handig of gangbaar is.

Misschien een paar ideeën:

Mijn loop() draait zo snel mogelijk. Ik gebruik millis() om de tijd op het scherm te updaten iedere seconde. Mijn hoofdscherm heeft geen seconden, dus die doe ik eenmaal per 5 seconden. Voor het gemak doe ik in mijn instelscherm alles (zowel datum en tijd) iedere seconde updaten. Dat gaat goed, maar daarvoor heb ik wel slechts twee velden (datum 2017-05-12 en tijd 20:01:00), dus het zijn slechts twee updates.
Ik update alleen de componenten van de 'page' die op dat moment op het scherm staat. Dus niet van componenten op een andere 'page' :!:
Voor dit project (op een Arduino Uno) heb ik meerdere tabbladen. Ik heb zelfs voor iedere 'page' van het Nextion scherm een eigen tabblad.
Een klein piepje met een luidspreker als ik op een knop op het scherm druk is echt handig, dat raad ik iedereen aan.

Mijn schermpje heb ik ingebouwd en nu is het erg lastig om nog bij de connector van het scherm te kunnen :(

VorigeVolgende

Terug naar Overige Software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 8 gasten