Go Down

Topic: Inlezen gegevens - "Woord" (Read 4154 times) previous topic - next topic

ivanflo

Beste leden,
Mijn eerste stappen zijn er nog steeds.

Ik heb een windsensor tx 23  op de kop kunnen tikken.

Deze geeft bedraad dergelijk signaal uit:


Dit betekent een signaal van 42 bites. en dat resulteert in een woord van 42bites lang.

Hoe kan ik iets dergelijks uitlezen in mijn Arduino256 en hoe filter ik de windrichting en de windkracht eruit.


Section   Length (bits)   Inverted?   Endianness             Description        Notes
A            5                           Yes                   LSB first             Start Frame        Always 00100
B            4                           Yes                   LSB first             Wind Direction        0-15, see table below
C           12                           Yes                   LSB first             Wind Speed        0-511
D            4                           Yes                   LSB first             Checksum   (deze heb ik nodig)
E            4                           No                   LSB first             Wind Direction         0-15, see table below
F           12                           No                   LSB first             Wind Speed          0-511

Alvast bedankt


nicoverduin

Wat is precies je vraag? Krijg je een bit patroon van 42 bits binnen? of 42 bytes die of een 1 of 0 bevatten. En het resultaat moet vervolgens opgebroken worden in de verschillende variabelen?
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl


MAS3

Enig idee waar ivanflo zijn plaatje vandaan zou hebben ?
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Jantje

Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

MAS3

(Pssst, dat wist ik wel, maar wist DeepZ dat ook ?)
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Jantje

Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

ivanflo

Dag,
Het spijt me dat ik de bron vermelding er niet bij heb geplaatst.
Hoe dan ook, ik had inderdaad graag met deze wind meter de gegevens ingelezen.

Hoe doe ik dit het beste.


Inderdaad een zoveelste weerstation.... dit komt er ook nog bij




Alvast bedankt

MAS3

De bron staat al in het plaatje vermeld (maar misschien moet je daarvoor naar rechts scrollen), dus daar zit geen probleem.

Die windmeter is een apart ding.
Je moet m namelijk triggeren, waarna dat ding ineens een berg data spuit (42 bits dus).
Dus je moet zelf eerst van de pin die je gebruikt de pullup activeren.
Als je klaar bent om data te ontvangen, moet je die pin heel kort (iets van 5 milliseconden gok ik) laag maken.
Even later (weer zo'n 5 milliseconden), na het vrijgeven van die pin, trekt de sensor 'm 20 milliseconden laag, als een soort van bevestiging dat er data aan zit te komen.
Dan weer een startsignaal, waarna de bits in èèn riedel komen.
Ik denk dat je hiervoor niet de seriele pins 0 en 1 kunt gebruiken, vanwege het laag moeten maken van die pin.
Dus kom je dan op softserial uit.
Maar ik heb geen idee of je dan wel die pin even laag kunt maken en dan nog op tijd bent om alle gewenste informatie binnen te halen en te verwerken.

Die druksensor zal best meevallen.
Ik zie er een adafruit logo opstaan en daar zul je vast gemakkelijk voorbeeld code van kunnen vinden en toepassen.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

ivanflo

@Mas3 bedankt voor je insteek.

En het wordt me duidelijker.

Mijn vraag is dan ook, het in geen analoge input, wel een digitale input.

dur dergelijk commando zal het niet wezen
Code: [Select]
pinMode(buttonPin, INPUT)

Welk stukje code moet ik dan gebruiken.

Alvast bedankt.

MAS3

Als je in de reference pages (klik !) kijkt, vind je dat er ook nog zoiets is als:
Code: [Select]

 pinMode(somePin, INPUT_PULLUP);

En verder is daarover hier ook nog wat te vinden (deze link vind je ook als je de link hierboven volgt).
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

ivanflo

#11
Feb 03, 2014, 02:31 pm Last Edit: Feb 03, 2014, 02:38 pm by ivanflo Reason: 1
MAS3 Bedankt opnieuw voor je inbreng.
Jou linken hebben me opnieuw aan het zoeken gezet, en ja ik heb alles gevonden, en zelfs meer...

Dit is wat ik zocht:
Code: [Select]

int dataPin = 8;
int bitlenght = -1;
char data[41];


Hier lees ik op pin 8 een bitlengte in van 1 en dit voor alle 41 tekens...

En hier vindt je het gehele programma:
http://forum.arduino.cc/index.php?topic=62753.0
of tenminste de engelse topic...

MAS3

Recent heb ik (uit een bijdrage van robtillaart) begrepen dat het beter is om die datapin (die never nooit niet (3 x negatief == negatief) zal veranderen), als een const te definiëren.
Ik meen dat het daarmee een vaste waarde word (die alleen in de compiler ruimte nodig heeft) en niet een variabele waarvoor ruimte in je "werkgeheugen" gereserveerd moet worden, en dat lijkt te worden bevestigd in de reference pages door de koppeling aan/relatie met #define.
Dat zal vermoedelijk niet gelden voor bitlength, die je hier als -1 definieert en niet als 1 zoals je zei.
-1 betekent vaak (nog) niet beschikbaar danwel leeg (nul is anders als leeg), maar er word zo wel ruimte voor gereserveerd.

Voor een korte sketch maakt dat vermoedelijk niet veel uit, maar het is wel beter als dit zo vroeg mogelijk word toegepast.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

nicoverduin


Recent heb ik (uit een bijdrage van robtillaart) begrepen dat het beter is om die datapin (die never nooit niet (3 x negatief == negatief) zal veranderen), als een const te definiëren.

Ik ben zelf meer een voorstander van
Code: [Select]

#define pin 12

Ik heb gemerkt dat bijvoorbeeld
Code: [Select]

const int pin = 12;

8 bytes code meer gebruikt zodra je een simpele move naar een variabele doet tov. de define.
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl

Jantje

#14
Feb 04, 2014, 04:31 pm Last Edit: Feb 04, 2014, 04:41 pm by Jantje Reason: 1

Ik ben zelf meer een voorstander van
Code: [Select]

#define pin 12

Ik heb gemerkt dat bijvoorbeeld
Code: [Select]

const int pin = 12;

8 bytes code meer gebruikt zodra je een simpele move naar een variabele doet tov. de define.


Sommige mensen houden niet van #define en #ifdef  :smiley-eek:
Maar ik vermoed dat die alleen maar kleine sketches maken of op een Arduino Mega of due werken.
Arduino zelf gebruikt String in de bridge library die geschreven is voor een yun die 32k (-4k bootloader) heeft  en dat terwijl je linino kunt gebruiken om die string operaties te doen :smiley-eek:
Met vriendelijke groet
Jantje
Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

Go Up