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ł
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");
}
}
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.
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
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
(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ć.
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 :-)