Nextion Scherm temperatuur tonen

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

Nextion Scherm temperatuur tonen

Berichtdoor Dries » 05 Dec 2016, 23:24

ik heb mij gewaagd aan een Nextion scherm en het lukt al aardig om er iets uit te krijgen. Nu had ik graag de temperatuur via een DS18B20 sensor op de Nextion willen tonen maar dat lukt nog niet, ik heb een draft gemaakt meet de Nextion IDE
de Code:
cpp code
#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 4
SoftwareSerial mySerial(10, 11); /*Even though you can use the hardware serial port in this case I think it is better to
leave the hardware serial open for debugging purposes*/
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup() {
sensors.begin();

// put your setup code here, to run once:
pinMode(0, INPUT); //This is our analog input pin
pinMode(7, OUTPUT); //Connect the power pin of the Nextion here
digitalWrite(7, HIGH); //Turn the pin on that will power the Nextion

Serial.begin(57600); //open the hardware serial port
while (!Serial) { // wait for serial port to connect. Needed for native USB port only
;
}

Serial.println("Serial On"); //Print this messages when the serial port is connected
mySerial.begin(9600); // set the data rate for the SoftwareSerial port
}

void loop() {
sensors.requestTemperatures();
float temp = (sensors.getTempCByIndex(0));
String sendThis = ""; //Declare and initialise the string we will send

delay(300); //Probably unneccessary, but I give the screen some time to respond
sendThis = "n0.val="; //Build the part of the string that we know
sendThis.concat(temp); //Add the variable we want to send
writeString(sendThis); /*Use a function to write the message character by character to the Nextion because
mySerial.write(sendThis) gives you an error due to a datatype mismatch*/
}

//NOTE: A great big thanks to: RamjetX for writing this function. You can find his/her post here: http://forum.arduino.cc/index.php?topic=89143.0. Please go give him/her some Karma!
void writeString(String stringData) { // Used to serially push out a String with Serial.write()

for (int i = 0; i < stringData.length(); i++)
{
mySerial.write(stringData[i]); // Push each char 1 by 1 on each loop pass
}

mySerial.write(0xff); //We need to write the 3 ending bits to the Nextion as well
mySerial.write(0xff); //it will tell the Nextion that this is the end of what we want to send.
mySerial.write(0xff);
Serial.println(sensors.getTempCByIndex(0));
}// end writeString function

volgens mij heeft het iets te maken met de string? op het scherm staat nu "0", op de Serial komt de temperatuur netjes binnen.

alvast bedankt voor het meedenken

Advertisement

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

Re: Nextion Scherm temperatuur tonen

Berichtdoor Koepel » 06 Dec 2016, 00:20

Zou je dit:
Code: Alles selecteren
for (int i = 0; i < stringData.length(); i++)
{
  mySerial.write(stringData[i]); // Push each char 1 by 1 on each loop pass
}
willen vervangen door dit:
Code: Alles selecteren
mySerial.print(stringData);

En die opmerking over RamjetX kun je weghalen, want die heeft maar één post gemaakt op forum.arduino.cc en dat is dan ook nog inbreken op een 4 jaar oude thread en de code is verkeerd.

Dit viel me meteen op, ik weet niet of het daarmee opgelost is.

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

Re: Nextion Scherm temperatuur tonen

Berichtdoor Dries » 06 Dec 2016, 00:31

Koepel, hetzelfde resultaat helaas

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

Re: Nextion Scherm temperatuur tonen

Berichtdoor Koepel » 06 Dec 2016, 00:51

Helaas ben ik niet bekend met de Nextion.

Je stuurt nu de echte temperatuur naar de seriële monitor. Probeer ook eens om 'stringData' naar de seriële monitor te sturen, en kijk of je dat wilt.

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

Re: Nextion Scherm temperatuur tonen

Berichtdoor Dries » 06 Dec 2016, 00:58

dan krijg ik n0.val=24.94 op de Serial dit is eigenlijk wat op het scherm moet komen te staan

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

Re: Nextion Scherm temperatuur tonen

Berichtdoor Koepel » 06 Dec 2016, 01:10

Misschien is er iets mis met de communicatie tussen de Arduino en de Nextion.
Waarom gebruik je geen aanhalingstekens rondom de temperatuur ?

Welk Arduino board gebruik je ? Bij een Leonardo/Micro/Mega hoef je de SoftwareSerial niet te gebruiken.

Test met een heel eenvoudige sketch:
Code: Alles selecteren
// Arduino Uno, Arduino.cc IDE 1.6.13

#include <SoftwareSerial.h>

SoftwareSerial mySerial( 10, 11);

void setup()
{
  Serial.begin( 9600);
  Serial.println( "Started");

  mySerial.begin( 9600); 

  delay(2000);   // 2 seconds delay, maybe it helps

  mySerial.print( "n0.val=\"30.56\"\xFF\xFF\xFF");

  Serial.println( "Text send");
}

void loop()
{
}

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

Re: Nextion Scherm temperatuur tonen

Berichtdoor Dries » 06 Dec 2016, 01:18

in de Serial : Started
Text Send
display is uit nu
ik gebruik een UNO, ik heb ook een MEGA ter beschikking

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

Re: Nextion Scherm temperatuur tonen

Berichtdoor nicoverduin » 06 Dec 2016, 07:47

Waarom gebruik je niet gewoon de nextionarduino library?
https://github.com/itead/ITEADLIB_Arduino_Nextion
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 » 06 Dec 2016, 10:51

Dag Nico, kan je mij een duw geven in de juiste richting? :-)

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

Re: Nextion Scherm temperatuur tonen

Berichtdoor nicoverduin » 06 Dec 2016, 11:01

Gewoon die library dienbladen en installeren in documenten/Arduino/Libraries.
Er staan allerlei voorbeelden in examples voor alle verschillende soorten. Knoppen tekstveld enzo enzo.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Volgende

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 8 gasten