BT en SD te gelijktijdig.

Hallo Fellow Arduinoers.

Ik heb het volgende Uitdaging,

  • modulen zijn stackable
  • de BT Shield komt eerst, dan komt de SD Shield.
  • 2 programmas in een heb namelijk BT en voor SD die beide apart zijn opgebouwd met Softwareserial.h, en die andere met normale Serial.begin().
  • het Bluetoothapparaat is een bluetoothshield V2.2 waarbij ik softwarematig de pins op poort 2,3 ingesteld heb en hardwarematig
  • wat ik zie is het volgende. Hij schrijft data naar het Bluetooth apparaat en SDkaart te gelijktijdig, maar het Bluetooth signaal wat ik via de PC bekijk is echt een verzameling van komische Tekens. Tevens creeert hij wel de File aan op de SD kaart maar zonder ergens een greintje van data erin, tevens weet ik dat als de Bluetooth die komische tekens in dat BT schrijft dan kan ik zien dat ook myFile.flush gebruikt wordt want er ontstaat een onderbreking in de komische Tekens, en dan begint het reprotoire weer van voren.

wat ik geprobeerd heb is:
baudrate te veranderen, zowel in de software en BT leesprogrammatje.

nou is de vraag hoe los ik het op zodat ik toch een begrenst BT signaal heb wat ik kan bekijken met de computer,
en dat er in de File geschreven wordt.

in de aanhang bevindt zich de duale code.

IIG Hartelijk Dank alvast voor jullie moeite en het lezen.

met vriendelijke Groet

B

BTklein.ino (4.16 KB)

evermore99
Ben je zeker dat je niet 2 maal dezelfde pin gebruikt?
Met vriendelijke groet
Jantje

Hallo,

Ik heb de Code nog eens na gekeken en dat bleek dat ik de Pins 0,1 zowel voor BT als SD gebruik...
Dat schiet natuurlijk niet op...

Oplossing was SoftwareSerial.h te implementeren. en Software matig de Pins in te stellen...


Andere vraag hoe kan ik 50 regels data van 50 bytes in 1x oversturen en is dat überhaupt mogelijk?
Of moet ik gedeeltelijke memory daarvoor reserveren?

Beste Wensen al vast!!!
en tot in het nieuwe Jaar!!!

evermore99:
Andere vraag hoe kan ik 50 regels data van 50 bytes in 1x oversturen en is dat überhaupt mogelijk?
Of moet ik gedeeltelijke memory daarvoor reserveren?

Ik snap de vraag niet zo goed.
Als je 50 * 50 (=2500) bytes wil doorsturen moet je die op de een of andere manier in het geheugen hebben. Als je die in 1 keer doorstuurt zal je 2 keer zoveel geheugen moeten voorzien. Dit omdat doorsturen meestal betekend: kopiëren naar een buffer vanwaar het wordt doorgestuurd.

Met vriendelijke groet
Jantje

Hallo Jan, en Beste wensen Mensen!

dank je wel voor je antwoord, het heeft me wel wat dingen opgeklaard, en je hebt me in de goede richting laten denken.
alleen roept me het nog meer vragen op...waar jij misschien antwoordt op hebt.

Goed de vraag luid: Stel je voor ik maak een scheiding in de code door software.serial op te nemen voor de BTshield de (code is identisch voor het schrijven naar een File, alleen andere Pins, de data van de Sensoren datum/tijd/spanning/stroom/Temperatuur lopen op hetzelfde moment, hoe schrijf ik dit in een Buffer? en in welke Mem sla ik dit op?

2 Hoe zit dat met het schrijven naar een File schrijf met File.flush();? deze heeft toch ook een beperkte buffer memory nodig voor het schrijven naar een File, en of kan ik dan beide buffers als 1 buffer gebruiken? zodat ik werk geheugen bespaar/ en geen Mem konflikten heb?/ en of zijn hier nog andere mogelijkheden? en wat is het limiet van het schrijven naar een Memory en welke is het snelste?

3 En kan Überhaupt de BT Shield deze data van 2500bytes aan?

4 Wat moet ik alles veranderen? zodat het op zijn snelst loopt?

Tevens heb ik wel wat Tutorials gevonden voor snellere Data Processing en een klein beetje Memory.

Dank je wel voor de moeite en het lezen van de vragen!

Voor zover ik weet schrijft de SD library rechtstreeks naar disk. Dus daar is geen echte buffer meer na het aanroepen.
Voor de BT is er een tijdsaspect en zal 'naar ik vermoed) een buffer zijn die dan via een interrupt gelezen en doorgestuurd wordt.
Ik denk dat al je vragen opgelost zijn als je tijd erbij neemt. Met andere woorden
Je hebt niet zomaar ineens 2500 bytes. Als je de data die je vergaart doorstuurt vanaf dat je ze hebt; hangt het van de reële snelheid van het genereren en doorsturen van de data af hoeveel data je hebt op zijn ergst. Als het genereren trager is dan het doorsturen heb je nooit een piek. Indien het genereren sneller is kan je de dat al filteren op arduino niveau of het genereren vertragen. Alles hangt dan af van wat je bedoeling is.

Met vriendelijke groet
Jantje