SD карта

bit
Offline
Зарегистрирован: 07.05.2012

 

Привет всем , пытаюсь подцепить карту SD по этим примерам но ардуино не как не хочет

с ней работать вроде всё правильно подключаю и всё не как не робит пишет Initializing SD card...initialization failed!

http://habrahabr.ru/post/115176/

http://www.polesite.ru/?p=1193

krikus
Offline
Зарегистрирован: 22.07.2011

У вас какая плата Ардуино?

bit
Offline
Зарегистрирован: 07.05.2012

 

На AT1280

bit
Offline
Зарегистрирован: 07.05.2012

 

 подключил вроде всё верно , и карту одну отформатировал в FAT32, а другую в FAT  я как понял это тоже самое как и FAT16.

Но всё без резул ,  в чём может быть проблема подскажите пожалуйста?

krikus
Offline
Зарегистрирован: 22.07.2011

Напишите: как у вас порты к SD/MMC подключены. Бывает частая ошибка - на arduino1280/2560 CS подключен не туда, либо в скетче неправильно определено.

На ArduinoMega - CS пин должен быть подключен к 53пину.(разумеется через преобразовательную схему 5->3.3)

В скетче должна быть строчка SD.begin(53)

bit
Offline
Зарегистрирован: 07.05.2012

krikus пишет:

Напишите: как у вас порты к SD/MMC подключены. Бывает частая ошибка - на arduino1280/2560 CS подключен не туда, либо в скетче неправильно определено.

На ArduinoMega - CS пин должен быть подключен к 53пину.(разумеется через преобразовательную схему 5->3.3)

В скетче должна быть строчка SD.begin(53)

 

 

А я смотрю на эти цифры в скетч ** MOSI - pin 11

 ** MISO - pin 12

 ** CLK - pin 13

 ** CS - pin 4

 И цепляюсь к ним , а это распиновка UNO, пару дней голову ломал , а патом только после ваших цифры до меня и дошло  что мега и уно совершенно разные пины

Спасибо вам за подсказку всё заработ.

 

bit
Offline
Зарегистрирован: 07.05.2012

 

Подскажите почему когда я подключаюсь 53 пину SD карта не работает, всё подключено по схеме http://habrahabr.ru/post/115176/

А так всё на 5 проводках работает без 53 пина?

krikus
Offline
Зарегистрирован: 22.07.2011

У SD/MMC есть спец. нога - CS (ChipSelect). У Ардуино Уно - есть Hardware SPI c CS(На 10-ои пине). Соответственно инициализация библиотеки будет: SD.begin(10); (как раз как на Хабрахабре) либо SD.begin(SS_PIN); (SS_PIN - константа бибилотеки контроллера)

У всех АдруиноМега то же есть Hardware SPI с CS(но уже на 53пине). Инициализация должна быть такой: SD.begin(53); либо SD.begin(SS_PIN);

Надеюсь, правильно изложил.

step962
Offline
Зарегистрирован: 23.05.2011

krikus пишет:

Надеюсь, правильно изложил.

Не совсем.

"Стандартный" номер CS (он же SS) имеет значение только для работы микроконтроллера в режиме Slave. В режиме Master CS-пин может быть любым (из пока еще свободных).

Именно это обстоятельство позволяет управлять по SPI любым (разумным) количеством подчиненных устройств. Все они вешаются на три одних и тех же вывода микроконтроллера MOSI/MISO/SCK. А вот линия CS/SS каждого отдельного ведомого устройства должна подключаться к разным пинам микроконтроллера. И дальше, устанавливая в LOW уровень на том или ином пине микроконтроллера (сконфигурированного  в качестве селектора соответствующего устройства: "CS или SS"->"Chip Select/Slave Select"), можно общаться с любым из устройств, подключенных по SPI-шине.

ales2k
Offline
Зарегистрирован: 25.02.2013

Кстати не все SD карты имеют поддержку SPI режима. Мне попадалась такая. Долго не мог врубиться почему не работает, пока PDF на нее не нашел.

bit
Offline
Зарегистрирован: 07.05.2012

Спасибо за помощи и за разъяснения

bit
Offline
Зарегистрирован: 07.05.2012

 

Подскажите  пожалуйста почему на SD карете  время не сохраняется а только

 

2:1:0

2:1:0

2:1:0

2:1:0

2:1:0

2:1:0

2:1:0

 


  Serial.print("Initializing SD card...");
  
  
   
  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");
    }
    
    if (val == '2') {              
   
                
  myFile = SD.open("test.txt", FILE_WRITE);
  
  
  if (myFile) {
   
    
 

    Serial.print("Writing to test.txt...");
    myFile.print(DS1307_HR);
     myFile.print(":");
      myFile.print(DS1307_MIN);
       myFile.print(":");
        myFile.println(DS1307_SEC);
        
    
	// close the file:
    myFile.close();
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error ope

 

bit
Offline
Зарегистрирован: 07.05.2012

Ой всё нашел где косяк)))))

 

bit
Offline
Зарегистрирован: 07.05.2012

