Sfeed Ru

Создание и продвижение веб страниц

RSS 2.0

Arduino логгер на sd карту с безопасным извлечением и светодиодной индексацией записи..

loger

Когда я воспользовался стандартным логером из примеров я заметил что файлы начинали биться я решил подправить немного логер и вот что получилось:

Поскольку нет у меня модуля RTS (модуля реального времени), то время считает сам мк. Для безопасного извлечения нажмите кнопку и дождитесь светодиода (один будет гореть). Если при старте горит только один  то лог не ведется ( сбой при попытке записать или еще что то с картой ) …

loger

 


/*
SD card datalogger

This example shows how to log data from three analog sensors
to an SD card using the SD library.

The circuit:
* analog sensors on analog ins 0, 1, and 2
* SD card attached to SPI bus as follows:
** MOSI — pin 11
** MISO — pin 12
** CLK — pin 13
** CS — pin 10

created 24 Nov 2010
modified 9 Apr 2012
by Tom Igoe

This example code is in the public domain.

*/

#include

// On the Ethernet Shield, CS is pin 4. Note that even if it’s not
// used as the CS pin, the hardware CS pin (10 on most Arduino boards,
// 53 on the Mega) must be left as an output or the SD library
// functions will not work.
const int chipSelect = 10;

long previousMillis = 0;
int sek=0;//значение секунд
int mins=0;//значение минут
int chas=0;//значение часов

void set_pl(int l){
if(l==0) {
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
if(l==1) {
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
}
if(l==2) {
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
}
if(l==3) {
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
if(l>3) {
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
}

File dataFile ;
void setup()
{

pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
set_pl(0);

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

Serial.print(«Initializing SD card…»);
// make sure that the default chip select pin is set to
// output, even if you don’t use it:
pinMode(10, OUTPUT);

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

dataFile = SD.open(«datalog.txt», FILE_WRITE);
}

void loop()
{
if( analogRead(A4) >800 ){
//File dataFile = SD.open(«datalog.txt», FILE_WRITE);
if (dataFile) {
dataFile.println(«Stop record.»);
dataFile.close();
// print to the serial port too:
Serial.println(«Stop record.»);
}

digitalWrite(chipSelect, LOW);
while(true){
set_pl(0);
delay(500);
set_pl(1);
delay(500);
}
}

if (millis() — previousMillis >1000)
{
Serial.println(millis());
previousMillis = millis(); //запучкаем таймер
sek++;

if(sek>59)//если переменная секунда больше 59 …
{
sek=0;//сбрасываем ее на 0
mins++;//пишем +1 в переменную минута
}

if(mins>59)//если переменная минута больше 59 …
{
mins=0;//сбрасываем ее на 0
chas++;//пишем +1 в переменную час
}

if(chas>23)//если переменная час больше 23 …
{
chas=0;//сбрасываем ее на 0

}
}

// make a string for assembling the data to log:
String dataString = «»;
if(chas<10)
dataString+=»0″;
dataString +=chas;
dataString +=»:»;
if(mins<10)
dataString+=»0″;
dataString +=mins;
dataString +=»:»;
if(sek<10)
dataString+=»0″;
dataString +=sek;
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.

// if the file is available, write to it:
if (dataFile) {
set_pl(3);

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»);
while(true){
set_pl(0);
delay(500);
set_pl(2);
delay(500);
}
}
set_pl(1);

}

 

OFF

Categories: Arduino

Sfeed Sfeed


Счетчики

Яндекс.Метрика