Где может быть ошибка кода?

Тема в разделе "Arduino & Shields", создана пользователем sanik, 8 окт 2013.

  1. Unixon

    Unixon Оракул Модератор

    Это неправильный концевик. Как же вы его приводите в изначальное положение? Каждый раз руками переключаете?
     
  2. lerik2703

    lerik2703 Гик

    я предполагаю что следующий подъезд каретки переключает концевик.. ну а вообще вся ветка напоминает тянуть кота за хвост... 200 постов а только выясняться что концевики с фиксацией...:eek:
     
  3. sanik

    sanik Гик

    Ну да попробую в него пружинку вставить)
    Вы еще не смотрели пост 195?
     
  4. sanik

    sanik Гик

    Да он самодельный и универсальный сейчас пойду поставлю пружинку и будет находится в среднем положении.
     
  5. sanik

    sanik Гик

    Что то я не разобрался можно поподробнее?
     
  6. lerik2703

    lerik2703 Гик

    скорей в нормально разомкнутом состоянии :) это ладно. мне вот интересно об управлении мотором, много что написали а вот об обратной связи я ничего не увидел (может что и пропустил...) с какой целью вы используете фотоитераптор мотора? для определения скорости или для отчета шагов (скорее всего)?
     
    Последнее редактирование: 23 окт 2013
  7. lerik2703

    lerik2703 Гик

    думаю такой алгоритм обработки аналоговых сигналов всё-таки не очень эффективен, т.к. концевик все-же является механическим устройством и ему естественно присущ дребезг ,соответственно при срабатывания концевика 2 контролёр может зафиксировать значение сигнала 1-го концевика....:confused:
     
    Последнее редактирование: 23 окт 2013
  8. lerik2703

    lerik2703 Гик

    очень просто если переменная control будет равняться указанному диапазону то выражение вернет переменным stop1 или stop2 истину
     
    Последнее редактирование: 23 окт 2013
  9. sanik

    sanik Гик

    Вы немного не в теме меня Megakoteyka учит писать мой код, насчет переменой я понял что она делает я не понял как применить, до обратной связи еще не дошли она в ручном режиме не нужна впринцепе я примерно накидал
    Код (Text):
     case STEP_10MOT:
          // отсчет таймера pauseValue
          control = analogRead(pin_Rd);
          if(control>= 540 && control <= 550)// если положение 1 - крутить в направлении 1
          for(a = 25 ; a <= a; a+=30) // плавный разгон
          a *= 4; // так как значение а на пине делим на 4 соответсвено умножаем на 4
          RunMotor1();
          if(control>= 450 && control <= 460)// если положение 2 - крутить в направлении 2
          for(a = 25 ; a <= a; a+=30) // плавный разгон
          a *= 4; // так как значение а на пине делим на 4 соответсвено умножаем на 4
          RunMotor2();
          pulse = 0;// сброс счетчика на 0
          //считаем количество импульсов
          {
            bool currentState = digitalRead(pin_pos);// Читаем пин фотоитераптора
            if(currentState != prevState)
            prevState = currentState;
            pulse++;
            if(pulse == posValue)//если импульсы сравнялись с заданым значением
            {
              pulse = 0;
              StopMotor();
            }
          }
          // время вышло
          // StopMotor();
          {
            currentStep = STEP9_EXP; //Переходим к шагу 9
          }
          if(bouncerBtnStop.read() == HIGH)
          StopMotor();
          lcd.setCursor(0,0);lcd.print("    Manyal  ");
          lcd.setCursor(0,1);lcd.print("Stop shooting");
          {
            currentStep = STEP2_GET_POTS; //Переходим к шагу 2
          }
          break;
     
  10. lerik2703

    lerik2703 Гик

    как некую виртуальную кнопку которая имеет значение 0 или 1 ... соответственно проверяем условием if
    если конечно каретка из ручного режима в автоматический переходит с 0 позиции тогда не нужна... но мне кажется что елки ещё потрещат :)
     
  11. lerik2703

    lerik2703 Гик

    а вы точно уверенны что без использования прерываний в основном цикле программы вы все посчитаете?
     
    Последнее редактирование: 23 окт 2013
  12. sanik

    sanik Гик

    Что за наводящие вопросы? Вы сюда заглянули над новичком поиздеваться? Естественно откуда я могу быть уверен я спрашиваю мне советуют объясняют Что вы хотите от человека который даже представления не имеет с чего начать. А с насмешками прошу в другое место...
     
  13. lerik2703

    lerik2703 Гик

    с чего вы решили что я издеваюсь над вами??? я только подсказываю в какую сторону копать ,хоть и слегка завуалировано ! если конечно это ваш первый и последний проект...
     
    Последнее редактирование: 23 окт 2013
  14. lerik2703

    lerik2703 Гик

    ... ну а если вы хотите и дальше заниматься написанием программ для контроллеров попробуйте подучить азы ... здесь нет ни одного человека который уже родился со знанием С++ и как устроен микропроцессор ! И просто запомните что НИ КТО за вас ,ваш проект не напишет!!! и прежде чем писать что я решил посмеяться над вами ,поинтересовались бы для чего нужны прерывания...
     
    Последнее редактирование: 23 окт 2013
  15. sanik

    sanik Гик

    Прерывания нужны для приостановки программы что бы выполнить срочное действие,
    это скорей всего последний проект и есть представление кое какое у меня есть у меня нет ни навыка ни практики примеры которые даны на сайтах что то не подходят для новичков мне например они ниочем не говорят. Так что самостоятельно я врят ли смогу применить какую либо конструкцию.
     
  16. Unixon

    Unixon Оракул Модератор

    lerik2703, не сбивайте у человека мотивацию, у него работы на полплевка осталось, а сомнений в собственных силах туева гора. Сейчас вот Megakoteyka снова объявится и проект добьем. Лично меня от написания недостающего кода останавливает недостаточное понимание общей логики работы установки и ее устройства. Будет кристально чистое понимание того, что и как должно работать - будет код.
     
  17. lerik2703

    lerik2703 Гик

    в данном случаи используем внешнее прерывание что -бы определить не в понятно в какое время поступающий импульс с фотоитераптора (ну просто не реально их определить математически значит и в основном цикле программы )
    жаль ведь все приходит со временем! было -бы желание :)
    Unixon
    я вижу прекрасно что вы пытаетесь помочь человеку !так в том то и дело что нет не только обшей логики но и так же принципиальной схемы с временными диаграммами (наверно грубо :) ) с того -же энкондора ( фотоитераптора) сколько импульсов за оборот вала...
     
  18. sanik

    sanik Гик

    Так если б я знал какие подробности вам не понятны давно бы уже объяснил. Если про концевик то теперь он стал правильным у него есть среднее положение и как только каретка отъезжает от упора он размыкается, С энкодера за оборот выходит 127 импульсов , откуда мне знать что надо и это подсчитывать. Когда человеку что то непонятно он обычно спрашивает.
     
  19. Festour

    Festour Нерд

    Берёте смартфон или камеру и делаете видео. Там показываете с чем вы будете работать, т.е. камера, моторы, платформа и т.д.. Потом показываете как вы всё это между собой подключаете. Потом попробуйте показать на этой "платформе" как оно должно работать, например сначала крутите свои потенциометры и каретка двигается по платформе, когда она должна остановиться и т.д. И наконец то выкладываете видео на ютуб, и оставляете тут ссылку. Подозреваю всем будет намного проще понять что именно вы хотите делать и что вам надо.
     
    Unixon и Megakoteyka нравится это.
  20. sanik

    sanik Гик

    Хорошо я попробую снять стимуляцию работы, просто платформа не до конца готова так как ремень еше в дороге посылка не пришла пока. Двигатель только на днях приехал.