Pages: [1]   Go Down
Author Topic: Using SD library with analog pins  (Read 230 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I'm running out of pins, so I want to use the analog pins as digital for the SD library

Normal       My choice
pin 10          pin 15, A1 for CS
pin 11          pin 16, A2 for MOSI
pin 13          pin 17, A3 for SCK
pin 12          pin 18, A4 for MISO

I changed these pin assignments in the pins_arduino.h file which appears to set them, but my sample code does not initialize the SD library.

Any suggestions? I suspect I need other changes deep in the library. Here's my code.

Thanks, Theron Wierenga


#include <SD.h>

File myFile;

void setup()
{
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.print("Initializing SD card...");
  // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
  // Note that even if it's not used as the CS pin, the hardware SS pin
  // (10 on most Arduino boards, 53 on the Mega) must be left as an output
  // or the SD library functions will not work.
   pinMode(10, OUTPUT);
   pinMode(15, OUTPUT);    // CS or SS
   pinMode(16, OUTPUT);    // MOSI
   pinMode(17, OUTPUT);    // SCK clock
   pinMode(18, INPUT);     // MISO
     
   
  if (!SD.begin(15)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");
 
  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile = SD.open("test_new.txt", FILE_WRITE);
 
  // if the file opened okay, write to it:
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    // close the file:
    myFile.close();
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
 
  // re-open the file for reading:
  myFile = SD.open("test_new.txt");
  if (myFile) {
    Serial.println("test.txt:");
   
    // read from the file until there's nothing else in it:
    while (myFile.available()) {
        Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}

void loop()
{
    // nothing happens after setup
}
Logged

SE USA
Offline Offline
Faraday Member
**
Karma: 41
Posts: 3783
@ssh0le
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

those functions are dedicated to those pins in hardware, you might be able to use software SPI but its going to be slow, and may be a pain to get the lib to work. I would just move whatever you have on the hardware SPI pins to the analog port
Logged


Offline Offline
Full Member
***
Karma: 4
Posts: 187
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

SD pin assignments in the Sd2PinMap.h
this is path but check according your library path
\arduino-1\libraries\SD\utility
Logged

From Idea To Invention

Pages: [1]   Go Up
Jump to: