#include <FS.h>
#include "SPIFFS.h"
#define LED_PIN 32
#define BUTTON_PIN 14
int controler = 0;
int delayTime = 150;
int tempo = 0;
String estadoLed;
int num=0;
String str;
String s;
// Função para sobrescrever o conteúdo do arquivo
void writeFile(String state, String path) { //escreve conteúdo em um arquivo
File rFile = SPIFFS.open(path, "a");//a para anexar
if (!rFile) {
Serial.println("Erro ao abrir arquivo!");
}
else {
Serial.print("tamanho");
Serial.println(rFile.size());
rFile.println(state);
Serial.print("Gravou: ");
Serial.println(state);
}
rFile.close();
}
// Função para ler o conteúdo do arquivo
String readFile(String path) {
Serial.println("Read file");
File rFile = SPIFFS.open(path, "r");//r+ leitura e escrita
if (!rFile) {
Serial.println("Erro ao abrir arquivo!");
}
else {
Serial.print("----------Lendo arquivo ");
Serial.print(path);
Serial.println(" ---------");
while (rFile.position() < rFile.size())
{
s = rFile.readStringUntil('\n');
s.trim();
Serial.println(s);
}
rFile.close();
return s;
}
}
void formatFile() {
Serial.println("Formantando SPIFFS");
SPIFFS.format();
Serial.println("Formatou SPIFFS");
}
// Inicializa o sistema de arquivos
void openFS(void) {
if (!SPIFFS.begin(true)) {
Serial.println("Erro ao abrir o sistema de arquivos");
} else {
Serial.println("Sistema de arquivos aberto com sucesso!");
}
}
void setup() {
Serial.begin(115200);
pinMode(BUTTON_PIN, INPUT_PULLUP); // Usar pull-up interno
pinMode(LED_PIN, OUTPUT);
Serial.println("inicio");
delay(200);
// formatFile();
Serial.println("abrir arquivo");
openFS();
num = random(5000);//gerando numero aleatorio para salvar no arquivo
str = String(num);//convertendo o int para String
writeFile(str , "/logsAula.txt");
Serial.println("ler arquivo");
String test = readFile("/logsAula.txt");
Serial.println("ler arquivo");
estadoLed = readFile("/estadoLed.txt");
if (estadoLed == "ligado") {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
}
void loop() {
if ((millis() - tempo) > delayTime && digitalRead(BUTTON_PIN) == LOW) {
tempo = millis();
controler = (controler + 1) % 2;
if (controler == 0) {
writeFile("desligado", "/estadoLed.txt");
digitalWrite(LED_PIN, LOW);
}
if(controler == 1){
writeFile("ligado", "/estadoLed.txt");
digitalWrite(LED_PIN, HIGH);
}
}
delay(200);
}