Nection/Arduino connectie.

Projecten die niet passen in bovenstaande onderwerpen
Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Nection/Arduino connectie.

Berichtdoor Koepel » 24 Mrt 2017, 14:14

benvo schreef:... linksom of rechtsom ...
Maar niet linksom, rechtom, langs boven, langs beneden, vooruit, en achteruit alles door elkaar ;)

Je hebt een Nextion scherm

Je kunt een computer met het scherm verbinden voor de Nextion Editor

Je kunt vanuit de Arduino het scherm aansturen, want het knipperen met het "dim" commando werkte

Dan is het nu tijd om die losse commando's niet meer te gebruiken. Dat doet namelijk de ITEAD Nextion library voor je.
Begin met een test sketch zonder de temperatuur sensor. Probeer eens een tekst te wijzigen of de Gauge op een bepaalde waarde te zetten. Als je daarna ook de callback functies erbij hebt, dan kun je langzaam eens gaan denken om de temperatuursensor toe te voegen.

De verschillende onderdelen "NexGauge pointer = NexGauge(0, 3, "pointer");" zijn objecten / class in de C++ taal. Voor elk component op het scherm is er een C++ object in de ITEAD Nextion library gemaakt. Het werken met objecten geeft een bepaalde heldere programmeerstijl.

Advertisement

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

Re: Nection/Arduino connectie.

Berichtdoor benvo » 24 Mrt 2017, 15:33

benvo schreef: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!


Overigens: Nog even een aanvulling hierop, het is en was niet mijn bedoeling om iets terug te zetten. En ja, ik probeer om alles te lezen maar wat voor jullie al duidelijk is .... De reden dat ik de sketch eigenlijk terugzette zoals hij was had de bedoeling om uitleg te krijgen wat alles zo'n beetje zou kunnen doen én vooral om het te begrijpen, zoals de vragen daaromheen al aangaven! En zonder dat bijgevoegde voorbeeld is het weer moeilijk voor jullie te begrijpen wat ik nu eigenlijk met mijn vragen bedoel. Misschien moeten we elkaar van beide kanten beter begrijpen? Trouwens de sketch die ik hier neerzette heeft, tot nu toe, alleen maar als oogmerk om iets te leren!

Maar ik vind het feit dat jullie de tijd én de moeite nemen om dit te doen klasse! Laat dat voorop staan.

@Koepel, ik zag dat je de wijzer in een Gauge in de Editor kan verplaatsen door de "Val" waarde te wijzigen. Bijvoorbeeld als ik 315 (graden) invul staat de wijzer op nul. Nu even met de adviezen van jou én die van Nico aan het werk!

Groet,
Ben.

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

Re: Nection/Arduino connectie.

Berichtdoor benvo » 24 Mrt 2017, 17:39

Hallo allemaal,

Iets vreemds, op pin 0 van de Arduino Mega kan ik de blauwe Tx draad aansluiten en op pin 1 de gele Rx draad. En dat klopt ook met de opschriften op zowel de Arduino en het Nextion scherm. Bij pin 16, volgens het opschrift Tx2 moet ik de gele Rx draad aansluiten en op pin 17, volgens het Arduino opschrift Rx 2 sluit ik de blauwe Tx draad aan, omgekeert dus! Alleen op die manier werkt het. Geen probleem als je het weet maar komt dit wel vaker voor?

Groet,
Ben.

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

Re: Nection/Arduino connectie.

Berichtdoor Koepel » 24 Mrt 2017, 18:39

Dat is de reden dat ik minstens vijf keer heb gecontroleerd dat ik de juiste kleur en de juiste pin nummers noemde.

Wanneer je een lege sketch upload, dan doet de ATmega2560 microcontroller helemaal niets. Alle pinnen zijn input en hoogohmig. Dan lijkt het net alsof de ATmega2560 er helemaal niet op zit.
Op die manier kun je de serial-usb converter gebruiken die op het Arduino Mega board zit en het display komt in de plaats van de ATmega2560 microcontroller.
Je bent dan dus niet met pin 0 en pin 1 van de ATmega2560 verbonden (want die doet niets), maar met de serial-usb chip.
De serial-usb-TX is namelijk verbonden met pin 0 (RX), en de serial-usb-RX is verbonden met pin 1 (TX).

Wanneer je pin 16 en 17 gebruikt, dan is de ATmeag2560 microcontroller wel aan het werk. Dan worden ze dus normaal aangesloten.

De meeste Arduino boarden hebben RX op pin 0, dus het laagste pin nummer. Bij de Arduino Mega zit bij Serial1, Serial2 en Serial3 zit de RX op het hogere pin nummer: https://www.arduino.cc/en/reference/serial.

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

Re: Nection/Arduino connectie.

Berichtdoor benvo » 24 Mrt 2017, 19:10

Hallo Koepel,

Daar zit hem dus net de kneep :D ! Bij mijn Mega staat inderdaad ook op pin 17 Rx2 ( en op 16 Tx 2) maar als ik daar, op pin 17 dus, de Rx gele draad op aansluit werkt e.e.a. niet. Ik moet daar de blauwe draad van Tx op aansluiten. Dus de opdruk staat verkeerd om.
Bij 0 en 1 daarentegen klopt alles wel.

