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 » 28 Apr 2017, 14:11

Waar gaat het mis?

Misschien begin ik te begrijpen waar het mis gaat en welke kant jij me op probeert te duwen?
De rtc zet m'n klok in mijn oorspronkelijke hoofdsketch. Nu voeg ik een andere sketch in waar de klok middels Wire/I2C ingesteld wordt. Eigenlijk dus dat wat jij, Nico, al de hele tijd probeerde duidelijk te maken maar wat ik gewoon niet begreep. Die twee manieren kunnen niet samen. Dus moet ik een weg vinden waarop één manier de klok aangestuurd wordt. Het best zou ik daar de RTClib library voor gebruiken?
Denk ik nu in de goede richting?

Groet,
Ben.

Advertisement

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor nicoverduin » 28 Apr 2017, 14:15

Of dit de oplossing is weet ik niet maar ik zou het in ieder geval de nek om draaien
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 » 29 Apr 2017, 15:03

Hmmm, wat bedoel je met, "nek omdraaien"?

Stoppen? Dat kan altijd nog. Op z'n minst moet ik een klok hebben op mijn Nextion scherm. Al of niet met instellingen, dat zien we dan wel weer...

Groet,
Ben.

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor benvo » 30 Apr 2017, 13:46

Graag vertel ik nog even de afloop;

Met uiteraard dank weer voor alle reacties!

Het blijkt dat het probleem zit in het feit dat er twee library's zijn. Beide met dezelfde naam: RTClib. Een, die ik gebruik in mijn hoofdsketch van Adafruit en een andere, uit de kloksketch, waar de afkomst onduidelijk van is.
Ik heb nu wel een werkende klok op mijn Nextion scherm, helaas geen mogelijkheid tot instellen.

Daar ga ik het dan maar mee doen.

Groet,
Ben.

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor Koepel » 30 Apr 2017, 16:22

Dan alleen nog maar de Adafruit RTClib gebruiken.
Ik zie dat die een '+' en '-' operator heeft voor DateTime. Je kunt er dus een seconde of een uur of een dag bij optellen of afhalen, zonder zelf iets te gaan berekenen.
Wanneer je hier iets naar beneden scrollt, dan zie hoe het gebruikt wordt: https://learn.adafruit.com/ds1307-real-time-clock-breakout-board-kit/understanding-the-code.
Je kunt niet in je sketch ook nog zelf naar de RTC chip gaan schrijven of lezen. Dus dat allemaal verwijderen, en alleen nog de functies van de Adafruit RTClib gaan gebruiken.

(Wat ik hier schrijf is trouwens precies hetzelfde als wat nico al een paar keer schreef)

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor benvo » 30 Apr 2017, 18:54

Koepel schreef:Dan alleen nog maar de Adafruit RTClib gebruiken.
Ik zie dat die een '+' en '-' operator heeft voor DateTime. Je kunt er dus een seconde of een uur of een dag bij optellen of afhalen, zonder zelf iets te gaan berekenen.
Wanneer je hier iets naar beneden scrollt, dan zie hoe het gebruikt wordt: https://learn.adafruit.com/ds1307-real-time-clock-breakout-board-kit/understanding-the-code.
Je kunt niet in je sketch ook nog zelf naar de RTC chip gaan schrijven of lezen. Dus dat allemaal verwijderen, en alleen nog de functies van de Adafruit RTClib gaan gebruiken.

(Wat ik hier schrijf is trouwens precies hetzelfde als wat nico al een paar keer schreef)



Eerst, ik schreef dit al vaker, wat voor de "vakmensen", zoals Nico en jij, een klip en klaar antwoord is, is dit nog lang niet altijd duidelijk voor de "leek" waar ik mijzelf onder moet scharen. Dit is dus geen onwil, integendeel, maar vaak begrijp ik gewoon niet wat jullie precies bedoelen. Het feit dat je op een afstand zit en niet meteen kunt vragen wat er precies bedoelt wordt maakt het ook niet gemakkelijker.

Nu is dat ook weer zo, je antwoord is, voor mij, niet duidelijk. Daarom maar even jou reactie uiteen peuteren en stuk voor stuk duidelijk krijgen als het mag?
Precies deze code gebruik ik nu. Dit dan met een LCD scherm. Wat er dus zou moeten gebeuren is dat ik de tijd/data uitkomsten op mijn Nextion kan zetten?
De plus en min operator voor DataTime zie ik niet?
Omdat ik niet vanuit de sketch kan lezen of schrijven kan ik dus ook niet instellen?

Groet,
Ben.

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor benvo » 03 Mei 2017, 18:12

Ik heb, met hulp, nu een werkende klok op mijn Nextion scherm met mijn eigen (Adafruit-)RTClib library.
Nu wordt de volgende stap om van deze klok een instelbare klok te maken...
Deze toevoeging werkt perfect.

