Nection/Arduino connectie.

Projecten die niet passen in bovenstaande onderwerpen
Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Nection/Arduino connectie.

Berichtdoor nicoverduin » 22 Mrt 2017, 20:18

Mogelijk is de generator ook voor linux volgende week klaar. Blijkt dat windows toch wat soepeler is. Maar het doel si een source voor windows/linux/osX en dat dreigt te lukken
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Advertisement

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

Re: Nection/Arduino connectie.

Berichtdoor benvo » 22 Mrt 2017, 20:55

Daar spreekt de vakman!
Succes Nico!

Groet,
Ben.

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

Re: Nection/Arduino connectie.

Berichtdoor benvo » 22 Mrt 2017, 21:15

Dit is het tot zover maar het werkt niet, kennelijk zit ik in een loop? Het Rx ledje van de Arduino Mega knippert razendsnel. Even voor een goed begrip, als ik schrijf NexGauge pointer=NexGauge(0,3,"z3"); dan staat de 0 voor de pagina, de 3 voor de vierde meter die de z3 naald op zich heeft? Het deel welke de hoek van de naald uitrekent is duidelijk. Het deel wat zegt: Serial.print("z3.val="); zou ik graag goed willen begrijpen, wat doet het precies?

[code2=cpp][/
Code: Alles selecteren
#include <NexGauge.h>
#include <Nextion.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>  // Zit al in de Arduino IDE

//De Seriële poort naar het scherm is Serial2
#define nexSerial Serial2

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

NexGauge pointer  = NexGauge(0, 3, "z3");   //z3 is de temperatuurmeter.

void setup(void)
{
 Serial.begin(115200);
 nexInit();
 
 
 // Start de library
 sensors.begin();
 
}

void loop(void)
{
sensors.requestTemperatures(); // Zend het commando om de temperatuurmeting te halen.

float x=sensors.getTempCByIndex(0);


// 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;
int degrees = int( angle);
 




 
 
 
Serial.print("z3.val=");
Serial.print(x);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
   
}
code2]

Groet,
Ben.

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

Re: Nection/Arduino connectie.

Berichtdoor nicoverduin » 22 Mrt 2017, 21:55

Je moet naar NexSerial schrijven. Daar hangt je nextion aan. En al die losse codes hoeft niet als je de library bekijkt. Je moet ff op de wiki van de nextionarduino library kijken hoe je de waardes zet. Nu doe je een beetje half om half

bijv:
cpp code
#include <Nextion.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h> // Zit al in de Arduino IDE

//De Seriële poort naar het scherm is Serial2
#define nexSerial Serial2

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

NexGauge pointer = NexGauge(0, 3, "z3"); //z3 is de temperatuurmeter.

void setup(void) {
Serial.begin(115200);
nexInit();

// Start de library
sensors.begin();

}

void loop(void) {
sensors.requestTemperatures(); // Zend het commando om de temperatuurmeting te halen.
float x = sensors.getTempCByIndex(0);

// 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;
int degrees = int(angle);
pointer.setValue(degrees);
}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: Nection/Arduino connectie.

Berichtdoor benvo » 22 Mrt 2017, 22:26

Inderdaad Nico, net had ik zelf uitgevogeld dat nexSerial.print maar ook nexSerial.write het geknipper laat ophouden.


Wat bedoel je met "al die losse codes?" Voor betreft waardes kijk ik op Nextion instruction set. Hopelijk is dat de bedoelde plek?

En dan deze vraag: nexSerial.print("z3.val="); betekend? Zelf denk ik dat het betekend, "z3 waarde is gelijk aan" en x in de volgende regel geeft dan die waarde? Ik stel deze misschien in de ogen van de vakman niet al te slimme vragen omdat ik een programma zomaar ergens vandaan halen zonder dat ik het begrijp voor mij niet zo zinvol is.

Vervolgens heb ik het idee dat ik ergens iets mis in deze sketch maar we blijven zoeken!

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