Привет всем подскажите пожалуйста не как не получается разобраться.

 Код таков по состоянию кнопки на sd  карту сохраняется  время нажатия кнопки в время отпускания кнопки, проблема токая с двумя кнопками всё чудесно работает но когда прописываешь тритию пиши error

 




  }
  else if(read_end)
  {
    if(slovo.substring(0,15) == "Sd Cart Load")
    {
      delay(500);
      Serial.println("Sd Cart Load");
      delay(1000)
     ;
      Serial.println("ok");
      delay(1000);
         while (!Serial) {
    ; 
  }


  Serial.print("Initializing SD card...");
  
  
   
  if (!SD.begin(4)) {
   
  }
  Serial.println("initialization done.");
  delay(1000);
   Serial.println("ok");
   delay(1000);
   
   
    myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");
    
   
    while (myFile.available()) {
     Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
   
    Serial.println("error opening test.txt");
   
     
   
   
    }
    
     delay(1000);
     Serial.println("ok");
     
    
    }
     else {
       Serial.println("ERROR");
     }
    
    
    read_end = 0;
    slovo = "";
  
}



///////////////////////////////////////////////////////////////////////



/// Если 4 кнопка нажата сохраняем в SD 

{
char but4 = digitalRead(knop4);
  if(but4 && !state4)
  {
     
      while (!Serial) {
    ; 
  }


 if (!SD.begin(4)) {
   
  }
 delay(10);
    
     myFile = SD.open("test.txt", FILE_WRITE);
  
  if (myFile) {
    Serial.print("4 knop Open>>>Writing to test.txt...");
    
    myFile.print("4 knop Open>>>");
       myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
    myFile.close();
    Serial.println("done.");
  } else {
   
    Serial.println("error opening test.txt");
  }
  
  
   
     state4 = 1;
  }
  
 /// Если 4 кнопка не  нажата сохраняем в SD 
 else if(!but4 && state4)
 {
 
      while (!Serial) {
    ; 
  }


 if (!SD.begin(10)) {
   
  }
 delay(10);
    
     myFile = SD.open("test.txt", FILE_WRITE);
  
  if (myFile) {
    Serial.print("4 knop Close>>>Writing to test.txt...");
    
    myFile.print("4 knop Close>>>");
        myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
    myFile.close();
    Serial.println("done.");
  } else {
  
    Serial.println("error opening test.txt");
     
  }
  
  
    state4 = 0;
 }
}




///////////////////////////////////////////////////////////////////////

delay(10);

/// Если 6 кнопка нажата сохраняем в SD 
{
char but6 = digitalRead(knop6);
  if(but6 && !state6)
  {
     
      while (!Serial) {
    ; 
  }


 if (!SD.begin(4)) {
   
  }
 delay(10);
    
     myFile = SD.open("test.txt", FILE_WRITE);
  
  if (myFile) {
    Serial.print("6 knop Open>>>Writing to test.txt...");
    
    myFile.print("6 knop Open>>>");
       myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
    myFile.close();
    Serial.println("done.");
  } else {
   
    Serial.println("error opening test.txt");
  }
  
  
   
     state6 = 1;
  }
  
 /// Если 6 кнопка не  нажата сохраняем в SD 
 else if(!but6 && state6)
 {
 
      while (!Serial) {
    ; 
  }


 if (!SD.begin(10)) {
   
  }
 delay(10);
    
     myFile = SD.open("test.txt", FILE_WRITE);
  
  if (myFile) {
    Serial.print("6 knop Close>>>Writing to test.txt...");
    
    myFile.print("6 knop Close>>>");
        myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
    myFile.close();
    Serial.println("done.");
  } else {
  
    Serial.println("error opening test.txt");
     
  }
  
  
    state6 = 0;
 }
}



Geronimo
Offline
Зарегистрирован: 06.05.2013

Это правильно, что кнопка knop4 висит на 4-том пине вместе с 4-тым пином SD?

bit
Offline
Зарегистрирован: 07.05.2012

Нет это не верно я поменял на 8 но всё равно не работает и 4 pin я к SD карте CS  не подключал только подтянул 3.3к минус.

bit
Offline
Зарегистрирован: 07.05.2012

Странность та в том то что две кнопки работаю нормально но когда прописываешь трению не хочет работать пишет error opening test.txt

 в чём может быть проблема?

Geronimo
Offline
Зарегистрирован: 06.05.2013

вы кучу раз пишете

 if (!SD.begin(4)) {

085    
086   }
087   Serial.println("initialization done.");

непонятно зачем

 

Geronimo
Offline
Зарегистрирован: 06.05.2013

у вас так отформатирован код... возможно напутали где-то со скобками и пытаетесь два раза открыть фаил.

bit
Offline
Зарегистрирован: 07.05.2012

Вот почистил код  с 2 кнопками работает , а с 3 не хочет .

код 2 кнопки






/// Если 8 кнопка нажата сохраняем в SD 


char but8 = digitalRead(knop8);
  if(but8 && !state8)
  {
     
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
     myFile = SD.open("test.txt", FILE_WRITE);
  
  if (myFile) {
    Serial.print("8 knop Open>>>Writing to test.txt...");
    
    myFile.print("8 knop Open>>>");
       myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
    myFile.close();
    Serial.println("done.");
  } 
  
   
     state8 = 1;
  }
  
 /// Если 4 кнопка не  нажата сохраняем в SD 
 else if(!but8 && state8)
 {
 
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
     myFile = SD.open("test.txt", FILE_WRITE);
  
  if (myFile) {
    Serial.print("8 knop Close>>>Writing to test.txt...");
    
    myFile.print("8 knop Close>>>");
        myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
    myFile.close();
    Serial.println("done.");
  } 
  
  
    state8 = 0;
 }