[code2=cpp][/
Code: Alles selecteren

//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");
 Serial2.print("t4.txt=\"");  //Tekstbox 4 wordt gebruikt voor, van links naar rechts, datum-maand-jaar.
 Serial2.print(CurrentTime.day());
 Serial2.print("-");
 Serial2.print(CurrentTime.month());
 Serial2.print("-");
 Serial2.print(CurrentTime.year());
 Serial2.print("\"\xFF\xFF\xFF");

code2]

Dank jullie wel voor je reacties!

Groet,
Ben.

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor benvo » 05 Mei 2017, 18:11

Koepel schreef:Dan alleen nog maar de Adafruit RTClib gebruiken.
Ik zie dat die een '+' en '-' operator heeft voor DateTime. Je kunt er dus een seconde of een uur of een dag bij optellen of afhalen, zonder zelf iets te gaan berekenen.
Wanneer je hier iets naar beneden scrollt, dan zie hoe het gebruikt wordt: https://learn.adafruit.com/ds1307-real-time-clock-breakout-board-kit/understanding-the-code.
Je kunt niet in je sketch ook nog zelf naar de RTC chip gaan schrijven of lezen. Dus dat allemaal verwijderen, en alleen nog de functies van de Adafruit RTClib gaan gebruiken.

(Wat ik hier schrijf is trouwens precies hetzelfde als wat nico al een paar keer schreef)


Zou je me nog eens willen uitleggen wat je precies bedoelt met de '+'en '-' operators voor DateTime. Mogelijk is hier iets uit te halen om mijn klok instelbaar te krijgen.

Dank alvast,
Groet,
Ben.

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor Koepel » 05 Mei 2017, 20:32

Of dat te maken heeft met de klok instellen, dat weet ik niet.
Ik zag die '+' en '-' operator, en er blijkt een 'TimeSpan' te zijn waarmee vooruit en achteruit in de tijd gegaan kan worden.

Bij de voorbeelden zit ook 'softrtc': Bestand / Voorbeelden / RTClib / softrtc
https://github.com/adafruit/RTClib/blob/master/examples/softrtc/softrtc.ino
Daar zie je een 'future' tijd. Die gaat uit van now.unixtime() en telt daar wat bij op. Dat kan natuurlijk ook.

Ik heb die 'TimeSpan' eens uitgeprobeerd.

cpp code
// Test sketch for Adafruit RTClib with '+' and '-'
// Arduino IDE 1.8.2 with Arduino Uno
// May 2017
// Started with 'softrtc' library as supplied with the RTClib.


#include <Wire.h> // this #include still required because the RTClib depends on it
#include <RTClib.h> // Adafruit RTClib

RTC_Millis rtc;

unsigned long previousMillis;
boolean forceUpdate;


void setup ()
{
// Following line sets the RTC to the date & time this sketch was compiled
rtc.begin( DateTime(F( __DATE__), F(__TIME__)));

Serial.begin( 9600);
Serial.println();
Serial.println(F( "Adafruit RTClib test sketch"));
Serial.println(F( "Commands:"));
Serial.println(F( " s not working"));
Serial.println(F( " m add a minute"));
Serial.println(F( " M substract a minute"));
Serial.println(F( " h add an hour"));
Serial.println(F( " H substract an hour"));
Serial.println(F( " d add a day"));
Serial.println(F( " D substract a day"));
Serial.println(F( " a add a month"));
Serial.println(F( " A substract a month"));
Serial.println(F( " y add a year"));
Serial.println(F( " Y substract a year"));

previousMillis = millis();
}


void loop ()
{
unsigned long currentMillis = millis();
forceUpdate = false;

// ------------------------------------
// check for commands
// ------------------------------------
if( Serial.available() > 0)
{
int inChar = Serial.read();
if( isprint( inChar))
{
switch( inChar)
{
case 's':
{ // create local scope in switch-case for variables
// Not working.
// When the seconds are reset to zero, the rtc.adjust advances one minute.
// I have not investigated the problem yet.
}
case 'm':
{ // create local scope in switch-case for variables
// Bij het verhogen van de minuten gaan ook de uren mee
TimeSpan verschil( 0, 0, +1, 0); // days, hours, minutes, seconds
rtc.adjust( rtc.now() + verschil); // set new time with difference
}
break;
case 'M':
{ // create local scope in switch-case for variables
// Bij het verlagen van de minuten gaan ook de uren mee
TimeSpan verschil( 0, 0, -1, 0); // days, hours, minutes, seconds
rtc.adjust( rtc.now() + verschil); // set new time with difference
}
break;
case 'h':
{ // create local scope in switch-case for variables
// Bij het verhogen van de uren gaan ook de dagen mee
TimeSpan verschil( 0, +1, 0, 0); // days, hours, minutes, seconds
rtc.adjust( rtc.now() + verschil); // set new time with difference
}
break;
case 'H':
{ // create local scope in switch-case for variables
// Bij het verlagen van de uren gaan ook de dagen mee
TimeSpan verschil( 0, -1, 0, 0); // days, hours, minutes, seconds
rtc.adjust( rtc.now() + verschil); // set new time with difference
}
break;
case 'd':
{ // create local scope in switch-case for variables
TimeSpan verschil( +1, 0, 0, 0); // days, hours, minutes, seconds
rtc.adjust( rtc.now() + verschil); // set new time with difference
}
break;
case 'D':
{ // create local scope in switch-case for variables
TimeSpan verschil( -1, 0, 0, 0); // days, hours, minutes, seconds
rtc.adjust( rtc.now() + verschil); // set new time with difference
}
break;
case 'a':
{ // create local scope in switch-case for variables
// Het verhogen van de maand verandert niet het jaar
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);
}
break;
case 'A':
{ // create local scope in switch-case for variables
// Het verlagen van de maand verandert niet het jaar
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);
}
break;
case 'y':
{ // create local scope in switch-case for variables
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);
}
break;
case 'Y':
{ // create local scope in switch-case for variables
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);
}
break;
}

