ПОМОГИТЕ SD читается в setup но не читается в loop

Тема в разделе "Arduino & Shields", создана пользователем mif321, 14 май 2017.

  1. mif321

    mif321 Нуб

    ПОМОГИТЕ SD читается в setup но не читается в loop может где я не так сделал
    Код (C++):
    #include <LiquidCrystal.h>
    #include <OneWire.h>
    OneWire  ds(10);
    #include <Servo.h>
    Servo servo;
    #include <SD.h>
    #include <SPI.h>
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    Sd2Card card;
    SdVolume volume;
    SdFile root;
    const int sd = 53;
    File myFile;
    void setup() {
      const int sd = 53;
      pinMode(21, INPUT);
      pinMode(22, INPUT);
      pinMode(23, INPUT);
      pinMode(24, INPUT);
      pinMode(25, INPUT);
      pinMode(35, OUTPUT);
      lcd.begin(16, 2);
       Serial.begin(9600);
        while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      }
      SD.begin(53);
    while ( !SD.begin(53))
      {
        SD.begin(53);
    Serial.println("ff");   //сдесь он нормально читает с 1-2 попытки
        delay (1000) ;
        return ;

      }


    SD.begin(53);
      Serial.print("Initializing SD card...");

      if (!SD.begin(53)) {
        Serial.println("initialization failed!");
        return;
      }
      Serial.println("initialization done.");

      if (SD.exists("example.txt")) {
        Serial.println("example.txt exists.");
      } else {
        Serial.println("example.txt doesn't exist.");
      }

      // open a new file and immediately close it:
      Serial.println("Creating example.txt...");
      myFile = SD.open("example.txt", FILE_WRITE);
      myFile.close();


    }

    void loop()
    {
      int tim = 0 ;
      String klych;
      char tx[3] ;
      unsigned int dengi = 0;
      byte b;// nado dlia klycha
      byte present = 0 ;//
      byte addr[8];

    if ( !ds.search(addr)) // do syda
      {
            Serial.println("nss");
        delay(300);
        return;
      }
      ds.search(addr);

      for (int i = 4 ; i < 8 ; i++)
      {
        klych += addr[i], HEX ;

      }
      ds.reset_search();
          Serial.println(klych);




      klych += ".txt";


      SD.begin(53);

      while ( !SD.begin(53))
      {
    Serial.println("ff");  // а здесь всё больше не читает
        delay (1000) ;

      }

      lcd.print(klych);
      myFile = SD.open(klych.c_str(), FILE_WRITE);
     


    что не так ????? при загруски пробных скечей из образцов все работает
     
    Последнее редактирование: 14 май 2017
  2. ostrov

    ostrov Гуру

    Код офарматируйте в IDE и в правильный тег выставьте.

    Это чтение?
    Код (C++):
    Serial.println("ff"); // сдесь читает
     
  3. mif321

    mif321 Нуб

    да я это ля себя поставил чтобы понимать где программа)))) , просто понять не могу в лупе она не читает sd я там код уже мучал и разное подстовлял )))) щас имеет такой вид , много лишнего но я не знал что уже делать , в setup работает а в loop нет (((( я уже голову сломал
    #include <LiquidCrystal.h>
    #include <OneWire.h>
    OneWire ds(10);
    #include <Servo.h>
    Servo servo;
    #include <SD.h>
    #include <SPI.h>
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    Sd2Card card;
    SdVolume volume;
    SdFile root;
    const int sd = 53;
    File myFile;
    void setup() {
    const int sd = 53;
    pinMode(21, INPUT);
    pinMode(22, INPUT);
    pinMode(23, INPUT);
    pinMode(24, INPUT);
    pinMode(25, INPUT);
    pinMode(35, OUTPUT);
    lcd.begin(16, 2);
    Serial.begin(9600);
    while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
    }
    SD.begin(53);
    while ( !SD.begin(53))
    {
    SD.begin(53);
    Serial.println("ff");
    delay (1000) ;
    return ;

    }


    SD.begin(53);
    Serial.print("Initializing SD card...");

    if (!SD.begin(53)) {
    Serial.println("initialization failed!");
    return;
    }
    Serial.println("initialization done.");

    if (SD.exists("example.txt")) {
    Serial.println("example.txt exists.");
    } else {
    Serial.println("example.txt doesn't exist.");
    }

    // open a new file and immediately close it:
    Serial.println("Creating example.txt...");
    myFile = SD.open("example.txt", FILE_WRITE);
    myFile.close();


    }

    void loop()
    {
    int tim = 0 ;
    String klych;
    char tx[3] ;
    unsigned int dengi = 0;
    byte b;// nado dlia klycha
    byte present = 0 ;//
    byte addr[8];

    if ( !ds.search(addr)) // do syda
    {
    Serial.println("nss");
    delay(300);
    return;
    }
    ds.search(addr);

    for (int i = 4 ; i < 8 ; i++)
    {
    klych += addr, HEX ;

    }
    ds.reset_search();
    Serial.println(klych);




    klych += ".txt";


    SD.begin(53);

    while ( !SD.begin(53))
    {
    Serial.println("ff");
    delay (1000) ;

    }

    lcd.print(klych);
    myFile = SD.open(klych.c_str(), FILE_WRITE);
     
  4. mif321

    mif321 Нуб

    это просто часть кода
     
  5. mif321

    mif321 Нуб

    я просто давольно не давно занимаюсь этими вещами и многое не понимаю(((( если можно то объясните могу даже заплатить (хотя денег не много) но чтобы обяснили как чайнику )))
     
  6. ostrov

    ostrov Гуру

    Код отфарматируйте и вставьте в тэг (слева от кавычек). В таком виде мало кто читать будет.
     
    Tomasina нравится это.
  7. mif321

    mif321 Нуб

    Код (C++):
    #include <LiquidCrystal.h>
    #include <OneWire.h>
    OneWire  ds(10);
    #include <Servo.h>
    Servo servo;
    #include <SD.h>
    #include <SPI.h>
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    Sd2Card card;
    SdVolume volume;
    SdFile root;
    const int sd = 53;
    File myFile;
    void setup() {
      const int sd = 53;
      pinMode(21, INPUT);
      pinMode(22, INPUT);
      pinMode(23, INPUT);
      pinMode(24, INPUT);
      pinMode(25, INPUT);
      pinMode(35, OUTPUT);
      lcd.begin(16, 2);
       Serial.begin(9600);
        while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      }
      SD.begin(53);
    while ( !SD.begin(53))
      {
        SD.begin(53);
    Serial.println("ff");
        delay (1000) ;
        return ;

      }


    SD.begin(53);
      Serial.print("Initializing SD card...");

      if (!SD.begin(53)) {
        Serial.println("initialization failed!");
        return;
      }
      Serial.println("initialization done.");

      if (SD.exists("example.txt")) {
        Serial.println("example.txt exists.");
      } else {
        Serial.println("example.txt doesn't exist.");
      }

      // open a new file and immediately close it:
      Serial.println("Creating example.txt...");
      myFile = SD.open("example.txt", FILE_WRITE);
      myFile.close();


    }

    void loop()
    {
      int tim = 0 ;
      String klych;
      char tx[3] ;
      unsigned int dengi = 0;
      byte b;// nado dlia klycha
      byte present = 0 ;//
      byte addr[8];

    if ( !ds.search(addr)) // do syda
      {
            Serial.println("nss");
        delay(300);
        return;
      }
      ds.search(addr);

      for (int i = 4 ; i < 8 ; i++)
      {
        klych += addr[i], HEX ;

      }
      ds.reset_search();
          Serial.println(klych);




      klych += ".txt";


      SD.begin(53);

      while ( !SD.begin(53))
      {
    Serial.println("ff");
        delay (1000) ;

      }

      lcd.print(klych);
      myFile = SD.open(klych.c_str(), FILE_WRITE);
     
     
  8. mif321

    mif321 Нуб

    спасибо не знал))
     
  9. ostrov

    ostrov Гуру

    Уверены, что SD.begin(53) недостаточно делать один раз за скетч?
     
  10. mif321

    mif321 Нуб

    я его в сетап для проверки в вёл изначально он тоже в лупе не читался(((
     
  11. mif321

    mif321 Нуб

    в таком виде не видит (((( но на пробном скече всё видит (((( я уже 2 дня борюсь
    Код (C++):
    #include <LiquidCrystal.h>
    #include <OneWire.h>
    OneWire  ds(10);
    #include <Servo.h>
    Servo servo;
    #include <SD.h>
    #include <SPI.h>
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    Sd2Card card;
    SdVolume volume;
    SdFile root;

    File myFile;
    void setup() {
     
      pinMode(21, INPUT);
      pinMode(22, INPUT);
      pinMode(23, INPUT);
      pinMode(24, INPUT);
      pinMode(25, INPUT);
      pinMode(35, OUTPUT);
      lcd.begin(16, 2);
       Serial.begin(9600);
        while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      }

      }





    в таком виде тоже не видит(((

    void loop()
    {
      int tim = 0 ;
      String klych;
      char tx[3] ;
      unsigned int dengi = 0;
      byte b;// nado dlia klycha
      byte present = 0 ;//
      byte addr[8];

    if ( !ds.search(addr)) // do syda
      {
            Serial.println("nss");
        delay(300);
        return;
      }
      ds.search(addr);

      for (int i = 4 ; i < 8 ; i++)
      {
        klych += addr[i], HEX ;

      }
      ds.reset_search();
          Serial.println(klych);




      klych += ".txt";


     

      while ( !SD.begin(53))
      {
    Serial.println("ff");
        delay (1000) ;

      }

      lcd.print(klych);
      myFile = SD.open(klych.c_str(), FILE_WRITE);

      if (!myFile) {
        lcd.setCursor(0, 0);
        lcd.print("poshol von");
        Serial.println("net");
        return;
      }
      else
      {
     
     
  12. mif321

    mif321 Нуб

    как я понял что
    while(!SD.begin(53))
    {
    Serial.println("ff");
    delay (1000);
    в лупе не работает а толька в сетупе, причины не понятна
     
  13. Cynep

    Cynep Нерд

    А зачем вы везде делаете sd.begin?
     
  14. fogary

    fogary Гик

    Код (C++):
    while (!SD.begin(53))
    {
      SD.begin(53);
      Serial.println("ff");
      delay (1000) ;
      return;
    }
    Зачем тут цикл, если он выполнится в лучшем случае один раз?
    Объект SD, он откуда появляется?

    Можно увидеть пример рабочего скетча?