tijd vergelijken probleempje

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

Re: tijd vergelijken probleempje

Berichtdoor Koepel » 06 Mei 2017, 18:46

Ik ben nog steeds erg benieuwd naar tijden en de seriële data die je binnen krijgt.
Welke baudrate ?
Hoeveel bytes totaal ? (De Arduino 'Serial' library heeft een software buffer van 64 byte).
Welk formaat voor de tijd ? Graag exact. Binair of leesbare ASCII en wat precies ?
Hoe laat van tevoren krijg je die tijden ?
Waarom kunnen die tijden veranderen ?

Advertisement

Berichten: 19
Geregistreerd: 03 Mei 2017, 09:18
Woonplaats: Almere

Re: tijd vergelijken probleempje

Berichtdoor PeterZ » 07 Mei 2017, 06:12

Welke baudrate ?
- 9600kbps

Hoeveel bytes totaal ? (De Arduino 'Serial' library heeft een software buffer van 64 byte).
- 59 bytes de eerste keer, hierna 20 t/m 24 bytes en na ack 2 bytes (OK).
- Krijg eerst wat rommel met firmware etc.. en moet dan inloggen.

Welk formaat voor de tijd ? Graag exact. Binair of leesbare ASCII en wat precies ?
- Plaats de ontvangen data in char en ontvang het op deze manier (zonder de eerste keer met firmware info etc..) TST T1 9:12 T2 15:0 S1#
- na versturen van ack ontvang ik OK terug.
- TST staat voor Transmissie Send Time en de S1 is Send 1ste keer en # om einde aan te geven van data.
- Dit werkt verder goed, geen haperingen meer(had de eerste keer de echo aan staan, ja dat gaat mis met wat je terug verwacht:).
- Heb de ATtiny85 even ervoor misbruikt om te simuleren, ging net met mijn testcode, niet alteveel ruimte in dat dingetje maar wel handig.

Hoe laat van tevoren krijg je die tijden ?
- Wanneer de Meetkast gebruikt is, dit is op verschillende tijden wanneer het hen uitkomt om een meting te starten.

Waarom kunnen die tijden veranderen ?
- Als ze opnieuw een meting doen de volgende dag indien nodig, als er meer dagen nodig zijn, dan draait de pomp zijn cyclus volgens de opgegeven tijd blok.
- Afhankelijk of er in de ochtend wel of niet gewerkt moet worden of dat er geluidsoverlast is, dat bepaald de tijd voor start.

Arduino Uno met (geprinte) kastje hangt nu in de werk-container op de bouwplaats sinds paar uurtjes(net ook pas terug).
kastje wilde net niet vastklikken op de Din-rail jammer.. komt wel een andere keer.
Heb er mechanisch schakelklokje -met die pinnetjes- aangehangen met de gsm module en kijken of een sms ontvangen wordt, na 10 minuten krijgt ie weer spanning en zal dan opnieuw een sms moeten ontvangen.. ging daar lokaal goed, dus verwacht wel dat het werkt, maar m'n broertje moet het zeker weten.
Code voor de gsm moest er nog in voor 2de ser poort.
(Aggregaat en pomp hangt er nu even niet aan wel een bouwlamp die aan gaat die gevoed word vanuit de werkplaats, container staat nu nog niks te doen)

Grts. Peter

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

Re: tijd vergelijken probleempje

Berichtdoor Koepel » 07 Mei 2017, 14:47

Zomaar wat losse opmerkingen:

59 bytes, dat past netjes in de buffer van 64 byte. Dat betekent dat je in je sketch een paar kleine delay() kunt zetten.

De tijden als "T1 9:12 T2 15:0" zijn dus zonder de datum, alleen van die dag.
Je kunt de datum er aan toevoegen en de seconden vanaf 1970 gaan gebruiken (mijn sketch). Wanneer je dezelfde tijden in de volgende dagen wilt gaan gebruiken (omdat er geen nieuwe tijden binnen komen), dan wordt het weer lastig.
Of je kunt de seconden van die dag (of een willekeurige dag) gebruiken (nico's sketch).

De Arduino Uno heeft maar één hardware seriële poort, en die wordt gebruikt om een sketch te uploaden en voor de seriële monitor. De Arduino Leonardo heeft een vrije hardware seriële poort, en de Arduino Mega 2560 heeft drie vrije seriële poorten.
Probeer SoftwareSerial te vermijden.

Wanneer het GSM shield werkt, dan is dat mooi. Als je daar SoftwareSerial voor gebruikt, hou er dan rekening mee dat die de hele Uno erg zwaar belast. Als je geluk hebt, dan kun je daarnaast nog een ledje laten knipperen.

De Arduino Uno is 8 bit, maar de compiler gebruikt 16 bit als standaard voor de Arduino Uno. Dus een integer 'int' is 16 bit. De Arduino Uno heeft alleen de 32-bit 'float' en niet de 64-bit 'double' als floating point. Maar die floating point library is wel super geoptimaliseerd en zeer snel (behalve delen).

De TimeLib and TimeAlarms libraries lijken me het meest geschikt voor dit project. Ik ben bezig geweest met de Adafruit RTClib, maar die benadering vind ik net iets minder.

Vorige

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: husayzopefodi en 15 gasten