tabel

ik heb eens een vraagje met betrekking tot het programmeren van een tabel.
Ik wil met een temperatuur meter een waarde aflezen om bv 12:00 s middags.
Als ik dan om 12:00 bv 15 graden aflees wil ik dit vergelijken in een tabel ( zoals in bijlage is meegegeven)
In de bijlage staan 2 tabellen.
in de tabel staat dat bij 15 graden mijn motor een aan tal keren moet draaien op een dag.
Als ik het aantal keren weet zou ik in de tweede tabel willen kijken om wat voor tijd deze dan moet draaien.

Kan iemand mij helpen hoe ik dit het beste kan aan pakken en wat voor libary's dat ik standaard kan pakken.

Hoi bjoang,

Geen idee of er libraries voor zijn, maar ik zou zelf waarschijnlijk een oplossing mbv multidimensionele arrays gaan onderzoeken.
Een gewone array waarin de pointers naar regels uit je tweede tabel. (Selecteren dmv een offset t.o.v. de gemeten temperatuur)
en een multidimensionele waarin het schakelschema staat.

Maar als het schakelschaema zo eenvoudig blijft als in de bijlage kun je het misschien net zo goed met conditionals doen.

Gewoon eens proberen welke methode het minste geheugen vreet.

Ik vraag me af hoe je de tijd gaat meten? Arduino heeft geen klok.
Stel dat je een ethernet kaart zou gebruiken om de tijd te weten... is het dan niet handiger om de server om het kwartier te vragen of er iets moet gebeuren?

Als je toch alles op arduino doet kan je je best beperken tot schakelen bv om het uur (half uur ...) en schakelen per bv per 5 graden. Dan kan je een tabel maken met als rijen het uur en als kolommen de temperatuur en enkel ja neen als waarden (bits dus geen booleans). Als je dat met een integer doet heb je al 165 = 80° range aan met een long 325=160°) en kom je dus met 24 integers of longs toe.
De rest is dan gewoon boolean logica BV schakelen by 10 graden om 3 uur (veronderstellend dat je begint vanaf nul graden) word dan iets als

if( Tabel[3] & (2^2) ) schakelmotor

Hoe kon ik aan 2^2? de eerste 2 omdat je binair werkt de 2 de 2 omdat je de 3 de waarde wil (je begint met 0 8) ). De 2de 2 komt niet toevallig overeen met 10/5. Als je met int werkt (en omdat int automatisch afrond) kan je dan zeggen graden/5.
Je code wordt dan

if( Tabel[uur] & (2^(graden/5)) ) schakelmotor

Als je niet vanaf nul begint met de graden moet je dit in rekening brengen. BV als je van -5 graden begint is ofset =-5.

if( Tabel[uur] & (2^((graden-ofset)/5)) ) schakelmotor

Met vriendelijke groet
Jantje

ps merk op dat de editor & schrijft. Waar het om gaat is de bitwise and die hier omschreven is & - Arduino Reference

Beste Jantje

Voor de tijd heb ik vergeten te vertellen ik hier voor een Deadon RTC DS 3234 voor dit is een realtime clock als ik het goed heb.

yes, DS3234 is een realTime clock en IIRC een behoorlijke accurate.

Succes,

Dankje Rob

Ik ga zeker op deze site kijken.