///////////////////////////////////////////////////////////////////////

delay(10);

/// 6 knop ON   сохроняет названия и время включения

char but6 = digitalRead(knop6);
  if(but6 && !state6)
  {
     
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
     myFile = SD.open("test.txt", FILE_WRITE);
  
  if (myFile) {
    Serial.print("6 knop Open>>>Writing to test.txt...");
    
    myFile.print("6 knop Open>>>");
       myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
    myFile.close();
    Serial.println("done.");
  } 
  
  
   
     state6 = 1;
  }
 else if(!but6 && state6)
 {
 
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
     myFile = SD.open("test.txt", FILE_WRITE);
  
  if (myFile) {
    Serial.print("6 knop Close>>>Writing to test.txt...");
    
    myFile.print("6 knop Close>>>");
        myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
    myFile.close();
    Serial.println("done.");
  } 
  
  
    state6 = 0;
 }






///////////////////////////////////////////////////////////////////////

delay(10);






}

 

 

Код 3 кнопки

 





char but8 = digitalRead(knop8);
  if(but8 && !state8)
  {
     
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
     myFile = SD.open("test.txt", FILE_WRITE);
  
  if (myFile) {
    Serial.print("8 knop Open>>>Writing to test.txt...");
    
    myFile.print("8 knop Open>>>");
       myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
    myFile.close();
    Serial.println("done.");
  } 
  
   
     state8 = 1;
  }
  
 /// Если 4 кнопка не  нажата сохраняем в SD 
 else if(!but8 && state8)
 {
 
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
     myFile = SD.open("test.txt", FILE_WRITE);
  
  if (myFile) {
    Serial.print("8 knop Close>>>Writing to test.txt...");
    
    myFile.print("8 knop Close>>>");
        myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
    myFile.close();
    Serial.println("done.");
  } 
  
  
    state8 = 0;
 }






///////////////////////////////////////////////////////////////////////

delay(10);

/// 6 knop ON   сохроняет названия и время включения

char but6 = digitalRead(knop6);
  if(but6 && !state6)
  {
     
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
     myFile = SD.open("test.txt", FILE_WRITE);
  
  if (myFile) {
    Serial.print("6 knop Open>>>Writing to test.txt...");
    
    myFile.print("6 knop Open>>>");
       myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
    myFile.close();
    Serial.println("done.");
  } 
  
  
   
     state6 = 1;
  }
 else if(!but6 && state6)
 {
 
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
     myFile = SD.open("test.txt", FILE_WRITE);
  
  if (myFile) {
    Serial.print("6 knop Close>>>Writing to test.txt...");
    
    myFile.print("6 knop Close>>>");
        myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
    myFile.close();
    Serial.println("done.");
  } 
  
  
    state6 = 0;
 }






///////////////////////////////////////////////////////////////////////

delay(10);






/// 5 контур ON   сохроняет названия и время включения

char but5 = digitalRead(knop5);
  if(but5 && !state5)
  {
     
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
     myFile = SD.open("test.txt", FILE_WRITE);
  
  if (myFile) {
    Serial.print("5 knop Open>>>Writing to test.txt...");
    
    myFile.print("5 knop Open>>>");
       myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
    myFile.close();
    Serial.println("done.");
  } 
  
  
   
     state5 = 1;
  }
 else if(!but5 && state5)
 {
 
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
     myFile = SD.open("test.txt", FILE_WRITE);
  
  if (myFile) {
    Serial.print("5 knop Close>>>Writing to test.txt...");
    
    myFile.print("5 knop Close>>>");
        myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
    myFile.close();
    Serial.println("done.");
  } 
  
  
    state5 = 0;
 }



}

 

bit
Offline
Зарегистрирован: 07.05.2012

В чём проблема может ещё быть?

bit
Offline
Зарегистрирован: 07.05.2012

Усё разобрался )))

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Вот молодец, сам спросил, сам разобрался! (скупая мужская слеза)

Еще бы написал с чем разобрался и почему глючило.. подробненько, и тропа народная не зарастет.. а то ведь завтра по вашим стопам еще толпа ломанется, а вы не обьяснили ничего...

Ну это, как бы оффтоп пожелания...

Geronimo
Offline
Зарегистрирован: 06.05.2013

И делайте нормальные отступы.. не очень понятно какая скобка  какой соответствует, да и некрасиво, когда код "прыгает"

 

к примеру

 

188   if(but5 && !state5)
189   {
190      
191       while (!Serial) {
192     ;
193

  }

 

я решил что } соответствует скобке if а не while

 

bit
Offline
Зарегистрирован: 07.05.2012

Корявенько но работает , толком конечно и не понял почему так получается.

 

 

void loop()
{
  myFile = SD.open("test.txt", FILE_WRITE);
  // выводим данные с SD карты в сериал  else <<Sd Cart Load>>
 { if(Serial.available())
  {
    delay(2);
    slovo += (char)Serial.read();  
    read_end = 1; 
  }
  else if(read_end)
  {
    if(slovo.substring(0,15) == "Sd Cart Load")
    {
       myFile.close();
      delay(500);
      Serial.println("Sd Cart Load");
      delay(1000)
     ;
      Serial.println("ok");
      delay(1000);
         while (!Serial) {
    ; 
  }


  Serial.print("Initializing SD card...");
  
  
   
  if (!SD.begin(4)) {
   
  }
  Serial.println("initialization done.");
  delay(1000);
   Serial.println("ok");
   delay(1000);
   
    
    myFile = SD.open("test.txt");
  if (myFile) {
   
    Serial.println("test.txt:");
   
    while (myFile.available()) {
     Serial.write(myFile.read());
    }
    // close the file:
     myFile.close();
  
  } else {
   
    Serial.println("error opening test.txt");
   
     
   
   
    }
    
     delay(1000);
     Serial.println("ok");
     
    
    }
     else {
       Serial.println("ERROR");
     }
    
    
    read_end = 0;
    slovo = "";
  
}
  }


///////////////////////////////////////////////////////////////////////




///////////////////////////////////////////////////////////////////////

delay(10);

/// 6 knop ON   сохроняет названия и время включения

char but6 = digitalRead(knop6);
  if(but6 && !state6)
  {
     Serial.print("6 knop Open>>>Writing to test.txt..."); 
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
   
  
  if (myFile) {
   
    
    myFile.print("6 knop Open>>>");
       myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
  
  
   
     state6 = 1;
  }
 else if(!but6 && state6)
 {
 Serial.print("6 knop Close>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
   
  
  if (myFile) {
  
    
    myFile.print("6 knop Close>>>");
        myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
 
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
     
  }
  
  
    state6 = 0;
 }




///////////////////////////////////////////////////////////////////////

delay(10);

/// 5 контур ON   сохроняет названия и время включения

char but5 = digitalRead(knop5);
  if(but5 && !state5)
  {
      Serial.print("5 knop Open>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
    
  
  if (myFile) {
   
    
    myFile.print("5 knop Open>>>");
       myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
  
  
   
     state5 = 1;
  }
 else if(!but5 && state5)
 {
 Serial.print("5 knop Close>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }



 delay(10);
    
   
  
  if (myFile) {
    
    
    myFile.print("5 knop Close>>>");
        myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
 
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
     
  }
  
  
    state5 = 0;
 }




///////////////////////////////////////////////////////////////////////

delay(10);

/// 7 контур ON   сохроняет названия и время включения

char but7 = digitalRead(knop7);
  if(but7 && !state7)
  {
      Serial.print("7 knop Open>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
    
  
  if (myFile) {
   
    
    myFile.print("7 knop Open>>>");
       myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
  
  
   
     state7 = 1;
  }
 else if(!but7 && state7)
 {
 Serial.print("7 knop Close>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }



 delay(10);
    
    
  
  if (myFile) {
    
    
    myFile.print("7 knop Close>>>");
        myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
     
  }
  
  
    state7 = 0;
 }



///////////////////////////////////////////////////////////////////////

delay(10);

///////////////////////////////////////////////////////////////////////

delay(10);

/// 8 контур ON   сохроняет названия и время включения

char but8 = digitalRead(knop8);
  if(but8 && !state8)
  {
      Serial.print("8 knop Open>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
    
  
  if (myFile) {
   
    
    myFile.print("8 knop Open>>>");
       myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
  
  
   
     state8 = 1;
  }
 else if(!but8 && state8)
 {
 Serial.print("8 knop Close>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }



 delay(10);
    
    
  
  if (myFile) {
    
    
    myFile.print("8 knop Close>>>");
        myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
       
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
     
  }
  
  
    state8 = 0;
 }



///////////////////////////////////////////////////////////////////////

delay(10);

  myFile.close();




}

 

__Alexander
Offline
Зарегистрирован: 24.10.2012

привыкайте создавать функции.

например, постоянно повторяющуюся такую хрень

435	    myFile.print("8 knop Close>>>");
436	        myFile.print(RTC.get(DS1307_HR,true));
437	     myFile.print(":");
438	      myFile.print(RTC.get(DS1307_MIN,false));
439	       myFile.print(":");
440	        myFile.print(RTC.get(DS1307_SEC,false));
441	        myFile.print(">>>");
442	          myFile.print(RTC.get(DS1307_DATE,false));
443	     myFile.print("/");
444	      myFile.print(RTC.get(DS1307_MTH,false));
445	       myFile.print("/");
446	        myFile.println(RTC.get(DS1307_YR,false));

можно сделать в одной функции и передавать в качестве аргумента номер кнопки.

bit
Offline
Зарегистрирован: 07.05.2012

А как их создавать, подскажите пожалуйста

Geronimo
Offline
Зарегистрирован: 06.05.2013

так же как loop и setup)

 

<return_type> <funcion_name>(<parameter list>)

{

}

 

Пример :

int sumTwoInts(int a, int b)
{
  return a + b;
}

 

bit
Offline
Зарегистрирован: 07.05.2012

Спасибо

bit
Offline
Зарегистрирован: 07.05.2012

Цели та я достиг четыре кнопки сохраняются  и читаются , а вот причину так и не понял почему так происходит

Вот этот код работает как нужно

 


// библ времени
#include <WProgram.h>
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif 
#include <Wire.h>
#include <DS1307.h>


// библ SD карты
 #include <SD.h>

File myFile;
 



String slovo;
boolean read_end = 0;








const int knop8 = 8; 
char state8 = 0;

const int knop7 = 7; 
char state7 = 0;

const int knop5 = 5; 
char state5 = 0;


const int knop6 = 6; 
char state6 = 0;



void setup()
{
  
  Serial.begin(9600);
  
      
  pinMode(knop8, INPUT); 
   pinMode(knop7, INPUT); 
   pinMode(knop5, INPUT);
    pinMode(knop6, INPUT);
     
  
  if (!SD.begin(4)) {
   
  }
 
  }
void loop()
{
  myFile = SD.open("test.txt", FILE_WRITE);
  // выводим данные с SD карты в сериал  else <<Sd Cart Load>>
 { if(Serial.available())
  {
    delay(2);
    slovo += (char)Serial.read();  
    read_end = 1; 
  }
  else if(read_end)
  {
    if(slovo.substring(0,15) == "Sd Cart Load")
    {
       myFile.close();
      delay(500);
      Serial.println("Sd Cart Load");
      delay(1000)
     ;
      Serial.println("ok");
      delay(1000);
         while (!Serial) {
    ; 
  }


  Serial.print("Initializing SD card...");
  
  
   
  if (!SD.begin(4)) {
   
  }
  Serial.println("initialization done.");
  delay(1000);
   Serial.println("ok");
   delay(1000);
   
    
    myFile = SD.open("test.txt");
  if (myFile) {
   
    Serial.println("test.txt:");
   
    while (myFile.available()) {
     Serial.write(myFile.read());
    }
    // close the file:
     myFile.close();
  
  } else {
   
    Serial.println("error opening test.txt");
   
     
   
   
    }
    
     delay(1000);
     Serial.println("ok");
     
    
    }
     else {
       Serial.println("ERROR");
     }
    
    
    read_end = 0;
    slovo = "";
  
}
  }


///////////////////////////////////////////////////////////////////////

delay(10);

/// 6 knop ON   сохроняет названия и время включения

char but6 = digitalRead(knop6);
  if(but6 && !state6)
  {
     Serial.print("6 knop Open>>>Writing to test.txt..."); 
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
   
  
  if (myFile) {
   
    
    myFile.print("6 knop Open>>>");
      date_time_SD();
       
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
  
  
   
     state6 = 1;
  }
 else if(!but6 && state6)
 {
 Serial.print("6 knop Close>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
   
  
  if (myFile) {
  
    
    myFile.print("6 knop Close>>>");
      date_time_SD();
       
        
        
 
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
     
  }
  
  
    state6 = 0;
 }




///////////////////////////////////////////////////////////////////////

delay(10);

/// 5 контур ON   сохроняет названия и время включения

char but5 = digitalRead(knop5);
  if(but5 && !state5)
  {
      Serial.print("5 knop Open>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
    
  
  if (myFile) {
   
    
    myFile.print("5 knop Open>>>");
     date_time_SD();
       
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
  
  
   
     state5 = 1;
  }
 else if(!but5 && state5)
 {
 Serial.print("5 knop Close>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }



 delay(10);
    
   
  
  if (myFile) {
    
    
    myFile.print("5 knop Close>>>");
       date_time_SD();
       
        
        
 
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
     
  }
  
  
    state5 = 0;
 }




///////////////////////////////////////////////////////////////////////

delay(10);

/// 7 контур ON   сохроняет названия и время включения

char but7 = digitalRead(knop7);
  if(but7 && !state7)
  {
      Serial.print("7 knop Open>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
    
  
  if (myFile) {
   
    
    myFile.print("7 knop Open>>>");
     date_time_SD();
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
  
  
   
     state7 = 1;
  }
 else if(!but7 && state7)
 {
 Serial.print("7 knop Close>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }



 delay(10);
    
    
  
  if (myFile) {
    
    
    myFile.print("7 knop Close>>>");
      date_time_SD();
       
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
     
  }
  
  
    state7 = 0;
 }






///////////////////////////////////////////////////////////////////////

delay(10);

/// 8 контур ON   сохроняет названия и время включения

char but8 = digitalRead(knop8);
  if(but8 && !state8)
  {
      Serial.print("8 knop Open>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
    
  
  if (myFile) {
   
    
    myFile.print("8 knop Open>>>");
     date_time_SD();
       
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
  
  
   
     state8 = 1;
  }
 else if(!but8 && state8)
 {
 Serial.print("8 knop Close>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }



 delay(10);
    
    
  
  if (myFile) {
    
    
    myFile.print("8 knop Close>>>");
      date_time_SD();
       
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
     
  }
  
  
    state8 = 0;
 }



///////////////////////////////////////////////////////////////////////

delay(10);

  myFile.close();




}

void date_time_SD()
{
   myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
}

 

bit
Offline
Зарегистрирован: 07.05.2012

Но стоит прописать ещё одну кнопку снова фигня какая та получается не чего не работает

 


// библ времени
#include <WProgram.h>
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif 
#include <Wire.h>
#include <DS1307.h>


// библ SD карты
 #include <SD.h>

File myFile;
 

String slovo;
boolean read_end = 0;


const int knop8 = 8; 
char state8 = 0;

const int knop7 = 7; 
char state7 = 0;

const int knop5 = 5; 
char state5 = 0;


const int knop6 = 6; 
char state6 = 0;

const int knop4 = 4; 
char state4 = 0;



void setup()
{
  
  Serial.begin(9600);
  
      
  pinMode(knop8, INPUT); 
   pinMode(knop7, INPUT); 
   pinMode(knop5, INPUT);
   pinMode(knop4, INPUT);
    pinMode(knop6, INPUT);
     
  
  if (!SD.begin(2)) {
   
  }
 
  }
void loop()
{
  myFile = SD.open("test.txt", FILE_WRITE);
  // выводим данные с SD карты в сериал  else <<Sd Cart Load>>
 { if(Serial.available())
  {
    delay(2);
    slovo += (char)Serial.read();  
    read_end = 1; 
  }
  else if(read_end)
  {
    if(slovo.substring(0,15) == "Sd Cart Load")
    {
       myFile.close();
      delay(500);
      Serial.println("Sd Cart Load");
      delay(1000)
     ;
      Serial.println("ok");
      delay(1000);
         while (!Serial) {
    ; 
  }


  Serial.print("Initializing SD card...");
  
  
   
  if (!SD.begin(2)) {
   
  }
  Serial.println("initialization done.");
  delay(1000);
   Serial.println("ok");
   delay(1000);
   
    
    myFile = SD.open("test.txt");
  if (myFile) {
   
    Serial.println("test.txt:");
   
    while (myFile.available()) {
     Serial.write(myFile.read());
    }
    // close the file:
     myFile.close();
  
  } else {
   
    Serial.println("error opening test.txt");
   
     
   
   
    }
    
     delay(1000);
     Serial.println("ok");
     
    
    }
     else {
       Serial.println("ERROR");
     }
    
    
    read_end = 0;
    slovo = "";
  
}
  }

///////////////////////////////////////////////////////////////////////

delay(10);

/// 6 knop ON   сохроняет названия и время включения

char but6 = digitalRead(knop6);
  if(but6 && !state6)
  {
     Serial.print("6 knop Open>>>Writing to test.txt..."); 
      while (!Serial) {
    ; 
  }


 delay(10);
    
   
   if (myFile) {
   
     myFile.print("6 knop Open>>>");
      date_time_SD();
       
        
       
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
  
  
     state6 = 1;
  }
 else if(!but6 && state6)
 {
 Serial.print("6 knop Close>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }


 delay(10);
    
   
  
  if (myFile) {
  
     myFile.print("6 knop Close>>>");
      date_time_SD();
       
        
        Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
     
  }
  
  
    state6 = 0;
 }

///////////////////////////////////////////////////////////////////////

delay(10);

/// 5 контур ON   сохроняет названия и время включения

char but5 = digitalRead(knop5);
  if(but5 && !state5)
  {
      Serial.print("5 knop Open>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
    
  
  if (myFile) {
   
    
    myFile.print("5 knop Open>>>");
     date_time_SD();
       
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
  
  
   
     state5 = 1;
  }
 else if(!but5 && state5)
 {
 Serial.print("5 knop Close>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }



 delay(10);
    
   
  
  if (myFile) {
    
    
    myFile.print("5 knop Close>>>");
       date_time_SD();
       
        
        
 
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
     
  }
  
  
    state5 = 0;
 }


///////////////////////////////////////////////////////////////////////

delay(10);

/// 7 контур ON   сохроняет названия и время включения

char but7 = digitalRead(knop7);
  if(but7 && !state7)
  {
      Serial.print("7 knop Open>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }


 delay(10);
    
    
   if (myFile) {
   
    
    myFile.print("7 knop Open>>>");
     date_time_SD();
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
  
  
   
     state7 = 1;
  }
 else if(!but7 && state7)
 {
 Serial.print("7 knop Close>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }



 delay(10);
    
    
  
  if (myFile) {
    
    
    myFile.print("7 knop Close>>>");
      date_time_SD();
       
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
     
  }
  
  
    state7 = 0;
 }





///////////////////////////////////////////////////////////////////////

delay(10);

/// 8 контур ON   сохроняет названия и время включения

char but8 = digitalRead(knop8);
  if(but8 && !state8)
  {
      Serial.print("8 knop Open>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
    
  
  if (myFile) {
   
    
    myFile.print("8 knop Open>>>");
     date_time_SD();
       
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
  
  
   
     state8 = 1;
  }
 else if(!but8 && state8)
 {
 Serial.print("8 knop Close>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }



 delay(10);
    
    
  
  if (myFile) {
    
    
    myFile.print("8 knop Close>>>");
      date_time_SD();
       
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
     
  }
  
  
    state8 = 0;
 }



///////////////////////////////////////////////////////////////////////


/// 4 контур ON   сохроняет названия и время включения

char but4 = digitalRead(knop4);
  if(but8 && !state4)
  {
      Serial.print("4 knop Open>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }


 
 delay(10);
    
    
  
  if (myFile) {
   
    
    myFile.print("4 knop Open>>>");
     date_time_SD();
       
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
  
  
   
     state4 = 1;
  }
 else if(!but4 && state4)
 {
 Serial.print("4 knop Close>>>Writing to test.txt...");
      while (!Serial) {
    ; 
  }



 delay(10);
    
    
  
  if (myFile) {
    
    
    myFile.print("4 knop Close>>>");
      date_time_SD();
       
        
        
   
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
     
  }
  
  
    state4 = 0;
 }


delay(10);

  myFile.close();




}

void date_time_SD()
{
   myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
}

 

bit
Offline
Зарегистрирован: 07.05.2012

Походу дело код зависает

bit
Offline
Зарегистрирован: 07.05.2012

Код виснет на этой строке

060   myFile = SD.open("test.txt", FILE_WRITE);  





Но тогда почему он не виснет когда 4 кнопки прописано?

 

 

bit
Offline
Зарегистрирован: 07.05.2012

А если н а SD карте  СS  pin  к ардуино не подключен я его просто 3.3к  на минус , из за этого глюк могут быть?

bit
Offline
Зарегистрирован: 07.05.2012

А если н а SD карте  СS  pin  к ардуино не подключен я его просто 3.3к  на минус , из за этого глюк могут быть?

bit
Offline
Зарегистрирован: 07.05.2012

Как говорится утро вечера мудренее,

Все замечательно заработало и не одного   глюка

 

   Serial.println("Sd Cart Load");
      delay(1000);
        myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");
 
    while (myFile.available()) {
     Serial.write(myFile.read());
    }

 

 

 

 

 

bit
Offline
Зарегистрирован: 07.05.2012

Чего  та совсем уже запутался ерунда какая та получается

bit
Offline
Зарегистрирован: 07.05.2012

Чего  та совсем уже запутался ерунда какая та получается

bit
Offline
Зарегистрирован: 07.05.2012

Подскажите пожалуйста где тут ошибка , на пять кнопок всё работает стабильно  сохраняет по состоянию кнопки и выводит данные c sd карты по запросу.

 Но когда  я прописал два аналоговых входа код завис выводит в сериал  ” Initializing SD card...initialization done” без остановки и больше не каких действий.

 Где ошибка в коде?

 

// библиотека часиков

#include <WProgram.h>
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif 
#include <Wire.h>
#include <DS1307.h>

// библиотека SD карты
#include <SD.h>
 
File myFile;

// назначаем цифровые паны 

const int knop4 = 4; 
char state4 = 0;

const int knop5 = 5; 
char state5 = 0;

 const int knop6 = 6; 
char state6 = 0;

const int knop7 = 7; 
char state7 = 0;

const int knop8 = 8; 
char state8 = 0;

// переменная для команд 
String slovo;
boolean read_end = 0;

// назначаем аналоговые пины

int sensePin3 =3;
boolean senseIsOn3 = false;


int sensePin2 =2;
boolean senseIsOn2 = false;
 
 

void setup()
{
  
     analogReference(DEFAULT);
  
  
  
   pinMode(knop4, INPUT);
   pinMode(knop5, INPUT);
    pinMode(knop6, INPUT);
     pinMode(knop7, INPUT);
      pinMode(knop8, INPUT);
   
  Serial.begin(9600);
  
   Serial.print("Initializing SD card...");
 
  if (!SD.begin(2)) {
    Serial.println("initialization failed!");
    return;
    
    
    }
  Serial.println("initialization done.");
}
 
void loop()
{
  
  
  
 
   // сохраняем время если уровень выше или ниже
 
  int val2 = analogRead(sensePin2);
 
  if ( val2<300)
  { 
    if( !senseIsOn2 )
    {
      
      
      
       
    myFile = SD.open("test.txt", FILE_WRITE);
 
  if (myFile) {
    Serial.print("ON-B ");
   
    myFile.print("ON-B ");
    date();
    myFile.close();
     Serial.println("done.");
      senseIsOn2 = true;
    }
  }
  }
  else
  { 
    if( senseIsOn2 )
    {
     
      
       
    myFile = SD.open("test.txt", FILE_WRITE);
 
  if (myFile) {
     Serial.print("OFF-B ");
   
    myFile.print("OFF- B ");
    date();
    myFile.close();
     Serial.println("done.");
      senseIsOn2 = false;
    }
  }
  }
  delay(50);

 

 
 
 // сохраняем время если уровень выше или ниже
 
  int val3 = analogRead(sensePin3);
 
  if ( val3<500)
  { 
    if( !senseIsOn3 )
    {
      
      
      
       
    myFile = SD.open("test.txt", FILE_WRITE);
 
  if (myFile) {
    Serial.print("ON-A ");
   
    myFile.print("ON-A ");
    date();
    myFile.close();
     Serial.println("done.");
      senseIsOn3 = true;
    }
  }
  }
  else
  { 
    if( senseIsOn3 )
    {
     
      
       
    myFile = SD.open("test.txt", FILE_WRITE);
 
  if (myFile) {
     Serial.print("OFF-A ");
   
    myFile.print("OFF- A ");
    date();
    myFile.close();
     Serial.println("done.");
      senseIsOn3 = false;
    }
  }
  }
  delay(50);
 
 
  //4 кнопка
   // сохраняем время если кнопка нажата или нет


 
 char but4 = digitalRead(knop4);
  if(but4 && !state4)
  {
   
   
 myFile = SD.open("test.txt", FILE_WRITE);
 
  if (myFile) {
    
    myFile.print("4 OPEN ");
    date();
    myFile.close();
    Serial.print("4 OPEN  ");
    
    Serial.println("done.");
  } else {
    Serial.println("error opening test.txt");
  }

    
 
     state4 = 1;
  }
 else if(!but4 && state4)
 {
   
    myFile = SD.open("test.txt", FILE_WRITE);
 
  if (myFile) {
   
    myFile.print("4 OFF ");
    date();
    myFile.close();
    Serial.print("4 OFF  ");
    
    Serial.println("done.");
  } else {
    Serial.println("error opening test.txt");
  }

    state4= 0;
 }
 delay(50);
  
 //5 кнопка
 // сохраняем время если кнопка нажата или нет



char but5 = digitalRead(knop5);
  if(but5 && !state5)
  {
   
   
 myFile = SD.open("test.txt", FILE_WRITE);
 
  if (myFile) {
    
    myFile.print("5 OPEN ");
    date();
    myFile.close();
    Serial.print("5 OPEN  ");
    
    Serial.println("done.");
  } else {
    Serial.println("error opening test.txt");
  }

    
 
     state5 = 1;
  }
 else if(!but5 && state5)
 {
   
    myFile = SD.open("test.txt", FILE_WRITE);
 
  if (myFile) {
   
    myFile.print("5 OFF ");
    date();
    myFile.close();
    Serial.print("5 OFF  ");
    
    Serial.println("done.");
  } else {
    Serial.println("error opening test.txt");
  }

    state5= 0;
 }
delay(100);

 
 
 //6 кнопка
 
  // сохраняем время если кнопка нажата или нет


  char but6 = digitalRead(knop6);
  if(but6 && !state6)
  {
   
   
 myFile = SD.open("test.txt", FILE_WRITE);
 
  if (myFile) {
    
    myFile.print("6 OPEN ");
    date();
    myFile.close();
    Serial.print("6 OPEN  ");
    
    Serial.println("done.");
  } else {
    Serial.println("error opening test.txt");
  }

    
 
     state6 = 1;
  }
 else if(!but6 && state6)
 {
   
    myFile = SD.open("test.txt", FILE_WRITE);
 
  if (myFile) {
   
    myFile.print("6 OFF ");
    date();
    myFile.close();
    Serial.print("6 OFF  ");
    
    Serial.println("done.");
  } else {
    Serial.println("error opening test.txt");
  }

    state6= 0;
 }
 delay(50);
 
 
 //7 кнопка
  // сохраняем время если кнопка нажата или нет


 char but7 = digitalRead(knop7);
  if(but7 && !state7)
  {
   
   
 myFile = SD.open("test.txt", FILE_WRITE);
 
  if (myFile) {
    
    myFile.print("7 OPEN ");
    date();
    myFile.close();
    Serial.print("7 OPEN  ");
    
    Serial.println("done.");
  } else {
    Serial.println("error opening test.txt");
  }

    
 
     state7 = 1;
  }
 else if(!but7 && state7)
 {
   
    myFile = SD.open("test.txt", FILE_WRITE);
 
  if (myFile) {
   
    myFile.print("7 OFF ");
    date();
    myFile.close();
    Serial.print("7 OFF  ");
    
    Serial.println("done.");
  } else {
    Serial.println("error opening test.txt");
  }

    state7= 0;
 }
  
  
  delay(50);
 
 
 
  //8 кнопка
   // сохраняем время если кнопка нажата или нет


 char but8 = digitalRead(knop8);
  if(but8 && !state8)
  {
   
   
 myFile = SD.open("test.txt", FILE_WRITE);
 
  if (myFile) {
    
    myFile.print("8 OPEN ");
    date();
    myFile.close();
    Serial.print("8 OPEN  ");
    
    Serial.println("done.");
  } else {
    Serial.println("error opening test.txt");
  }

    
 
     state8 = 1;
  }
 else if(!but8 && state8)
 {
   
    myFile = SD.open("test.txt", FILE_WRITE);
 
  if (myFile) {
   
    myFile.print("8 OFF ");
    date();
    myFile.close();
    Serial.print("8 OFF  ");
    
    Serial.println("done.");
  } else {
    Serial.println("error opening test.txt");
  }

    state8= 0;
 }
 
 delay(50);
 
 
 
// выводим данные с SD карты по команде Load

 if(Serial.available())
  {
    delay(2);
    slovo += (char)Serial.read();  
    read_end = 1; 
  }
  else if(read_end)
  {
    if(slovo.substring(0,15) == "Load")
    {
      delay(500);
      Serial.println("Sd Cart Load");
      delay(1000);
        myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");
 
    while (myFile.available()) {
     Serial.write(myFile.read());
    }
 
    myFile.close();
  } else {
 
    Serial.println("error opening test.txt");
  }
      Serial.println("ok");
      delay(1000);
       
    
    }
     else {
       Serial.println("ERROR");
     }
    
    
    read_end = 0;
    slovo = "";
  
}

  
 delay(50);
}

// функция времени
void date(){
   myFile.print(RTC.get(DS1307_HR,true));
     myFile.print(":");
      myFile.print(RTC.get(DS1307_MIN,false));
       myFile.print(":");
        myFile.print(RTC.get(DS1307_SEC,false));
        myFile.print(">>>");
          myFile.print(RTC.get(DS1307_DATE,false));
     myFile.print("/");
      myFile.print(RTC.get(DS1307_MTH,false));
       myFile.print("/");
        myFile.println(RTC.get(DS1307_YR,false));
   }
  

 

bit
Offline
Зарегистрирован: 07.05.2012

Почему то код крутится только в void setup и дальше не работает

bit
Offline
Зарегистрирован: 07.05.2012

Привет всем, ерунда какая та получается, на атмеге 328 код не работает виснет хотя памяти занимает всего 22 из 32 ,а на атмеге 1280 код работает прекрасно.

Почему так происходит?