pH meterschaal
28 berichten
• Pagina 2 van 3 • 1, 2, 3
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: pH meterschaal
Overigens een uint16-t kan nooit negatief worden.
Advertisement
Re: pH meterschaal
nicoverduin schreef:Mag die wel -45 graden zijn? Of moet dat 315 graden zijn?
In de map mag ik wel een minwaarde gebruiken, zo lees ik. Alleen wanneer je zou zeggen dat de mapwaardes aldus ingevuld worden (phInt , 600, 850, 315, 225 ) of (phInt, 600,850,225,315) gaat de wijzer wel erg raar aanwijzen.
Daar zou een andere oplossing mogelijk moeten zijn?
Zo leerden we vroeger dat om een negatief getal weg te halen maakte je een kwadraad van een getal waar je dan vervolgens de wortel uit trok. Maar denkelijk heb ik daar niets aan in C.
Ik heb van het uint16_t een signed int gemaakt. Het geen overigens niet uit maakt, onder de x-as gebeurd er niets aan de negatieve kant.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: pH meterschaal
Dan komt natuurlijk de eerste vraag...... bij welke waarde wijst die dan wel 6.00 aan. Dus ff een progje maken....
Re: pH meterschaal
Ja, dat is de eerste vraag én de vraag waarop ik het antwoord niet weet. Op de een of andere manier, zo is mijn denkwijze, het stukje meter welk nu van -45 graden tot 0 graden loopt moeten vervangen door 315 graden tot 360 graden.
Dat zou dan ingevuld moeten worden in de map. Daar zit dan ook meteen het probleem. Hoe vul je dat in? Moet ik in deze richting denken? Werkt overigens nog niet onder de x-as. Code werkt weer niet...
Tips?
Groet,
Ben.
[code2=cpp][/
Dat zou dan ingevuld moeten worden in de map. Daar zit dan ook meteen het probleem. Hoe vul je dat in? Moet ik in deze richting denken? Werkt overigens nog niet onder de x-as. Code werkt weer niet...
Tips?
Groet,
Ben.
[code2=cpp][/
- Code: Alles selecteren
#include "Nextion.h"
#define nexSerial Serial2 //De seriële poort naar de Nextion is Serial2
NexGauge pH = NexGauge (0,1,"z0"); //meterindentificatie
const int ledPin=16; //Tx ledPin=16
uint16_t phInt=0;
void setup()
{
nexInit(); //Initialisatie Nextion
pinMode(ledPin,OUTPUT); //LedPin is een OUTPUT
}
void loop()
{
float ph = 6.3; //even een voorbeeld
phInt = ph*100; // alles met 100 vermenigvulden om een heel getal te hebben
signed int graden = map (phInt, 600, 850, -45, 225); // nu heb je de graden
if(graden<6.42)
{
graden = map (phInt, 600, 850, -315, -360);
}
pH.setValue(graden); //zet de meternaald
}
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: pH meterschaal
Je kan toch gewoon eers een eenvoudig programmatje maken meteen teller van 1 tot 360? Van mijn part met een delay van 1 seconde. De teller naar de serial en die gauge en je weet het.
Re: pH meterschaal
De pH van 6.0 tot 8.5 (bereik is 2.5).
De Gauge graden van -45 tot 225 (bereik is 270 graden).
Voor zover ik weet kan de Gauge alleen positieve graden aan (niet geprobeerd met een echt display).
Dit is niet getest:
De Gauge graden van -45 tot 225 (bereik is 270 graden).
Voor zover ik weet kan de Gauge alleen positieve graden aan (niet geprobeerd met een echt display).
Dit is niet getest:
- Code: Alles selecteren
float ph = 7.0; // van de sensor
// clip de ph waarden.
if( ph < 5.8)
ph = 5.8;
if( ph > 8.7)
ph = 8.7;
// De eenheid van de ph wordt weggewerkt door te delen met het bereik van de ph.
// De eenheid van de Gauge graden wordt toegevoegd door te vermenigvuldigen met het bereik van de graden.
// Vooraf en achteraf de offset bijwerken.
// Haal de ph offset er af, deel door de ph range, vermenigvuldig met graden range, range offset er bij.
float graden = (( ph - 6.0 ) / 2.5 * 270.0 ) - 45.0;
// De Gauge wil de graden als geheel positief getal.
int graden_int = int( graden);
if( graden_int < 0)
graden_int += 360;
Re: pH meterschaal
De oplossing is er:
cpp code
Dank jullie allemaal voor het meedenken!!
Groet,
Ben
cpp code
#include "Nextion.h"
#define nexSerial Serial2 //De seriële poort naar de Nextion is Serial2
NexGauge pH = NexGauge (0,1,"z0"); //meterindentificatie
const int ledPin=16; //Tx ledPin=16
int phInt=0;
void setup()
{
nexInit(); //Initialisatie Nextion
pinMode(ledPin,OUTPUT); //LedPin is een OUTPUT
}
void loop()
{
float ph = 6.80; //even een voorbeeld
phInt = ph*100; // alles met 100 vermenigvulden om een heel getal te hebben
signed int graden = map (phInt, 600, 850, -45, 225); // nu heb je de graden
if(ph<6.42) //De stand op de x-as
{
graden = map (phInt, 600, 850, -45, 225)+360; //stelt de meternaald beneden de x-as
}
pH.setValue(graden); //zet de meternaald
}
Dank jullie allemaal voor het meedenken!!
Groet,
Ben
Re: pH meterschaal
Zucht
Het principe is verkeerd. Het getal van 6.42 komt zomaar uit de lucht vallen terwijl je op dat moment al de graden hebt berekend. Als er iets verandert, dan is die 6.42 misschien niet meer geldig. Die 6.42 is ook geen garantie dat het bij 0 en -1 graden goed gaat met afrondingen en zo.
Het principe is verkeerd. Het getal van 6.42 komt zomaar uit de lucht vallen terwijl je op dat moment al de graden hebt berekend. Als er iets verandert, dan is die 6.42 misschien niet meer geldig. Die 6.42 is ook geen garantie dat het bij 0 en -1 graden goed gaat met afrondingen en zo.
- Code: Alles selecteren
phInt = ph*100; // alles met 100 vermenigvulden om een heel getal te hebben
signed int graden = map (phInt, 600, 850, -45, 225); // nu heb je de graden
if(graden<0) // negatief getal ?
{
graden += 360; // maak een positief aantal graden voor de gauge
}
pH.setValue(graden); //zet de meternaald
Re: pH meterschaal
Dag Koepel,
Ik begrijp je argumentatie. Vooraf, in de praktijk zal het pH gehalte zo tussen de 6.8 en 7 liggen. Het probleem speelt dan natuurlijk minder. Bij een hogere stand, hoger als 7 dus, moet er straks middels een relais CO2 toegevoegd worden. Mijn verklaring is: Het getal 6.42 komt niet zomaar uit de lucht vallen. Bij 6.42 staat de meter exact op "9 uur" of wel de x-as. Anders gezegd; op nul. Bij 6.41 werkte de meter niet meer vanwege de negatieve getallen, denk ik. Eigenlijk bevreemd mij dit wel, als je een stukje terug leest op deze topic zie je welke formule er gebruikt wordt voor mijn lichtschalen, daar heb ik geen probleem met negatieve getallen op mijn Arduino/Nextion. Waarom dat hier wel zo is? Zou natuurlijk kunnen dat dit ligt aan een ander gebruik in de programmering nl.: map? De wijzer van de pH meter trilt wel heel erg daar moet ik nog wel een vertraging op gaan toepassen.
Misschien is het ook leuk dat ik eens laat zien waar ik mee bezig ben.
Die wijzers... ik blijf het maar niks vinden...
Fijn dat jullie meedenken!
Groet,
Ben.
Ik begrijp je argumentatie. Vooraf, in de praktijk zal het pH gehalte zo tussen de 6.8 en 7 liggen. Het probleem speelt dan natuurlijk minder. Bij een hogere stand, hoger als 7 dus, moet er straks middels een relais CO2 toegevoegd worden. Mijn verklaring is: Het getal 6.42 komt niet zomaar uit de lucht vallen. Bij 6.42 staat de meter exact op "9 uur" of wel de x-as. Anders gezegd; op nul. Bij 6.41 werkte de meter niet meer vanwege de negatieve getallen, denk ik. Eigenlijk bevreemd mij dit wel, als je een stukje terug leest op deze topic zie je welke formule er gebruikt wordt voor mijn lichtschalen, daar heb ik geen probleem met negatieve getallen op mijn Arduino/Nextion. Waarom dat hier wel zo is? Zou natuurlijk kunnen dat dit ligt aan een ander gebruik in de programmering nl.: map? De wijzer van de pH meter trilt wel heel erg daar moet ik nog wel een vertraging op gaan toepassen.
Misschien is het ook leuk dat ik eens laat zien waar ik mee bezig ben.
Die wijzers... ik blijf het maar niks vinden...
Fijn dat jullie meedenken!
Groet,
Ben.
Re: pH meterschaal
Je hoeft alleen maar twee regels code te vervangen om het duidelijk en correct te maken.
28 berichten
• Pagina 2 van 3 • 1, 2, 3
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 0 gasten