forceUpdate = true;
}
}

// ------------------------------------
// Print date and time every 5 seconds
// ------------------------------------
if( currentMillis - previousMillis >= 5000 || forceUpdate)
{
previousMillis = currentMillis;


DateTime now = rtc.now();

Serial.print( now.year(), DEC);
Serial.print( "-");
if( now.month() < 10)
Serial.print( "0");
Serial.print( now.month(), DEC);
Serial.print( "-");
if( now.day() < 10)
Serial.print( "0");
Serial.print( now.day(), DEC);
Serial.print( ", ");
if( now.hour() < 10)
Serial.print( "0");
Serial.print( now.hour(), DEC);
Serial.print( ":");
if( now.minute() < 10)
Serial.print( "0");
Serial.print( now.minute(), DEC);
Serial.print( ":");
if( now.second() < 10)
Serial.print( "0");
Serial.print( now.second(), DEC);
Serial.println();
}
}

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

Re: Wijzigen component ID in Nextion editor

Berichtdoor benvo » 06 Mei 2017, 16:59

Dank je wel, Koepel!

Zelf kreeg ik dit, een sketch waarin je een tijd kan invoeren, bijvoorbeeld Tuu minmin secsec. (u=uren, min = minuten sec= seconden) Je kan met spaties invoeren maar T18&24&36 werkt ook. Je krijgt dan de tijd op je Serial Monitor te staan. Maar denkelijk kan ik daar niet zoveel mee. Ik zal je jouw bijdrage eens goed bezien. Je had wellicht al opgemerkt dat ik nu de klok op het scherm heb staan n.a.v. je eerdere aanwijzing op de site van Adafruit. De klok werkt nu prima. Er schijnt ook nog een mogelijkheid te bestaan om de ingebouwde klok op de Nextion Enhanced modellen te synchroniseren met de DS 3231 op mijn Arduino. Wie weet zitten daar ook nog mogelijkheden. Want het probleem was n.l. dat ik niets heb aan twee klokken die bovendien niet gelijk lopen. Informatie over de Nextion is soms erg moeizaam verkrijgbaar maar komen zál ik er!


Met die code's heb ik nog steeds ruzie. Op select a Syntax klik ik c++ aan en dan de Code ga er vervolgens precies tussen staan maar het staat er nog steeds niet op zoals het hoort. Soms werkt het, vaak niet...

cpp code
uint16_t year;
uint8_t month;
uint8_t day;
uint8_t hour;
uint8_t min;
uint8_t second;
uint32_t setMillis;
bool setTime = true;
bool runTime = false;


void printTime() {

second++;

if (second == 60) {
min++;
second = 0;
}
if (min == 60) {
hour++;
min = 0;
}
if (hour == 24) {
hour = 0;
}
Serial.print("Arduino Time is: ");
if (hour < 10) Serial.print("0");
Serial.print(hour);
Serial.print(":");
if (min < 10) Serial.print("0");
Serial.print(min);
Serial.print(":");
if (second < 10) Serial.print("0");
Serial.println(second);

}


void getParameters() {

while (Serial.available()) {

char c = Serial.read();
if (c == 'T') {
//year = Serial.parseInt();
//month = Serial.parseInt();
//day = Serial.parseInt();
hour = Serial.parseInt();
min = Serial.parseInt();
second = Serial.parseInt();
//rtc.adjust(DateTime(year, month, day, hour, min, sec));//Here's a clue :)
setTime = false;
runTime = true;
}
}
}
void setup() {
Serial.begin(115200);
Serial.print("Simple Clock Example\n\n");
}


void loop() {

if (setTime) getParameters();

if (runTime) {

if (millis() - setMillis > 999) {
printTime();
setMillis = millis();
}
}
}


Dank nogmaals voor je reactie!
Groet,
Ben.

VorigeVolgende

Terug naar Overige Software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten