Считывания с CD карты массива (бюджет 1000р)

Тема в разделе "Закажу проект", создана пользователем Artclonic, 25 янв 2018.

  1. ostrov

    ostrov Гуру

    По мне так неудоство в том, что надо читать файл с конца к началу. Куда проще, быстрей и вообще правильнее читать с начала и выполнять по одной команде. А для этого написать скрипт в exel, который за полекунды из любой матрицы сделает простыню.
     
  2. Artclonic

    Artclonic Гик

    мне DIYMan написал... Я вот только про библиотеку SD не до конца пойму
     
  3. DIYMan

    DIYMan Guest

    Там всё уже подключено в исходниках. Вам надо только SD-модуль подключить, и указать пин CS в настройках.
     
  4. Artclonic

    Artclonic Гик

    На меге в коде могу поменять CS на 53? Остальные вот так?
    5v -> 5v
    cs -> 53
    mosi -> 51
    sck -> 52
    miso -> 50
     
  5. Artclonic

    Artclonic Гик

    Че готовое то?
     
  6. запись и чтение конфига с SD
     
  7. DIYMan

    DIYMan Guest

    Конечно, там сверху есть настройка с комментарием, поменяйте номер пина на нужный, и всё.
     
  8. Artclonic

    Artclonic Гик

    Добрый день. Скажите назначение пинов и уставки скорости ШД я могу вставить в void ON_COMMAND(int command) до switch(command)? Или надо в другое место?

    Код (C++):
    pinMode(ob11, OUTPUT);
    pinMode(ob12, OUTPUT);
    pinMode(ob13, OUTPUT);
    pinMode(ob14, OUTPUT);
    pinMode(ob21, OUTPUT);
    pinMode(ob22, OUTPUT);
    pinMode(ob23, OUTPUT);
    pinMode(ob24, OUTPUT);
    motor1.setSpeed(20); // 20 об/мин
    motor2.setSpeed(20); // 20 об/мин
     
  9. DIYMan

    DIYMan Guest

    Внутрь функции setup поместите.
     
  10. Artclonic

    Artclonic Гик

    Да! Понял! А назначение переменных
    (const int ob23=36; // ШД №2
    const int ob24=38; // ШД №2
    int ZZZ = 13;//ПЕРЕЕЗД НА 1
    unsigned long RRR= 150;//задержка на холсте
    unsigned long XXX= 150;//задержка в бункере)
    оставил в самом начале, где к примеру #define SD_CS_PIN 53 // пин Chip Select для SD-карты.
    Или тоже лучше в setup?
     
  11. b707

    b707 Гуру

    нет, эти в сетап нельзя - работать не будет.
     
  12. Artclonic

    Artclonic Гик

    Еще вопрос, вот мне надо зажечь светодиод с самого начала еще до всяких манипуляций, до чтения значений файла с SD.
    Мне это действие первым в loop вставить?
    пример (digitalWrite(ob2,HIGH);)
     
  13. b707

    b707 Гуру

    "с самого начала" - понятие относительное. Если прям при запуске контроллера - вставьте в сетап
     
  14. Artclonic

    Artclonic Гик

    CAN'T LOAD PROGRAM! О чем говорит это в мониторе порта? О том что прочитать не может или о том что может не подсоединен модуль SD? Или о том что SD должна быть отформатирована или еще что ни будь?
    ВРОДЕ ЗАРАБОТАЛО!!!!!УРА!!! Отформатировал SD!!!
     
    Последнее редактирование: 29 янв 2018
  15. DIYMan

    DIYMan Guest

    О том, что на SD не найден файл program.txt, содержащий набор команд.
     
  16. Artclonic

    Artclonic Гик

    Ох измучился вчера... так работу в соответствии с командами не настроил...
    Суть следующая имею 4 шаговых двигателя. два двигателя работают по библиотеки <AFMotor.h>, а два двигателя работают фазным управлением (4 обмотки на которые включаются в определенной последовательности). Команды (1-20) это команды с определенной последовательностью действий с задействованием ШД с фазным управлением). Команды 21,22,23 -это команды биполярный ШД по протоколу <AFMotor.h>. Для старта с определенного угла необходимо заранее задействовать (включить) обмотки на "фазных" ШД до выполнения (чтения) команд с файла. я эти действия вставил в начало LOOP - может в этом дело?... Может назначение переменных ни туда вставил... Итог следующий Все двигатели реагируют на чтение команд, но половина дергается.. некоторые не в нужном режиме... -сбоят.
    причины
    1 - неправильная последовательность включения оботок - вроде все проверял на отдельном скетче (тупо последовательность эту заливал) в контроллер.
    2 -неверно назначил переменные в том числе и временные, поэтому задержки самопроизвольно выдаются...
    3. Может вот эти первоначальные движения надо вставить не в LOOP?
    Код (C++):
    digitalWrite(ob21,HIGH);digitalWrite(ob22,LOW);digitalWrite(ob23,LOW);digitalWrite(ob24,HIGH);//фиксация ШД2
    digitalWrite(ob11,HIGH);digitalWrite(ob12,LOW);digitalWrite(ob13,LOW);digitalWrite(ob14,HIGH);//фиксация ШД1
    delay(5000);

    ii=0;for (ii=0; ii<N; ii++){//верх с холста
    digitalWrite(ob21,HIGH);digitalWrite(ob22,LOW);digitalWrite(ob23,LOW);digitalWrite(ob24,LOW);delay(c);//верх с холста
    digitalWrite(ob21,HIGH);digitalWrite(ob22,HIGH);digitalWrite(ob23,LOW);digitalWrite(ob24,LOW);delay(c);//верх с холста
    digitalWrite(ob21,LOW);digitalWrite(ob22,HIGH);digitalWrite(ob23,LOW);digitalWrite(ob24,LOW);delay(c);//верх с холста
    digitalWrite(ob21,LOW);digitalWrite(ob22,HIGH);digitalWrite(ob23,HIGH);digitalWrite(ob24,LOW);delay(c);//верх с холста
    digitalWrite(ob21,LOW);digitalWrite(ob22,LOW);digitalWrite(ob23,HIGH);digitalWrite(ob24,LOW);delay(c);//верх с холста
    digitalWrite(ob21,LOW);digitalWrite(ob22,LOW);digitalWrite(ob23,HIGH);digitalWrite(ob24,HIGH);delay(c);//верх с холста
    digitalWrite(ob21,LOW);digitalWrite(ob22,LOW);digitalWrite(ob23,LOW);digitalWrite(ob24,HIGH);delay(c);//верх с холста
    digitalWrite(ob21,HIGH);digitalWrite(ob22,LOW);digitalWrite(ob23,LOW);digitalWrite(ob24,HIGH);delay(c);//верх с холста
    }
    4 -недостаточное питание - проверю вечером еще..
    Но то что реакция на команды ЕСТЬ - ЭТО ФАКТ, Т,Е. РАБОТАЕТ В ПРИНЦИПЕ КОД!!!
     

    Вложения:

    • program.txt
      Размер файла:
      378 байт
      Просмотров:
      432
    • MicroProgram.ino
      Размер файла:
      162,6 КБ
      Просмотров:
      442
  17. ostrov

    ostrov Гуру

    Сдается мне что это можно записать компактнее в виде массива, например, и выполнять в виде цикла, опять же например. И нагляднее и глаза от вывиха спасет.
     
  18. DIYMan

    DIYMan Guest

    Действия по настройке - делаются в SETUP, а не в LOOP, если эти действия - нужны однократно. Может, вы уже наконец прочтёте парочку уроков по самым основам: про то, как устроен скетч и почему две функции setup и loop и зачем они так называются? Вы представляете, с какой частотой вызывается loop вообще? У вас ваши куски кода вызываются ПОСТОЯННО, потом - идёт обработка очередной команды из файла - я бы тоже задёргался.
     
  19. DIYMan

    DIYMan Guest

    Что значит - работает в принципе? Код работает не в принципе - код просто работает и делает то, для чего предназначен: вычитывает из файла команды до победного.