Re: Nection/Arduino connectie.

Berichtdoor nicoverduin » 22 Mrt 2017, 22:28

Enerzijds maak je gebruik van die library en anderzijds ga je losse bytes versturen terwijl je er een functie voor hebt. Kijk nou eens injouw door mij aangepaste code.....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: Nection/Arduino connectie.

Berichtdoor benvo » 23 Mrt 2017, 16:41

cpp code
Code: Alles selecteren
#include <Nextion.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>  // Zit al in de Arduino IDE
 
 //De Seriële poort naar het scherm is Serial2
#define nexSerial Serial2
 
 // 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);
 
NexGauge pointer = NexGauge(0, 3, "pointer");   

void setup(void) {

   

 
   Serial.begin(115200);
   nexInit();
 
    // Start de library
    sensors.begin();
 
}
 
void loop(void) {
    sensors.requestTemperatures(); // Zend het commando om de temperatuurmeting te halen.
    float x = sensors.getTempCByIndex(0);
 
    // 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;
    int degrees = int(angle);
    pointer.setValue(degrees);

   
   

    nexSerial.print("z3.val=");
    nexSerial.print(degrees);
    nexSerial.write(0xff);
    nexSerial.write(0xff);
    nexSerial.write(0xff);
 
}


Ik kom hier even niet verder mee, daarom even het volgende als het mag:

Waarschijnlijk begrijp ik de werking van zowel het programma als van sommige commando's niet goed. Daarom wilde ik afstappen van de wijze van programmeren maar eerste in mijn eigen woorden omschrijven wat ik denk dat een programmadeel doet. Op volgorde van het programma.

Bovenin staan drie library's:
Nextion.h voor het Nextion scherm
Onewire.h temperatuur aansluiting met één draad
Dallastemperature.h voor de Temp.meting.
Wire.h zit eigenlijk al in de Arduino

Ik definieer dat de Nextion op de 2e seriëele poort van de Arduino Mega is aangesloten.
Data van de temp. meting verloopt via Pin 7
Onewire verbind aldus de sensor met pin7 Arduino en Tem. meting.

Dan de zin: NexGauge pointer= NexGauge(0,3,"pointer") Hier wordt de plek van de temp. gauge aan een geheugenplaats toegewezen? Niet helemaal duidelijk dus!

In de setup:

Serialbegin(115200); geeft de default baudsnelheid aan.
nexInit(); initialiseerd de Nextion, zet alles op 0.

Sensorsbegin(); initialisatie van de sensor.

Void loop(void)

sensors.requestTemperatures(); vraagt de sensor om een meting.
float x=sensors.get TempCByIndex(0); Haalt de temp. Celsius op en zet deze waarde in x

