Hallo zusammen...
Hat jemand Erfahrung mit einem erfahrung mit einem Nextion Touchpanel.
Habe eine Oberfläche konstruiert und wollte diese auf mein Panel laden, leider bekomme ich über die USB Schnittstelle keine Verbindung.
Hat jemand eine Idee?
Hallo zusammen...
Hat jemand Erfahrung mit einem erfahrung mit einem Nextion Touchpanel.
Habe eine Oberfläche konstruiert und wollte diese auf mein Panel laden, leider bekomme ich über die USB Schnittstelle keine Verbindung.
Hat jemand eine Idee?
Ich mache es über die SD Karte dies ist erheblich schneller sieht man auch in den Videos.
Gruß
DerDani
Danke für die schnelle Anwort, hast du evtl gleich eine Gute empfehlung für ein Tutorial.
Da es noch nicht ganz soviel gibt habe ich einfach auf Youtube nach Nextion gesucht. Da ich selber SPS-Prgrammier bis kam mir das HMI Erstellen auch ganz vertraut vor. Es ist sehr nah dran am "Professionellen" erstellen der HMI Systeme von Siemens und Kinco.
Schau mal in diesem Channel nach Nextion der erklärt das ziemlich schön.
Gruß
DerDani
Hallo zusammen
Bin immer noch an meinen Touchpanelproblem, konnte zwar nun die HMI programmierung machen jedoch habe ich irgendwie keine Ahnung wie ich die Kommunikation mit den Ardunino uno Herstellen soll.
Hab auf Github ein paar examples gefunden jedoch sind diese auch nicht sehr hilfreich da sie nicht funktionieren, oder mindesten bei mir nicht.
kann jemand Hilfestellung leiste?
Gruss
Philipp
So hab mal etwas weiter gesucht habe nun folgendne Code zusammen gefügt.
ganz verstehe ich ihn ganz ehrlich nicht, was mir vorallem nicht klar ist wie kann ich die verschiedenen Button auf dem Panel erkennen.
Dafür müsst man ja die ID oder den Namen des Button auf den Arduino erhalten.
Vielleicht noch zur info, für mich ist es ausreichend wenn ich nur lesen kann von Panel her, sprich das Board nur empfangen.[/code]
#include <SoftwareSerial.h>
const byte rxPin = 2;
const byte txPin = 3;
// set up a new serial object
SoftwareSerial mySerial (rxPin, txPin);
// include the SoftwareSerial library so you can use its functions:
#include <SoftwareSerial.h>
#define rxPin 2
#define txPin 3
void setup() {
// define pin modes for tx, rx:
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
}
void loop()
{
char c = mySerial.read();
}
Hier hat ein Händler 2 Tutorials zum Nextion erstellt:
Ich werde meine dort kaufen, wenn ich soweit bin. Sowas muss honoriert werden.
Gruß Tommy
Sieht gut aus diese Anleitung, werde diese morgen mal durcharbeiten.
Besten Dank für die Hilfe.
Hallo zusammen
Habe die Anleitung für das Nextion Panel nun durchgearbeite, jedoch bin ich noch nicht ganz schlau gerworden wie ich nun den Eingabebefehl weiter verarbeiten kann.
Ich möchte diesen Code nun als Eingabe befehl nutzen, z.B in einnem If Befehl, sprich sobald ich den gewünschten Butten betätige beginnt die gewünschte Funktion zu laufen.
#include "Nextion.h" // Import der Nextion-Header Datei
NexSlider vodkaw = NexSlider(0,1, "vodkaw"); // 0=Index Objekt-ID = 1 Objektname
NexTouch *nex_listen_list[] = // In der nächsten Zeile wird die Adresse des Objekts eingetragen
{
&vodkaw,
NULL
};
uint32_t attenuation;
void vodkawPopCallback(void *ptr) // Callback-Funktion
{
vodkaw.getValue(&attenuation); //Wert wird in der Variable Attenuation gespeichert
}
void setup(void) // Konfiguration zwischen Arduino und Nextin Panel
{
nexInit();
vodkaw.attachPop(vodkawPopCallback); // Pop-Event (Ergebnis wird beim loslassen des Buttion ausgelöst
}
void loop (void)
{
nexLoop(nex_listen_list); //Abfragen des Wertes
delay(1000);
}
Habe den Code noch etwas angepasst, und glaube auch eine Schritt weiter gekommen.
Denke ich muss dies mit einer Status abfrage, abfragen und dan so weiterfahren.
Irgende welche ander Ideen?
#include "Nextion.h" // Import der Nextion-Header Datei
NexButton vodkaw = NexButton(0, 3, "vodkaw"); // 0=Index Objekt-ID = 1 Objektname
char buffer[100] = {0};
NexTouch *nex_listen_list[] = // In der nächsten Zeile wird die Adresse des Objekts eingetragen
{
&vodkaw,
NULL
};
void vodkawPopCallback(void *ptr) // Callback-Funktion
{
uint16_t len;
uint16_t number;
NexButton *btn = (NexButton *)ptr;
dbSerialPrintln("vodkawPopCallback");
dbSerialPrint("ptr=");
dbSerialPrintln((uint32_t)ptr);
memset(buffer, 0, sizeof(buffer));
/* Get the text value of button component [the value is string type]. */
btn->getText(buffer, sizeof(buffer));
number = atoi(buffer);
number += 1;
memset(buffer, 0, sizeof(buffer));
itoa(number, buffer, 10);
/* Set the text value of button component [the value is string type]. */
btn->setText(buffer);
}
void setup(void) // Konfiguration zwischen Arduino und Nextin Panel
{
Serial.begin(9600);
nexInit();
vodkaw.attachPop(vodkawPopCallback, &vodkaw); // Pop-Event (Ergebnis wird beim loslassen des Buttion ausgelöst
dbSerialPrintln("setup done");
}
void loop (void)
{
nexLoop(nex_listen_list); //Abfragen des Wertes
delay(1000);
}
Hat irgend jemand ein Beispiel Code für ein Nextion Panel.
Ich möchte mit einem Button vom Panel her einen IF befehl auslösen.
Bin nun schon längere Zeit auf der Suche nach einem Exampel das ich verwenden kann jedoch habe ich noch nichts schlaues gefunden und muss bis Donnerstag mein Projekt zum laufen bringen.
Momentan bin ich mit folgendem Code am arbeiten, weiss jedoch nicht wie ich die befehle in meinen Code einbinden soll.
#include "Nextion.h"
// Declare a text object [page id:0,component id:2, component name: "textNumber"].
NexText t0 = NexText(0, 2, "t0");
// Declare a button object [page id:0,component id:3, component name: "buttonPlus"].
NexButton b0 = NexButton(0, 3, "b0");
// Declare a button object [page id:0,component id:4, component name: "buttonMinus"].
NexButton b1 = NexButton(0, 4, "b1");
int number = 50;
char buffer[10] = {0};
/*
Register object textNumber, buttonPlus, buttonMinus, to the touch event list.
*/
NexTouch *nex_listen_list[] =
{
&t0,
&b0,
&b1,
NULL
};
/*
Button0 component pop callback function.
In this example,the value of the text component will plus one every time when button0 is released.
*/
void b0PopCallback(void *ptr)
{
dbSerialPrintln("b0PopCallback");
if (number < 100) number += 1;
memset(buffer, 0, sizeof(buffer)); // clear buffer
itoa(number, buffer, 10);
t0.setText(buffer);
}
/*
Button1 component push callback function.
In this example,the value of the text component will minus one every time when button1 is pressed.
*/
void b1PushCallback(void *ptr)
{
dbSerialPrintln("b11PushCallback");
if (number > 0) number -= 1;
memset(buffer, 0, sizeof(buffer)); // clear buffer
itoa(number, buffer, 10);
t0.setText(buffer);
}
void setup(void)
{
/* Set the baudrate which is for debug and communicate with Nextion screen. */
nexInit();
Serial.begin(9600);
/* Register the pop event callback function of the current button0 component. */
b0.attachPop(b0PopCallback);
/* Register the pop event callback function of the current button1 component. */
b1.attachPush(b1PushCallback);
dbSerialPrintln("Setup done");
}
void loop(void)
{
nexLoop(nex_listen_list);
}
Hallo,
sind die t0, b0 und b1 die "Befehle" die der Touchscreen liefert?
Dann mußt du sie als String einlesen und behandeln und mit "strcmp" vergleichen. Einfaches == wie mit Zahlen funktioniert nicht.
Bsp. wenn auf refresh verglichen werden soll
if (strncmp(_serialBuffer1, "refresh", 7) == 0) { // startet neue Messung und gibt diese Daten aus
...
sinnvolle Dinge machen
...
}
daraus machst du dann
if (strncmp(_serialBuffer1, "b1", 2) == 0) { // Button auswerten ...
...
sinnvolle Dinge machen
...
}
Eigentlich benötige ich nur b0 und b1, t0 ist nur noch vom Beispiel überig geblieben.
ich möchte einfach gerne die Steuerung Starten wenn z.b. b1 gedrückt wurden, sprich einmal kurz 1 wurde.
Gruss
Philipp
Sry brauch deine Hilfe nochmals, irgendwie habe ich das ganze mit dem String noch nicht so ganz begriffen, sry meine erstes Programmierprojekt überhaupt.
#include "Nextion.h"
// Declare a text object [page id:0,component id:2, component name: "textNumber"].
NexText t0 = NexText(0, 2, "t0");
// Declare a button object [page id:0,component id:3, component name: "buttonPlus"].
NexButton b0 = NexButton(0, 3, "b0");
// Declare a button object [page id:0,component id:4, component name: "buttonMinus"].
NexButton b1 = NexButton(0, 4, "b1");
int number = 50;
char buffer[1] = {0};
/*
Register object textNumber, buttonPlus, buttonMinus, to the touch event list.
*/
NexTouch *nex_listen_list[] =
{
&b0,
&b1,
NULL
};
/*
Button0 component pop callback function.
In this example,the value of the text component will plus one every time when button0 is released.
*/
void b0PopCallback(void *ptr)
{
dbSerialPrintln("b0PopCallback");
if (strncmp();
memset(buffer, 0, sizeof(buffer)); // clear buffer
itoa(number, buffer, 1);
}
/*
Button1 component push callback function.
In this example,the value of the text component will minus one every time when button1 is pressed.
*/
void b1PopCallback(void *ptr)
{
dbSerialPrintln("b11PopCallback");
if (number > 0) number -= 1;
memset(buffer, 0, sizeof(buffer)); // clear buffer
itoa(number, buffer, 1);
}
void setup(void)
{
/* Set the baudrate which is for debug and communicate with Nextion screen. */
nexInit();
Serial.begin(9600);
/* Register the pop event callback function of the current button0 component. */
b0.attachPop(b0PopCallback);
/* Register the pop event callback function of the current button1 component. */
b1.attachPush(b1PushCallback);
dbSerialPrintln("Setup done");
}
void loop(void)
{
nexLoop(nex_listen_list);
}
Hallo,
ich tue mich schwer mit dem Code lesen. Scheinbar funktioniert das auch anders wie ich dachte.
Liefert das Display die Strings, b0, b1, t0 usw.?
Oder liefert das Display b0 = 0 oder b0 = 1 usw. ?
Wie sieht denn eine original unveränderte PopCallback Funktion aus?
Weil es wird ein Zeiger übergeben den ich nirgends in der Funktion sehe zur Verarbeitung.
Ich habe weder das Display noch die Library. Ich sehe nur das was du zeigst oder ich rate.
Mir ist nicht ganz klar, an welcher Stelle es bei dir hakt. Hast du dir die Beispielprojekte auf der Itead-Seite mal angeschaut und falls ja, hast du die zum Laufen bekommen?
Ansonsten dich vielleicht erst einmal damit beschäftigen, hier findest du einiges hierzu http://support.iteadstudio.com/support/discussions/topics/1000065323
Da der UNO nur eine serielle Schnittstelle hat, ist ein Debugging vermutlich nicht so einfach möglich. Standardmäßig ist die Library für einen Mega2560 eingestellt und muss ggf. noch angepasst werden (nachzulesen unter "3.Nextion Arduino Library:A Basic Introduction").
Zu deinem Code:
Die beiden PopCallback-Funktionen von b0 und b1 sollten aufgerufen werden, sofern du am Display die entsprechenden Buttons drückst. Wichtig hierbei ist, dass du die richtige ID ausgewählt hast und diese auch gesendet wird. Die ID wird über den Nextion-Editor vergeben, zusätzlich musst du auch noch das Senden aktivieren (hierzu muss das Häckchen "Send Component ID" im Editor unter "Touch Press Event" oder "Touch Release Event" aktiviert werden).
Hoffe das hilft weiter.
Nach mir hat Display einen eigenen Prozessor und über gibt nur 0 oder 1 auf die entsprechende funktionen
z.B. b0=0 oder b0= 1
Sprich sowie ich den Code verstehe, die libary sieh so aus;
/**
* @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__
/**
* @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 Serial
#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__ */
sry spexx deine nachricht habe ich zu spät glesen, habe mir ein example angeschaut und diese funktion, funktioniern, sprich ich kann mit zwei butten das Textfeld mit plus oder minus auf dem nextion verändern.
Sprich ein anzeige veränder funktionier, mein problem ist nur das ich diese button gene in meine Steuerung einlesen möchte um so den restelichen Code zu starten.
Gruss
Philipp
So ganz klar ist es mir immer noch nicht, wo dein Problem liegt. Um zwei Buttons auszuwerten, sollte folgender Code bereits ausreichen:
#include "Nextion.h"
void b0PopCallback(void *ptr);
void b1PopCallback(void *ptr);
NexButton b0 = NexButton(0, 2, "b0"); // ID anpassen!!!
NexButton b1 = NexButton(0, 3, "b1"); // ID anpassen!!!
// Register object b0 and b1 to the touch event list.
NexTouch *nex_listen_list[] =
{
&b0,
&b1,
NULL
};
// Button0 component pop callback function.
void b0PopCallback(void *ptr)
{
dbSerialPrintln("b0PopCallback");
// Mach irgend was - dein eigener Code hier einfügen
}
// Button1 component pop callback function.
void b1PopCallback(void *ptr)
{
dbSerialPrintln("b1PopCallback");
// Mach irgend was - dein eigener Code hier einfügen
}
void setup(void)
{
// Set the baudrate which is for debug and communicate with Nextion screen.
nexInit();
// Register the pop event callback function of the current button0 component.
b0.attachPop(b0PopCallback);
// Register the pop event callback function of the current button1 component.
b1.attachPop(b1PopCallback);
dbSerialPrintln("setup done");
}
void loop(void)
{
// When a pop or push event occured every time,
// the corresponding component[right page id and component id] in touch event list will be asked.
nexLoop(nex_listen_list);
}
Wird ein Button gedrückt, wird entweder die Funktion b0PopCallback oder b1PopCallback aufgerufen. Du musst du lediglich deinen eigenen Programmcode innerhalb den Funktionen einfügen.
Gruß
Spexx:
So ganz klar ist es mir immer noch nicht, wo dein Problem liegt.
Ich tippe auf ein Verständnisproblem bezüglich des Zusammenspiels von Nextion und Arduino bei Verwendung der Nextion Library.