реклама:

Запись данных. Модуль SD карты. Часть 13.

Запись данных. Модуль SD карты.

Если вы не собираетесь записывать данные на SD карту, то подключение SD карты можно пропустить. Контроллер будет работать и без этой функции. Если вы хотите записывать все данные, то понадобиться модуль SD карты для Arduino. На самом деле, подключается все просто. Вам необходимо 6 проводков, чтобы сделать это.

Модуль SD карты для Arduino

Датчик DS18B20 в гильзе

Для питания модуля SD используется напряжение 3.3В Его можно взять либо напрямую с платы arduino (выход с маркировкой 3V3), именно его я использовал на схеме. Либо можно брать стандартные 5В но подключать их надо уже к контакту +5 на модуле. В таком случае модуль SD будет сам прообразовывать напряжение 5В в 3.3В

В первый раз, когда я подключал модуль SD я промучился несколько дней и спалил одну SD карту. Могу сказать, что у меня успешно работает mini SDHC карта на 4GB через переходник, который шел в комплекте. В результате экспериментов выяснилось, что чем больше размер кластера – тем лучше работает карта. С маленьким размером кластера карта вообще не определялась. Размер кластера задается во время форматирования SD карты на компьютере. Файловая система FAT32.

Форматирование SD карты для Arduino

Форматирование SD карты. Открыть карту в проводнике, правой кнопкой мышки и выбрать Форматировать...

Можно проверить результат подключения модуля SD выполнив вот этот пример – скетч. Он обнаруживает SD карту, и создает на ней файл с именем house4u.txt с текстом «hello SD»

Текст примера:

// include the library code:
#include <LiquidCrystal.h>

#include <SPI.h>
#include <SD.h>
// LCD пин управления яркостью
#define PWM_LED_PIN 3 
// LCD пин управления контрастом
#define PWM_LED_CONTRAST 4 

// LCD другие пины
#define PIN_LCD_RS 39
#define PIN_LCD_EN 41
#define PIN_LCD_D4 43
#define PIN_LCD_D5 45
#define PIN_LCD_D6 47
#define PIN_LCD_D7 49
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd( PIN_LCD_RS, PIN_LCD_EN, PIN_LCD_D4, PIN_LCD_D5, PIN_LCD_D6, PIN_LCD_D7 );
  
File myFile;  
const int chipSelect = 53; // MEGA CS
boolean HaveSDCard = false;

void setup() {   
  analogWrite( PWM_LED_PIN, 255 );
  analogWrite( PWM_LED_CONTRAST, 50 );  
  lcd.begin(16, 2); //настройка дисплея - 16x02
  lcd.print("House4u sol.proj"); //выводим приветсвие  
  lcd.setCursor(0, 1); //перевод курсора на 2 строку
  
  pinMode(chipSelect, OUTPUT);
  digitalWrite(chipSelect,HIGH);
  
  if (SD.begin(chipSelect) )
  {
    HaveSDCard = true;
    lcd.print("SD Card - OK");   
  }
  else
    lcd.print("SD Card - FAIL");  
    
  delay( 2000 );
}

void loop() 
{                
  if ( HaveSDCard )
  { 
    lcd.setCursor(0, 1); //перевод курсора на 2 строку 
    lcd.print("                ");
    lcd.setCursor(0, 1);
    
    myFile = SD.open("house4u.txt", FILE_WRITE);
    
    if ( !myFile )
      for ( int i = 0; i < 5; i++ )
         {
           if ( !myFile )
           {
              delay( 500 );
              myFile = SD.open("house4u.txt", FILE_WRITE );    
           }
         }  
         
    if ( myFile )
    {      
      myFile.println("hello SD");
      // close the file:
      delay(500);
      myFile.close();             
      myFile.flush();    
      lcd.print("Writing OK. DONE");          
    }
    else  
      lcd.print("Writing FAIL!"); 
  }
  
  HaveSDCard = false;
}

Результат выполнения примера:

Модуль SD карты для Arduino

#1 - нет SD карты. #2 - Карта найдена. #3 - Успешная запись в файл.


<< НазадДальше >>


Поделиться с друзьями:

Поддержка проекта