• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
AMEGA + karta sd zapis jednego rekordu
#1
Witam,

Wyskoczył mi problem z kartą SD i Amega a mianowicie po wgraniu softu z przykładów Datalogger zapis następuje tylko jednego rekordu , monitorze serial widać prawidłowe działanie programu co może być tego przyczyną ?

Michał
 
Odpowiedź
#2
Pokaż ten kod...
Jeżeli pomogłem, to poproszę o punkt reputacji Big Grin
 
Odpowiedź
#3
Kod:
#include <SPI.h>
#include <SD.h>

const int chipSelect = 53;

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...");

 // see if the card is present and can be initialized:
 if (!SD.begin(chipSelect)) {
   Serial.println("Card failed, or not present");
   // don't do anything more:
   return;
 }
 Serial.println("card initialized.");
}

void loop() {
 // make a string for assembling the data to log:
 String dataString = "";

 // read three sensors and append to the string:
 for (int analogPin = 0; analogPin < 3; analogPin++) {
   int sensor = analogRead(analogPin);
   dataString += String(sensor);
   if (analogPin < 2) {
     dataString += ",";
   }
 }

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

 // if the file is available, write to it:
 if (dataFile) {
   dataFile.println(dataString);
   dataFile.close();
   // print to the serial port too:
   Serial.println(dataString);
 }
 // if the file isn't open, pop up an error:
 else {
   Serial.println("error opening datalog.txt");
 }
}
 
Odpowiedź
#4
Wgrałem Twój program i nieco go uporządkowałem.
Zmieniłem tylko dostęp do karty SD z pinu 53 na 10, bo testowałem na Arduino UNO.
Wszystko działa dobrze.

Poniżej screen z zapisanego pliku na karcie i oczywiście listing programu.

[Obrazek: karta_sd.jpg]

Kod programu:
Kod:
// ----------------------------------------------------------------------
// Karta SD
// ----------------------------------------------------------------------
#include <SPI.h>
#include <SD.h>

// Dla Arduino UNO ustawione: 10, dla Arduino MEGA ustawić: 53
const int chipSelect = 10;

// ----------------------------- SETUP ----------------------------------
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...");

 // see if the card is present and can be initialized:
 if (!SD.begin(chipSelect))
 {
   Serial.println("Card failed, or not present");
   // don't do anything more:
   return;
 }
 Serial.println("card initialized.");
}

// ------------------------------- LOOP ----------------------------------
void loop()
{
 // make a string for assembling the data to log:
 String dataString = "";

 // read three sensors and append to the string:
 for (int analogPin = 0; analogPin < 3; analogPin++)
 {
   int sensor = analogRead(analogPin);
   dataString += String(sensor);
   if (analogPin < 2)
   {
     dataString += ",";
   }
 }

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

 // if the file is available, write to it:
 if (dataFile)
 {
   dataFile.println(dataString);
   dataFile.close();
   // print to the serial port too:
   Serial.println(dataString);
 }
 // if the file isn't open, pop up an error:
 else
 {
   Serial.println("error opening datalog.txt");
 }
}

Pozdrawiam,
ANT
Jeżeli pomogłem, to poproszę o punkt reputacji Big Grin
 
Odpowiedź
#5
A mój log wygląda tak na monitorze

Initializing SD card...card initialized.
207,204,200

the end :-)

A jest możliwe ,że jakieś biblioteki się "gryzą" ;-)
Najdziwniejsze jest to ,że to działało ... ale nie wiem co jest teraz tego przyczyną ,że wygląda to tak a nie inaczej
 
Odpowiedź
#6
(26-11-2017, 13:57)ardiscus napisał(a): A mój log wygląda tak na monitorze

Initializing SD card...card initialized.
207,204,200

the end :-)

A jest możliwe ,że jakieś biblioteki się "gryzą" ;-)
Najdziwniejsze jest to ,że to działało ... ale nie wiem co jest teraz tego przyczyną ,że wygląda to tak a nie inaczej

Jeżeli kod jest OK, bo u mnie działa bez problemu to trzeba szukać innej przyczyny.

Weź pod uwagę takie rzeczy jak:

- ja testowałem na starym poczciwym IDE 1.0.5 r-2 oraz Adruino UNO,
- być może masz coś z bibliotekami,
- może to być również problem sprzętowy.. może coś nie halo z samą kartą...

Trudno coś mi więcej doradzić.
Jeżeli pomogłem, to poproszę o punkt reputacji Big Grin
 
Odpowiedź
#7
Karta ok , sprawdziłem dwie
mam arduino 1.8.5
do wczoraj było ok , faktycznie może coś z bibliotekami robiłem aktualizację tylko jak odszukać , które stoją za tym :-)
 
Odpowiedź
  


Skocz do:


Przeglądający: 2 gości