float angle=(x/50.0*270.0)-45.0; berekening van de hoek die de naald zal gaan maken bij de opgehaalde temp. waarde. Bijvoorbeeld bij 25 graden Celsius zal de hoek 90 graden zijn.
int degrees=int(angle); De integere angle waarde wordt naar een integere degrees waarde gezet. (WAAROM DEZE OMZETTING?
pointer.setValue(degrees); De degrees waarde wordt in een geheugenplaatst toegewezen. (HIER HAD TOCH OOK, "Pointer.setValue(angle);" KUNNEN STAAN?

nexSerial.print(z3.val="); Stuur naar de Nextion z3 (mijn temp.meter) de waarde,
nexSerial.print(degrees); die in de degrees zit

Deze laatste twee zijn me niet duidelijk, moet er niet ergens vertelt worden, "haal de degrees waarde op?"

nexSerial.write(0xff) (3x) Ook niet duidelijk maar zijn volgens mij afsluitende hex. nummers?

Hopelijk hebben jullie dit door willen lezen, ik wil graag weten of ik snap wat er gebeurd. Pas dan lijkt het me mogelijk om uit te vissen waarom dit niet werkt.
Dank!

Groet,
Ben.

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

Re: Nection/Arduino connectie.

Berichtdoor nicoverduin » 23 Mrt 2017, 20:46

Ben
Hoe lang gaat het nog duren voordat je de teksten van koepel en mij gaat lezen?
En dan nog even mbt jouw opmerkingen:
a) Ik heb de berekening zo gelaten als dat ie daar stond. Dus geen idee waarom bepaalde conversies zo gedaan worden. Het is niet mijn code.
b) Dan sloop ik code eruit en jij zet het net zo hard er weer terug in....
c) ik geef je een voorbeeld uit de standaard voorbeelden en daar staat helemaal NIETS van enige hex codes.. Jij zet ze keihard terug. Koepel en ik geven nog aan dat je half om half bezig bent.
Maar zo maar eens even.... Waarom ga je niet eerst eens dat gauge voorbeeld gewoon proberen. Om het in je vingers te krijgen ipv. doormodderen.
En wist je dat alle documentatie van de Arduino Nextion in de folder van die libraries staat? Misschien een reden om eens daar te kijken. Dan heb je alles. Enne btw... Er is daar een bestand index.htm.... daarop dubbelklikken. Dit is altijd de eerste pagina waar je terecht komt als je een website benaderd. Dus www.google.com wordt vertaald naar www.google.com/index.htm
Maar in jouw geval zou ik nu ALLES uit je hoofd zetten wat ook maar iets met die 0xFF codes en z3.val= gebeuren te maken heeft en UITSLUITEND nog met de Arduino library gaan werken. En bekijk die voorbeelden.
Er zijn namelijk 2 manieren om die Nextion te benaderen. De Arduino library is eenvoudig, recht toe recht aan. De andere benadering is gezien je vragen een brug te ver. Uiteraard mag je altijd proberen over die brug te springen, maar ik heb geleerd door de tijd heen dat ik dan rustig ga kijken....
En natuurlijk zal er wel weer eentje "zeiken" (met PM's en zo :mrgreen: )dat ik je te hard aanpak, maar soms is dat mijns inziens nodig... Zachte heelmeesters maken nu eenmaal stinkende wonden.. En daar werk ik niet aan mee.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: Nection/Arduino connectie.

Berichtdoor benvo » 24 Mrt 2017, 11:20

Hallo Nico,

Met mijn 65 jaar val ik niet zo gauw van mijn stoel....
Te hard aanspreken, nee hoor. Sterker nog, ik heb er een voorkeur voor! Iets terugzetten doe ik niet uit eigenwijsheid, ik wil begrijpen wat het deed en waarom. Vroeger, in het middelbaar onderwijs leerde je je talen en wiskunde door formules uit je hoofd te leren en, voor bijvoorbeeld, Duits moest je (naamval) rijtjes leren. Deed je dat fout dan volgde er ook geen liefdevolle preek! Dus, hard aanpakken geen probleem!

We gaan gewoon verder. Mijn project gaat werken, linksom of rechtsom! Dank alvast voor je reactie!

Groet,
Ben!

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

Re: Nection/Arduino connectie.

Berichtdoor nicoverduin » 24 Mrt 2017, 12:50

Mooi. Ik ook niet... al ben ik 5 jaar jonger :)
De Nextion moet je gewoon zien als een zelfstandige computer die op de Serial luistert en zend naar een andere processor en dingen vertoont op een scherm.
Maar je moet kiezen...
Ofwel je maakt gebruik van de NextionArduino library
Ofwel je gaat alles zelf doen met die xxx0xFF0xFF0xFF opdrachten die je dan via de nextion serial verzend en continu luisteren of er iets is ingedrukt.
Beide door elkaar gebruiken is de goden verzoeken.

Die library heeft 2 voordelen:
a) Het scheelt een heleboel tikwerk
b) Het werkt 'event driven' waardoor code alleen wordt uitgevoerd als er iets gebeurt op het scherm. Met al die losse kodes moet je dat allemaal zelf oplossen....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

VorigeVolgende

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 8 gasten