Groet,
Ben.

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

Re: Nection/Arduino connectie.

Berichtdoor Koepel » 24 Mrt 2017, 19:22

Huh? De opdruk op het Arduino Mega board is correct hoor, niets mis mee.

Bij een seriale verbinding is TX een digitale uitgang en RX een digital ingang.
Dus het is altijd zo:
RX ---------------------- TX
TX ---------------------- RX

Heb je al via de ITEAD Nextion bibliotheek een Text of Gauge component kunnen wijzigen ?

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

Re: Nection/Arduino connectie.

Berichtdoor benvo » 25 Mrt 2017, 14:31

Dank je wel, Koepel voor je reactie!

Inderdaad heb ik al een aantal dingen bekeken en uitgeprobeerd. Zo kun je bijvoorbeeld in het example Compgauge eenvoudig de stappen van de drukknoppen wijzigen die nu op 5 staan naar grotere of kleinere waardes. Dit heb ik gedaan via de sketch op mijn Arduino. Maar je kan ook, ander voorbeeld, zeggen dat de "9 uur" stand van 360 of 0 moet worden overgeslagen door te vertellen dat wanneer deze waarde aan de beurt is de wijzer op, laten we zeggen, 1 te zetten.

De Nextion instructie set heb ik ook eens goed bekeken.

Ook liet ik eens een aantal waardes in mijn Serial Monitor te voorschijn komen om te zien wat er zoal gebeurde na elk onderdeel van een sketch.
Bij toeval ontdekte ik daarbij dat ik een breuk in mijn 3 aderige kabel had van mijn temp. sensor waardoor de waarde die ik op mijn monitor zag op -27 bleef staan of ook soms raadselachtige tekens gaf. Dit is inmiddels gerepareerd.

We gaan verder want er is nog veel te doen. Erg leuk overigens!

Groet,
Ben.

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

Re: Nection/Arduino connectie.

Berichtdoor benvo » 25 Mrt 2017, 16:47

Dit is de sketch geworden. Het werkt dus.

[code2=cpp][/
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,"z3");

 

void setup(void) {

   
   
 
 
   nexInit();
 
    // Start de library
    sensors.begin();
 
}
 
void loop(void) {
   
    sensors.requestTemperatures();                // Vraagt om de temperatuurmeting te halen.
    float x = sensors.getTempCByIndex(0);    //Zet de meting waarde in X
   
    //Omzetting waarde naar graden van de temperatuurschaal.
    // 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);
    if(degrees>=360)
   {
     degrees=0;
   }
   
   sendCommand("degrees");
    }


code2]

Hier een plaatje van de werkende Temp.meter!

Afbeelding

Jullie zijn geweldig!

Groet,
Ben.

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

Re: Nection/Arduino connectie.

Berichtdoor Koepel » 25 Mrt 2017, 20:44

@benvo, Dat werd ook wel eens tijd :mrgreen:
Maar nu even serieus, dat is mooi :D
Nu nog dingen toevoegen waar je op kunt drukken (vinkje aanzetten in Nextion Editor) en die nexLoop() er in zetten, die je in de voorbeelden ziet. Die nexLoop() verwerkt de dingen waar je op kunt drukken en dan wordt een callback functie aangeroepen.

Op je scherm staat een Gauge en in je code heb je een object dat "pointer" heet. Die horen bij elkaar. Dus als je dit doet: pointer.setValue(degrees); dan wordt de wijzer goed gezet.
Zou je deze regel: sendCommand("degrees"); willen verwijderen ? Die regel slaat echt nergens op.

@nicoverduin en @benvo,
benvo wil witte wijzers met een punt, en ik wil steampunk wijzers die ook één kleur mogen zijn. Stel dat er een font zou zijn dat een rechthoekige veld heeft en 360 tekens. Elk teken is zo'n wijzer in een bepaalde stand. Dan zijn er opeens heel veel mogelijkheden met de wijzers.
Het formaat van het *.zi bestand ken ik niet.
De broncode van ziedit is niet openbaar, dus ik kan geen bitmaps naar een *.zi bestand schrijven.
Die wijzer zou in Inkscape gemaakt kunnen worden als svg. Dat in een script roteren naar 360 svg bestanden. Dat omzetten naar een font. Dat inlezen in de Nextion Editor, dan een bepaalde grootte kiezen en eventueel bijwerken in ziedit.
Een andere manier is misschien om bitmaps te roteren en een bitmap font te maken.
Ik denk dat het mogelijk is.

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

Re: Nection/Arduino connectie.

Berichtdoor nicoverduin » 25 Mrt 2017, 20:50

Je kan wel een truetype font maken en dan door de editor laten veranderen. In 1981 zoiets gedaan met een epson mx80 die nog niet grafisch kon printen itt de epson fx80. Slim idee en zeker de moeite waard om uit te zoeken
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 9 gasten