... Então, é complicado "voltar" de um C++ para um C, toda a mentalidade/paradoxo de classes e objetos é perdida... Eu acho que é possível sim fazer em C, mas devemos lembrar sempre que o C é uma linguagem estruturada, voltada a funções...
Então Ledod, estava pensando aqui em casa e é realmente mais difícil de se acostumar, mas eu estou até indo bem. Assim que acabar, mostro o que fiz. Achei meio complicado não utilizar o delay e ter que fazer funções com diferença de tempo e millis, mas ficou muito bom.
Você tem como me ajudar com algumas coisas Ledod? Sei que não tem experiência com Arduino, mas percebi que as bibliotecas são uma mistura de C e C++, como não manjo nenhum dos dois, estou num emparse...
Estou fazendo uma controladora de pedais com o Arduino com várias funções e recursos que vão ajudar o músico, porém estou com um problema na leitura de variáveis de um arquivo no cartão SD.
Vi várias pessoas fazendo isso, mas nenhuma das "80 páginas" que tentei mexer no código serviram para mim.
Vou colocar o código abaixo da resposta para Tiarlei Crist.
Gostaria de fazer uma função do tipo: readSD("arquivo.cfg",linha). Ele pegaria o valor de uma configuração como LCD=1 e criaria uma variável (poderia ser com o mesmo nome) e colocaria o valor dentro dela.
É um desejo antigo meu:
Ter pedais analógicos controlados digitalmente.
É o que estou tentando e acho que vou conseguir meu velho, porém terá que ser com o Arduino mega pela disponibilidade de pinos. O uno é muito limitado para o que quero fazer e além de poucas portas, tem apenas 30kb de memória. Até o momento todo o código está com 22k, no entanto só vou colocar aqui um pedaço para não ficar tão complexo.
Código com a biblioteca tinyFat:// Demo_readLn (C)2011 Henning Karlsen
// web:
http://www.henningkarlsen.com/electronics//
// This program is a demo of the readLn()-function.
//
// This demo will open a textfile named 'TEXTFILE.TXT'
// and display its contents in the Serial Monitor.
//
// SD card must be connected to the SPI port of your Arduino.
//
// Remember to select 115200 baud in the Serial Monitor.
//
#include <tinyFAT.h>
#include <avr/pgmspace.h>
char LCD;
byte res;
word result;
char textBuffer[2501];
char *verboseError(byte err)
{
switch (err)
{
case ERROR_MBR_READ_ERROR:
return "Error reading MBR";
break;
case ERROR_MBR_SIGNATURE:
return "MBR Signature error";
break;
case ERROR_MBR_INVALID_FS:
return "Unsupported filesystem";
break;
case ERROR_BOOTSEC_READ_ERROR:
return "Error reading Boot Sector";
break;
case ERROR_BOOTSEC_SIGNATURE:
return "Boot Sector Signature error";
break;
default:
return "Unknown error";
break;
}
}
void setup() {
// Initialize serial communication at 115200 baud
Serial.begin(115200);
Serial.println();
// Initialize tinyFAT
// You might need to select a lower speed than the default SPISPEED_HIGH
res=file.initFAT();
if (res!=NO_ERROR)
{
Serial.print("***** ERROR: ");
Serial.println(verboseError(res));
while (true) {};
}
Serial.println("This demo will display a textfile called 'TEXTFILE.TXT'");
Serial.println();
Serial.println("***** Send any character to start *****");
while (!Serial.available()) {};
Serial.flush();
Serial.println();
Serial.println();
if (file.exists("data.cfg"))
{
res=file.openFile("data.cfg", FILEMODE_TEXT_READ);
if (res==NO_ERROR)
{
result=0;
while ((result!=EOF) and (result!=FILE_IS_EMPTY))
{
result=file.readLn(textBuffer, 2500);
if (result!=FILE_IS_EMPTY)
{
if (result==BUFFER_OVERFLOW)
Serial.print(textBuffer);
else
Serial.print(textBuffer);
}
else
Serial.println("** ERROR: File is empty...");
}
Serial.println();
file.closeFile();
}
else
{
switch(res)
{
case ERROR_ANOTHER_FILE_OPEN:
Serial.println("** ERROR: Another file is already open...");
break;
default:
Serial.print("** ERROR: ");
Serial.println(res, HEX);
break;
}
}
}
else
Serial.println("** ERROR: 'TEXTFILE.TXT' does not exist...");
Serial.println();
Serial.println("***** All done... *****");
}
void loop()
{
}
Segundo a página da lib file.readLn(textBuffer, 2500); deveria retornar a próxima linha, mas não é o caso aqui. Não entendi como funciona.
Página da lib:
http://henningkarlsen.com/electronics/library.php?id=37