Nextion Scherm temperatuur tonen

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

Re: Nextion Scherm temperatuur tonen

Berichtdoor nicoverduin » 08 Dec 2016, 14:32

Op de Mega gebruikt ie Serial2 voor de Nextion. Zelf bouw ik gelijk Software Serial in als volgt:
Vervang de NexConfig.h in de Nextion library voor deze inhoud
cpp code
/**
* @file NexConfig.h
*
* Options for user can be found here.
*
* @author Wu Pengfei (email:<pengfei.wu@itead.cc>)
* @date 2015/8/13
* @copyright
* Copyright (C) 2014-2015 ITEAD Intelligent Systems Co., Ltd. \n
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*/
#ifndef __NEXCONFIG_H__
#define __NEXCONFIG_H__

#include "SoftwareSerial.h"
extern SoftwareSerial HMISerial;

/**
* @addtogroup Configuration
* @{
*/

/**
* Define DEBUG_SERIAL_ENABLE to enable debug serial.
* Comment it to disable debug serial.
*/
#define DEBUG_SERIAL_ENABLE

/**
* Define dbSerial for the output of debug messages.
*/
#define dbSerial Serial

/**
* Define nexSerial for communicate with Nextion touch panel.
*/
#define nexSerial HMISerial


#ifdef DEBUG_SERIAL_ENABLE
#define dbSerialPrint(a) dbSerial.print(a)
#define dbSerialPrintln(a) dbSerial.println(a)
#define dbSerialBegin(a) dbSerial.begin(a)
#else
#define dbSerialPrint(a) do{}while(0)
#define dbSerialPrintln(a) do{}while(0)
#define dbSerialBegin(a) do{}while(0)
#endif

/**
* @}
*/

#endif /* #ifndef __NEXCONFIG_H__ */

En de sketch verander ik iets boven in

cpp code
/**
* voeg dit toe voor Software Serial
*/
#include "SoftwareSerial.h"
SoftwareSerial HMISerial (10, 11); // RX, TX


#include "Nextion.h"

Zodat ik het gewoon op een UNO kan draaien.

En behoudens het probleem van het plaatje, werkt ie als een tierelier. Overigens de fout van dat plaatje zit er al veel langer in. In versie 0.35 heb ik hetzelfde probleem.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Advertisement

Berichten: 118
Geregistreerd: 28 Dec 2014, 23:20
Woonplaats: Bilzen BE

Re: Nextion Scherm temperatuur tonen

Berichtdoor Dries » 08 Dec 2016, 16:14

ok weeral bedankt Nico, hier ben ik weer wat mee. ik hou je op de hoogte

Berichten: 118
Geregistreerd: 28 Dec 2014, 23:20
Woonplaats: Bilzen BE

Re: Nextion Scherm temperatuur tonen

Berichtdoor Dries » 08 Dec 2016, 23:07

Nu ben ik met de UNO begonnen en heb de bibliotheek aangepast, het bizarre is dat het voorbeeld CompGauge nu wel werkt, ik begrijp er niets meer van maar goed. Nu nog een temperatuursensor aansluiten en deze waarden op een plaatje krijgen dan ben ik vertrokken :D. kan je me daar nog in begeleiden?

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

Re: Nextion Scherm temperatuur tonen

Berichtdoor nicoverduin » 09 Dec 2016, 09:47

Eerst zelf proberen...... In het gauge voorbeeld staat hoe je een gauge kan bijwerken.... En de waarde krijgen voor een temperatuur sensor daar zijn voorbeelden te over.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 118
Geregistreerd: 28 Dec 2014, 23:20
Woonplaats: Bilzen BE

Re: Nextion Scherm temperatuur tonen

Berichtdoor Dries » 10 Dec 2016, 00:04

tot zover gekomen ondertussen:

#include "SoftwareSerial.h"
SoftwareSerial HMISerial (10, 11); // RX, TX
#include <Nextion.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <string.h>
#include "Arduino.h"

#define ONE_WIRE_BUS 4
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
NexText temperature = NexText(0, 4, "t1");
NexGauge pointer = NexGauge(0, 3, "z0");

uint32_t number = 0;
uint16_t sensor_pin = 0;
uint16_t sensor_value = 0;
unsigned long update = 1;
char buffer_temp[10] = {0};
char buffer_temperature[10] = {0};
char buffer[10] = {0};


void setup() {
nexInit();
dbSerialPrintln("setup done");
pinMode(7, OUTPUT);
digitalWrite(7, HIGH);
Serial.begin(9600);
sensors.begin();
}

void loop() {
// put your main code here, to run repeatedly:
if (millis() > update+ 500)
{
temperatureDisplay();
update = millis();
}
}


void temperatureDisplay(void)
{
sensors.requestTemperatures(); // Send the command to get temperatures
float celsius = sensors.getTempCByIndex(0);
number = ((float)celsius / 60) * 180 + 30;
pointer.setValue(celsius);
memset(buffer, 0, sizeof(buffer));
itoa(celsius, buffer, 10);
temperature.setText(buffer);
Serial.println(celsius);
}

de temperatuur verschijnt in het "t1" venstertje en ik zie de naald een heel klein beetje verschuiven,te veel te klein om een schaal te kunnen maken van bv 20°C tot 30°C. als dit nog opgelost geraakt dan ben ik er :D

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

Re: Nextion Scherm temperatuur tonen

Berichtdoor nicoverduin » 10 Dec 2016, 08:27

De waarde die je naar de naald stuurt met een factor x vermenigvuldigen
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 118
Geregistreerd: 28 Dec 2014, 23:20
Woonplaats: Bilzen BE

Re: Nextion Scherm temperatuur tonen

Berichtdoor Dries » 10 Dec 2016, 16:02

ik heb de float waarde vermenigvuldigd met 10 en nu werkt het wel (eventjes logisch nadenken want het totale bereik is natuurlijk 360°).
Kan je mij uitleggen wat er in de functie void temperatureDisplay(void) allemaal staat, eerlijk gezegd heb ik deze code van het internet geplukt in de hoop dat het zou werken maar ik heb totaal geen benul wat er eigenlijk staat :oops: .

Ook heb ik nu in het tekstvakje "t1" bv 205 staan, kan ik dit veranderen naar 20.5?

ik begin er stilletjes grip op te krijgen maar ik heb nog een héél lange weg af te leggen, maar zoals je zelf zei, dit wereldje blijft niet stil staan :D

Berichten: 4
Geregistreerd: 12 Jan 2017, 17:26

Re: Nextion Scherm temperatuur tonen

Berichtdoor johnny_boy_1984 » 12 Jan 2017, 17:38

Hallo Dries,

Voor mijn campercomputer heb ik ook bovenstaande code gebruikt en werkend gekregen (mega en nextion 3.5).
Ik krijg nu bijv 20 te zien, ben je er al achter hoe je bijv. 20.4 te zien krijgt?

Berichten: 118
Geregistreerd: 28 Dec 2014, 23:20
Woonplaats: Bilzen BE

Re: Nextion Scherm temperatuur tonen

Berichtdoor Dries » 13 Jan 2017, 17:12

Dag Johny,

ik dacht aan een waarde te mappen tussen 20 en 30, dus van 0 tot 100% en dan met deze waarde iets gaan doen, terug delen door 100 en dan optellen bijvoorbeeld.

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

Re: Nextion Scherm temperatuur tonen

Berichtdoor nicoverduin » 13 Jan 2017, 17:36

Ik zou eens naar de dtostrf() functie kijken.....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

VorigeVolgende

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 10 gasten