может кому проигодится

yrik8407
yrik8407 аватар
Offline
Зарегистрирован: 08.03.2016

нужно было записать данные с двух аналоговых датчиков .

в сети мало готового , но посмотрел видео джереми блума и подстроил его скеч под свои нужды .

решил поделится : критика приветствуется .

#include <SD.h>
int CS_pin = 10;
int pow_pin = 8;
int pot_pin = 2;
int pot1_pin = 1;
float refresh_rate = 0.0;
long id = 1; 

void setup()
{
  Serial.begin(9600);
  Serial.println("Initializing Card");
  pinMode(CS_pin, OUTPUT);
  pinMode(pow_pin, OUTPUT);  
  digitalWrite(pow_pin, HIGH);

  if (!SD.begin(CS_pin))
  {
  Serial.println("Card Failure");
  return;  
  }
  Serial.println("Card Ready");

  File commandFile = SD.open("COMMANDS.txt");
  if (commandFile)
  {
    Serial.println("Reading Command File");

     float decade = pow(10, (commandFile.available() - 1));
    while(commandFile.available())
    {
      float temp = (commandFile.read() - '0');
      refresh_rate = temp*decade+refresh_rate;
      decade = decade/10;
    }
     Serial.print("Refresh Rate = ");
    Serial.print(refresh_rate);
    Serial.println("ms");
    commandFile.close();
  }
  else
  {
    Serial.println("Could not read command file.");
    return;
  }

   File logFile = SD.open("LOG.csv", FILE_WRITE);
  if (logFile)
   {
    logFile.println(", ,"); 
    String header = "ID, pot, pot1";
    logFile.println(header);
    logFile.close();
    Serial.println(header);
  }
   else
  {
    Serial.println("Couldn't open log file");
  }
  
}
void loop()
{
  int pot_val = analogRead(pot_pin);
  int pot1_val = analogRead(pot1_pin);
  String dataString = String(id) + ", " + String(pot_val) + ", " + String(pot1_val);
   File logFile = SD.open("LOG.csv", FILE_WRITE);
  if (logFile)
  {
   logFile.println(dataString);
    logFile.close();
    Serial.println(dataString);  
  }
   else
  {
    Serial.println("Couldn't open log file");
  }
   id++;
  
  delay(refresh_rate);
}

 

yrik8407
yrik8407 аватар
Offline
Зарегистрирован: 08.03.2016

в commandst на sd карту  нужно зарание записать время через сколко будет записыватся log 

Radjah
Offline
Зарегистрирован: 06.08.2014

02 - 05: Добавь const

36: Refresh period

25-45: Прочитай про преобразование строки в число.

yrik8407
yrik8407 аватар
Offline
Зарегистрирован: 08.03.2016

Спасибо почитаю а по поводу const наверное коряво скопировал .

yrik8407
yrik8407 аватар
Offline
Зарегистрирован: 08.03.2016

Доброго времени . Скажите почему нужно const ,
почему refresh period,
И возможно ли записывать на sd быстрей чем милисекунды

yrik8407
yrik8407 аватар
Offline
Зарегистрирован: 08.03.2016

И еще момент не записывало без компютера пришлось убрать все Serial и commandFile почему ?

сейчас работает через delay