SD kártya eltávilítása és újrainicializálása

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: SD kártya eltávilítása és újrainicializálása

Hozzászólás Szerző: Robert »

while (!Serial) {
; } // ERRE A PONTOS VESSZŐRE NEM TUDOM MI SZÜKSÉG VOLT , DE NEM ÉN VOLTAM
// A FORDÍTÓT NEM ZAVARTA
Ha Leonardo/Pro Micro lapot használsz hagysz időt az USB inicializálásnak és a belső sorosport kiépülésének.


Tippek: Arduino - minták - SD alatt van a kiír-visszaolvas. DE:
Az sdcard.init(pin); esetén az adott pin-t tedd kimenetté (pinMode(pin, output); a setup()ban az sdcard.init(pin); előtt)! A legtöbb Arduino változatban a _bemenetre_ hagyott lábra adja ki a H illetve a L szintet.

500 mérés az nem 510 db?
Külön file-ba megy és a FAT16 esetén a gyökérkönyvtárba?
-> a FAT limitje ez. Root-ba max 512 bejegyzés lehet amiből a . jelenti az adott könyvtárat és a .. meg a felettes könyvtárat.

A kártyaolvasód igaz végez jelszintillesztést? Nem közvetlen I/O módban hajtod direktben a SD kártyát?
http://www.tavir.hu - a gazda :)
apeape
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2017. november 2. csütörtök, 11:01

Re: SD kártya eltávilítása és újrainicializálása

Hozzászólás Szerző: apeape »

Robert !
Tegnap este 23 óra körül végre megoldódott . Végül az " Arduino index fórumon " kaptam segítséget , ahol a 3250. hozzászólással indítottam .Most reggel akartam ide a Tavir fórumba írni, hogy senkit ne sétáltassak meg feleslegesen , mert az nem szép dolog. Most túl gyors voltál.
Ezt a programot kaptam :

Kód: Egész kijelölése

,---,-,-,-----
/*
SD card read/write

This example shows how to read and write data to and from an SD card file
The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4 (for MKRZero SD: SDCARD_SS_PIN)                                              // ÁTTETTEM D10LÁBRA

created Nov 2010
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe

This example code is in the public domain.

*/

#include <SPI.h>
#include <SD.h>

File myFile;

void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}


Serial.print("Initializing SD card...");

if (!SD.begin(10)) {                                                                  // ÁTÍRTAM    10 re
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");

// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
myFile = SD.open("datalog.csv", FILE_WRITE);

// if the file opened okay, write to it:
if (myFile) {
Serial.print("Writing to datalog.csv...");
myFile.println("testing 1, 2, 3.");
// close the file:
myFile.close();
Serial.println("done.");
} else {
// if the file didn't open, print an error:
Serial.println("error opening datalog.csv");
}

// re-open the file for reading:
myFile = SD.open("datalog.csv");
if (myFile) {
Serial.println("datalog.csv:");

// read from the file until there's nothing else in it:
while (myFile.available()) {
Serial.write(myFile.read());
}
// close the file:
myFile.close();
} else {
// if the file didn't open, print an error:
Serial.println("error opening datalog.csv");
}
}

void loop() {
// nothing happens after setup
}
--,-,-,-,-,-,--,-,--,
Ezt kellett változtatnom :

Kód: Egész kijelölése

** CS - pin 4 (for MKRZero SD: SDCARD_SS_PIN)                                              // ÁTTETTEM D10. LÁBRA
if (!SD.begin(10)) {                                                                  // ÁTÍRTAM    10 re
Mint írtam elsőre nem sikerült, de a másik kártyaolvasóval igen. Itt az eredmény :
-,,-,-,-,-,-,-

Initializing SD card...initialization done.
Writing to datalog.csv...done.
datalog.csv:
testing 1, 2, 3.
testing 1, 2, 3.
testing 1, 2, 3.
testing 1, 2, 3.
testing 1, 2, 3.
testing 1, 2, 3.
testing 1, 2, 3.
testing 1, 2, 3.
testing 1, 2, 3.
testing 1, 2, 3.
testing 1, 2, 3.
testing 1, 2, 3.
-,-,----,-,-,
Mindkét kártyaolvasó új , és mindkét kártya FAT16.-ra formázott és működnek .
Ha megtudom a hiba pontos okát , akkor megírom.
Amiket írtál, azt még nekem értelmeznem kell . Még nem értem a 60 napos tananyag végére.
Próbáltam képet beszúrni, de nem sikerült.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: SD kártya eltávilítása és újrainicializálása

Hozzászólás Szerző: Robert »

Kód: Egész kijelölése

if (!SD.begin(10)) { // ÁTÍRTAM 10 re
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
Ez a baj.
Hiányzik a megelőző sorból:

Kód: Egész kijelölése

pinMode(10, OUTPUT);
A CS láb így csak "gyenge" meghajtású !


Ez a mintaprogram a gyári, Arduinoban amúgy is meglevő.... :)
http://www.tavir.hu - a gazda :)
apeape
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2017. november 2. csütörtök, 11:01

Re: SD kártya eltávilítása és újrainicializálása

Hozzászólás Szerző: apeape »

Köszönöm . Ezt a sort értem ,bár úgy emlékszem ,hogy több programban ez is szerepelt . Most még megpróbálok minden variációt és beszámolok róla .
Majd teszek ezekre a lábakra ledes kijelzőt , pontosabban vele párhuzamos kimenetekre , hogy ne terheljem a vezérlő jeleket .
Most , hogy már működik , ki akarom gyomlálni az előző hibáim és rájönni miért tartott ez ennyi ideig. Valójában nekem ez csak játék, de nagyon élvezem .
Jankó
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2017. január 7. szombat, 13:12

Re: SD kártya eltávilítása és újrainicializálása

Hozzászólás Szerző: Jankó »

Sziasztok!

A segítségeteket szeretném kérni a következővel kapcsban:
Van egy arduino, ami egy mérlegről kapja az adatokat soros porton keresztül és az arduino pedig sd kártya és real time modul segítségével sd kártyára menti. Szeretném az adatokat pc-re is menteni, amivel nincs gond, mert valamilyen soros port terminálon megjelenik az adat és akár be tudok állítani automatikus mentést, ami egy txt fájlba nyomja az adatokat, viszont az a baj, hogy közben a mérlegetés arduinot ki és be kapcsoljuk és minden bekapcsolás után újra kell csatlakozni a terminálon a soros portra. Meg tudom oldani, hogy a pc automatikusan csatlakozzon soroson az arduinohoz, például amikor észleli a portot (bakpcsoltam az arduinot)? Tehát azt szeretném, illetve a lényeg az lenne, hogy akárhányszor bekapcsolom az arduinot és mérleget, akkor a mérlegről jövő adatok az arduinon keresztül valahogy a pcn automatikusan mentésre kerüljenek valamilyen formátumban. Bármilyen más megoldás is lehet a lényeg hogy ne kelljen a pc-hez nyúlni minden egyes arduino/mérleg bekapcsolás után, hanem az automatikusan lássa és a bejövő adat akár egy txt fájlba kerüljön. Bármilyen más megoldás is lehet csak működjön! :D
Sd kártya modul tök jól működik így, mert az arduino minden bekapcsolásánál inicializálja a kártyát, megnyitja a fájlt, menti majd bezárja és ugyanezt kéne nekem pc-re.


Előre is köszönöm a segítséget!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: SD kártya eltávilítása és újrainicializálása

Hozzászólás Szerző: Robert »

Ez szerintem PC oldalon programozást jelent :(
http://www.tavir.hu - a gazda :)
Válasz küldése