Olá
Quero utilizar um módulo de cartão SD no arduino para gravar algumas variáveis todas "int" que serão carregadas ao iniciar.
uma dela é a variavel q vai guardar o valor dia, para que o programa no caso haver uma falta de luz reiniciar de onde parou;
Como vocês me aconselham fazer? normalmente utilizamos um arquivo .ini na programação
Eu vejo a maioria dos projetos e tutoriais apenas gravação de dados em arquivo.txt ou leitura de string desses arquivos.
exemplo
Dados.ini
dia = 0
variavel1 = 11
variavel2 = 12
variavel3 = 15
variavel4 = 20
variavel5 = 22
config1 = 0
config2 = 1
Agradeço desde ja pela atenção 
Nunca fiz nada disto em arduino, mas parece boa ideia usar um formato standard.
Vê esta biblioteca:
Tem um exemplo com todas as funcionalidades.
Um aparte, acho que o formato .ini não leva ";" no fim de cada linha, mas sim no inicio de cada comentario
evil-noxx
agradeço a ajuda irei ler sobre o IniFile
e verdade é sem ;
mas no costume de terminar uma linha de comando com ; eu acabei colocando sem perceber 
Porque nao gravares isso antes na eeprom?Nao precisas de adicionar harware só para fazeres isso.
A eeprom é uma memoria nao volatil que mesmo apos o arduino perder a energia fica gravada e podes voltar a ler no proximo arranque se assim desejares.
Pensa nesta memoria como um pequeno disco rigido dentro de cada arduino.Esta lá sempre é so usar ...
HugoPT
Agradeço a ajuda
Já li sobre, mas como esses valores serão alterados de tempo em tempo, e eles que vão determinar como o programa irá funcionar.
Com o cartão SD fica mais fácil manipular esses dados.
essa biblioteca IniFile apenas pega os valores
eu necessito gravar tbm dados no arquivo .ini;
Alguem sabe como?
sombravarvas:
uma dela é a variavel q vai guardar o valor dia, para que o programa no caso haver uma falta de luz reiniciar de onde parou;
De que te serve o dia sem as horas?
Será alguma das outras variáveis a hora e talvez minutos?
Nota que a EEPROM não lida bem com muitos ciclos de escrita e se vais estar a actualizar tempo na EEPROM, é melhor arranjares outra solução.
Dito isto, o tempo terá de vir de algum lado e se for dum DS1307, podes usar a memória interna do mesmo para guardar hora/minutos, etc...
Quanto a guardar valores em ficheiros .ini... será a mesma coisa que escrever num ficheiro, não?? Uma coisa que podes pensar é que se guardares os dados em formato binário, não vais precisar de converter strings... coisa que, pelo que sei de .ini files, não será o caso.
bubulindo:
De que te serve o dia sem as horas?
Será alguma das outras variáveis a hora e talvez minutos?
Nota que a EEPROM não lida bem com muitos ciclos de escrita e se vais estar a actualizar tempo na EEPROM, é melhor arranjares outra solução.
Dito isto, o tempo terá de vir de algum lado e se for dum DS1307, podes usar a memória interna do mesmo para guardar hora/minutos, etc...
Quanto a guardar valores em ficheiros .ini... será a mesma coisa que escrever num ficheiro, não?? Uma coisa que podes pensar é que se guardares os dados em formato binário, não vais precisar de converter strings... coisa que, pelo que sei de .ini files, não será o caso.
O sombravarvas foi bem explicito quando disse que não vai usar EEPROM, mas sim um cartão SD.
Um ficheiro .ini tem uma sintax, não é como escrever num ficheiro arbitrario.
Já reparei que gostas muito de dar respostas incompletas, ou até mesmo responder sem dizer nada de jeito...
Anyway, realmente essa biblioteca só lê ficheiros ini, e implementar a parte de escrita não é trivial.
Sugiro então que procures outro formato, como por exemplo JSON
Uma biblioteca que lê e escreve no formato JSON: GitHub - bblanchon/ArduinoJson: 📟 JSON library for Arduino and embedded C++. Simple and efficient.
A principal desvantagem de usar JSON será não ser tão facil de editar à mão, mas tirando isso é semelhante. Tambem tens pares {variavel: valor}
evil-noxx:
O sombravarvas foi bem explicito quando disse que não vai usar EEPROM, mas sim um cartão SD.
Um ficheiro .ini tem uma sintax, não é como escrever num ficheiro arbitrario.
Já reparei que gostas muito de dar respostas incompletas, ou até mesmo responder sem dizer nada de jeito...
Tu por acaso importas-te de ler o resto do post? Reparaste que houve quem tenha dado a hipótese da EEPROM e que a definição do conteúdo das variáveis não diz nada acerca do que vão conter?
Eu dou respostas tão completas quanto as perguntas... Quando alguém chega aqui, deixa um excerto de código com variáveis chamadas de variavel1, variavel2, variavel3, esperas que faça todo um projecto com prós e contras de cada solução?
Um ficheiro .ini tem uma sintaxe... mas não deixa de ser um ficheiro de texto... o json também tem uma sintaxe... mas não deixa de ser um ficheiro de texto...
O ATmega328, tem 2kB de RAM... logo fazer seja o que for com texto (quando na realidade apenas se pretende guardar variáveis em formato binário), e andar a converter texto e/ou comparar texto é um desperdício.
Claro que aqui entra o requisito que não foi referido de "estas variáveis tem de ser passíveis de ser alteradas com um computador"... mas como o mesmo não foi especificado, a solução de escrever para um ficheiro em formato binário ainda é a mais robusta.
Mas claro... eu só digo parvoíces e tu és o senhor que tudo sabe de microcontroladores, logo espero que ninguém ouça o que estou a dizer... e sinceramente que o próximo post de quem iniciou a thread não seja "o meu Arduino faz reset por ele próprio.".
Evil-nox e bubulindo
obrigado pelas respostas
irei pesquisar sobre JSON
bubulindo
sobre a variável dia é apenas o que me interessa.
as outras variáveis são temperaturas,
um exemplo é
q
if dia (>=0 e <=3) {
tempDesejada = variavel1
}
if dia (>=4 e <=7) {
tempDesejada = variavel2
}
assim por diante.
é um controle de temperatura diário q dependendo os dias rodando ele irá controlar para que fique em uma temperatura diferente.
e esses valores serão alterados pelo usuário quase sempre antes de iniciar o Arduino.
Por isso penso em um cartão SD e não EEPROM.
Pensei em .INI pois estou acostumado a utilizar esses arquivos para configuração em Java.
eu não me expliquei melhor para o post não ficar muito longo.
mas agradeço novamente as informações
bubulindo:
Mas claro... eu só digo parvoíces e tu és o senhor que tudo sabe de microcontroladores, logo espero que ninguém ouça o que estou a dizer... e sinceramente que o próximo post de quem iniciou a thread não seja "o meu Arduino faz reset por ele próprio.".
Desta passa, mas que seja a ultima vez
E como vais saber que o dia está correcto? Ou que começa à meia noite?
As temperaturas são inicializadas pelo Arduino? Ou queres fazer isso directamente no cartão?
evil-noxx:
Desta passa, mas que seja a ultima vez
Que seja a última vez que... Quê?
Respondo na mesma medida ao que me dizem?
Tens cerca de 4000 posts dos meus para ver e perceber que quem vem aqui e dá informação acerca do que pretende e do que já tem feito, recebe sempre informação,e ajuda de volta. Agora, ao fim de tanto tempo, chateia quando alguém vem aqui, deixa uma mensagem meia critpica sem qualquer indicação do que pretende e temos de ser nós a pescar por informação.
Neste caso, não sei o que te levou a comentar acerca da inutilidade do meu post ou de estar pela metade... Que queres que faça, escreva aqui o código para guardar dados em binário?
Mas pronto, é impossível agradar a todos... Principalmente a quem julga que sabe mais.
Fica bem e até à próxima.
bubulindo:
E como vais saber que o dia está correcto? Ou que começa à meia noite?
As temperaturas são inicializadas pelo Arduino? Ou queres fazer isso directamente no cartão?
Esqueci de falar q alem do modulo SD tem o de RTC (SD1307). 
o problema mesmo esta em manipular dados dentro de um arquivo no cartão SD
Eu estou pensando em fazer em arquivo.txt mesmo
estou lendo sobre a função
seekSet(); mas ainda não entendi, como ela funciona realmente para alterar a variável dentro do arquivo.
Eu estou procurando um exemplo para fazer algu assim...
dados.txt
temp=18
dia=1
tempAtual=20
nesse caso, alterar apenas o valor 1 da variável dia. por outro que esta na variavel "calculoDia" q controla os dias do arduino ligado 