может кому проигодится
- Войдите на сайт для отправки комментариев
Вс, 04/09/2016 - 22:11
нужно было записать данные с двух аналоговых датчиков .
в сети мало готового , но посмотрел видео джереми блума и подстроил его скеч под свои нужды .
решил поделится : критика приветствуется .
#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);
}
в commandst на sd карту нужно зарание записать время через сколко будет записыватся log
02 - 05: Добавь const
36: Refresh period
25-45: Прочитай про преобразование строки в число.
Спасибо почитаю а по поводу const наверное коряво скопировал .
Доброго времени . Скажите почему нужно const ,
почему refresh period,
И возможно ли записывать на sd быстрей чем милисекунды
И еще момент не записывало без компютера пришлось убрать все Serial и commandFile почему ?
сейчас работает через delay