EN ESTE TUTORIAL EXPLICO COMO CREAR UN ARCHIVO EN SD, GUARDAR INFORMACIÓN EN DICHO ARCHIVO TIPO TEXTO, COMO BORRAR UN ARCHIVO Y COMO VER LA INFORMACIÓN CONTENIDA DENTRO DE LA SD
ARDUINO MEGA
MODULO SD
CONEXIONES:
ARDUINO UNO O MINI
MOSI - pin 11
MISO - pin 12
CLK - pin 13
CS - //ESTE PIN ES DE LIBRE ELECCIÓN SEGÚN DISPONIBILIDAD DE PINES
ARDUINO MEGA
MOSI - pin 51
MISO - pin 50
CLK - pin 52
** CS - //ESTE PIN ES DE LIBRE ELECCIÓN SEGÚN DISPONIBILIDAD DE PINES
PARA MAS INFORMACION SOBRE SPI https://www.arduino.cc/en/Reference/SPI
CÓDIGO ARDUINO:
#include <SPI.h>
#include <SD.h>
File myFile; // DECLARAMOS UN myfile
String nombrearchivo; // VARIABLE TIPO STRING PARA GUARDAR EL NOMBE ARCHIVO
String textoescribir; // DECLARAMOS UNA VARIABLE PARA GUARDAR EL TEXTO
boolean salir=true; // VARIABLE VERDADERO FALSO PARA EL CONTROL DE BUCLE
String estado; // VARIABLE PARA LLAMAR A LOS DIFERENTES PROCESOS
void setup() {
Serial.begin(9600); //INICIAMOS EL PUERTO SERIAL
Serial.print("INICIANDO TARJETA SD ..."); //MOSTRAMOS EL MENSAJE
if (!SD.begin(7)) { //INICIAMOS LA SD EL PIN 7
Serial.println("INICIACION FALLIDA"); //MOSTRAMOS EL MENSAJE EN CASO QUE SD //NO FUNCIONE CORRECTAMENTE
return;
}
Serial.println(" INICIADO CORRECTAMENTE");//SI LA SD SE HA INICIADO //CORRECTAMENTE MOSTRAMOS EL MENSAJE
Serial.println(" "); //DEJAMOS UN SALTO DE LINEA
mostrar(); //LLAMAMOS A LA FUNCIÓN PARA MOSTRAR UN MENSAJE
}
void loop() {
if (Serial.available()> 0){ //SOLO SI HAY DATOS EN COMUNICACIÓN SERIAL
estado=Serial.readString(); //GUARDAMOS LOS DATOS INTRODUCIDOS
}
if (estado.indexOf("1")>=0){ //SI CONTIENE 1
nombre(); //LLAMAMOS A LA FUNCIÓN
recibirtexto(); //LLAMAMOS A LA FUNCIÓN
}
if (estado.indexOf("2")>=0){ //SI CONTIENE 2
nombre(); //LLAMAMOS A LA FUNCIÓN
eliminar(); //LLAMAMOS A LA FUNCIÓN
}
if (estado.indexOf("3")>=0){ //SI CONTIENE 3
nombre(); //LLAMAMOS A LA FUNCIÓN
leersd(); //LLAMAMOS A LA FUNCIÓN
}
if (estado.indexOf("4")>=0){ //SI CONTIENE 4
myFile= SD.open("/");
listaarchivo(myFile,0); //LLAMAMOS A LA FUNCIÓN
Serial.println("PROCESO TERMINADO"); //MOSTRAMOS EL MENSAJE
mostrar(); //LLAMAMOS A LA FUNCIÓN
}
nombrearchivo=" "; //VACIAMOS LA VARIABLE
estado=" "; //VACIAMOS LA VARIABLE
//Serial.flush();
}
// ESTA FUNCIÓN LA UTILIZAMOS PARA MOSTRAR LAS OPCIONES DESPUÉS DE // REALIZAR ALGUNA DE ELLAS
void mostrar(){
Serial.println("PULSE 1 CREAR UN ARCHIVO E INTRODUCIR DATOS ");
Serial.println("PULSE 2 ELIMINAR UN ARCHIVO ");
Serial.println("PULSE 3 PARA LEER UN ARCHIVO ");
Serial.println("PULSE 4 PARA LEER DATOS SD ");
Serial.println(" ");
}
// ESTA FUNCIÓN NOS COGE EL NOMBRE DE ARCHIVO QUE QUEREMOS // LEER,ESCRIBIR, O BORRAR
void nombre(){
salir=true; // LA PONEMOS A VERDADERO PARA QUE EJECUTE EL BUCLE
Serial.println("ESCRIBA EL NOMBRE DE ARCHIVO TERMINADO en .txt ejemplo juan.txt Y PULSE INTRO");
while (salir) {
if (Serial.available()> 0){ // SI EL PUERTO SERIE RECIBE
nombrearchivo=Serial.readString(); //LEEMOS Y LO GUARDAMOS
nombrearchivo.trim(); //LE QUITAMOS AL STRING LOS CAMPOS VACIOS, SALTO DE PAGINA
salir=false; //SALIMOS DEL BUCLE
}
}
}
// ESTA FUNCION NO RECIBE EL TEXTO QUE QUEREMOS AÑADIR AL ARCHIVO
void recibirtexto(){
if (nombrearchivo.indexOf(".txt")>=0) //SI EL NOMBRE DEL ARCHIVO TERMINAR EN .TXT
{
salir=true; //LO PONEMOS EN VERDADERO PARA EJECUTAR EL BUCLE
Serial.println("nombre correcto");//MOSTRAMOS EN MENSAJE
Serial.println("ESCRIBA EL TEXTO A GUARDAR EN LA SD Y PULSE INTRO");//MOSTRAMOS EN MENSAJE
while (salir) //ENTRAMOS EN EL BUCLE
{
if (Serial.available()> 0) //SI RECIBE ALGUN DATO
{
textoescribir=Serial.readString();//LO GUARAMOS EN LA VARIABLE
textoescribir.trim(); //QUITAMOS LOS ESPACIOS EN BLANCO
Serial.println(textoescribir); //MOSTRAMOS EL TEXTO A GUARDAR
escribirsd(); //LLAMAMOS A LA FUNCION
salir=false; //TERMINAMOS EL BUCLE
}
}
}
}
// PARA LEER LA INFORMACION DEL ARCHIVO QUE HEMOS ELEGIDO
void leersd(){
myFile = SD.open(nombrearchivo); //ABRIMOS EL ARCHIVO
if (myFile) { // SI ES CORRECTO EL PROCESO
while (myFile.available()) {
Serial.write(myFile.read()); // LEEMOS EL ARCHIVO HASTA EL FINAL
}
myFile.close(); // CERRAMOS EL ARCHIVO
} else {
Serial.println("NO SE ABRIO EL ARCHIVO O NO EXSITE");
}
mostrar(); //LLAMOS A LA FUNCION
}
// PARA CREAR O ESCRIBIR EL ARCHIVO SELECIONADO CON EL TEXTO SELECIONADO
void escribirsd(){
myFile = SD.open(nombrearchivo, FILE_WRITE); //ABRIMOS O CREAAMOS UN ARCHIVO
if (myFile){ //SI EL PROCESO ES CORRECTO
myFile.println(textoescribir); // ESCRIBIMOS EL TEXTO EN EL ARCHICO
myFile.close(); // CERREMOS EL ARCHIVO
Serial.println("TEXTO GUARDADO CORRECTAMENTE"); // MOSTRAMOS EL MENSAJE
}
else{
Serial.println("ERROR A GUARDADAR TEXTO"); //MOSTRAMOS EL MENSAJE
}
mostrar(); //LLAMAMOS A LA FUNCION
}
// PARA ELIMINAR EL ARCHIVO QUE HEMOS SELECIONADO
void eliminar(){
if (SD.exists(nombrearchivo)) { // SI EXISTE EL ARCHIVO
SD.remove(nombrearchivo); // ELIMINAMOD EL ARCHIVO
Serial.println("ARCHIVO BORRADO"); // MOSTRAMOS EL MENSAJE
} else {
Serial.println("EL ARCHIVO NO EXISTE");// SI NO EXISTE EL ARCHIVO MOSTRAMOS EL MENSAJE
}
mostrar(); // LLAMAMOS A LA FUNCION
}
void listaarchivo(File dir, int numTabs){
while (true) {
File entry = dir.openNextFile();
if (! entry) {
// no more files
break;
}
for (uint8_t i = 0; i < numTabs; i++) {
Serial.print('\t');
}
Serial.print(entry.name());
if (entry.isDirectory()) {
Serial.println("/");
listaarchivo(entry, numTabs + 1);
} else {
// files have sizes, directories do not
Serial.print("\t\t");
Serial.println(entry.size(), DEC);
}
entry.close();
}
}
No hay comentarios:
Publicar un comentario