Помогите разобраться с управлением сверлильным станком

Тема в разделе "Arduino & Shields", создана пользователем Sparkfire, 30 окт 2015.

  1. Sparkfire

    Sparkfire Гик

    Поправил. Спасибо.
     
  2. Megakoteyka

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

    Заграница нам поможет.
     
  3. Sparkfire

    Sparkfire Гик

    Нет-нет, я не про железки, я про умища человеческие)) По компонентам- все уже куплено и приехало, то есть сразу проверяю работоспособность отдельных сборок прям сразу. Жду ещё ШД.
     
  4. 9xA59kK

    9xA59kK Гик

  5. Sparkfire

    Sparkfire Гик

    Вообще задумка сделать большой шестикоординатный станок.
    Но три оси стандартные Х,Y и Z, четвертая поворотная А пока под вопросом, и две оси В и С, как раз от этого станка, что сейчас пытаюсь сваять.
    Понимаю, что железо на большой станок лучше и дешевле заказать из Поднебесной, уже даже предварительная смета и спецификация составлена. А на маленький достаточно и ардуины, эти две оси будут управляться отдельно.
    Может быть это вообще будут два отдельных станка на общей станине, даже скорее всего.
    Сейчас задача сваять код из тех знаний, что имеются и изучить недостающее. и проверить в действии на маленьких ШД. А основная работа по механике начнется после того, как придут ШД.
    Проекты обоих станков уже есть.
    Размещение приборов на приборной панели есть.

    Код. только код.
     
  6. Sparkfire

    Sparkfire Гик

    Эскиз приборной панели))
    [​IMG]
     
  7. KellaKilla

    KellaKilla Нерд

    почему у Вас в проекте не используется четырехпозиционный джойстик вместо двух "рычагов", я про последний эскиз, или это реостаты-крутилки?
    чуть выше видел, что Вам уже "мала" мега, но ведь всегда можно увеличить количество портов с помощью сдвиговых регистров.
    Чуть не забыл- дисплей можно подключить через I2C интерфейс воспользовавшись платкой переходником, что тоже очень сильно сэкономит количество задействованных портов IO.
     
  8. Sparkfire

    Sparkfire Гик

    Использовал двухпозиционные джойстики потому, что четырехпозиционных таких не было в наличии. Это не обычные джойстики из ардуино, а 12 сантиметровые монстры, как раз то,что надо. Ведь цикл влево-вправо должен использоваться отдельно. МЕГА да, маловата. Про i2c наслышан, но опыта маловато. Точнее совсем нет.
    Пока все ещё в прострации с последовательным вводом цифр и чисел. Не разобраться с ними все никак. Взял плату, дисплей и Клаву домой, завтра снова в бой.
     
  9. KellaKilla

    KellaKilla Нерд

    Нет, есть и большие джойстики дико устойчивые-их используют в игровых автоматах. Все таки, если внимательно присматриваться, то используя I2C для экрана, и если нужно, хотя я сомневаюсь что понадобятся, сдвиговые регистры.
     
  10. Sparkfire

    Sparkfire Гик

    Джойстик брал ТАКОЙ.
     
  11. KellaKilla

    KellaKilla Нерд

    Ясно, раз уж взяли то нужно пилить с тем, что есть. Они шумные ?
     
  12. Sparkfire

    Sparkfire Гик

    Кто, джойстики? Имеются в виду помехи? Пока не знаю, подключал их всего один раз для проверки, и то к тестеру, на сопротивление. Работают. Больше пока ничего сказать не могу.
     
  13. KellaKilla

    KellaKilla Нерд

    Да, джойстик представляют собой переменные резисторы, очень часто из экономии китайцы не допаивают подтягивающий резистор, из за этого возникают помехи, которые очень сильно портят все.
    Вообще, сам проект достаточно простой, тут главное не спешить. Как что получаться/не получаться будет пишите тут. Удачи.
     
  14. Sparkfire

    Sparkfire Гик

    Мне кажется, что там никаких резисторов нет. Там просто вкл-выкл. Резисторов не надо нам.
     
  15. KellaKilla

    KellaKilla Нерд

  16. Sparkfire

    Sparkfire Гик

    Пытаюсь победить задачу. Разбил на части. Добился ввода нескольких цифр последовательно. Всего лишь убрав положение курсора.
    Промежуточная победа тоже победа))
    Код (C++):

    void setup()
      {
        lcd.begin(16, 2);
        lcd.setCursor(0,0);
        lcd.print("X1=");
        lcd.setCursor(3,0);
      }
    void loop()
      {
        char pressed_Xa1=keypad.getKey();
           if(pressed_Xa1)
      {
            lcd.print(pressed_Xa1);
      }
      }
    Теперь про счетчики буду читать и смотреть))
     
  17. Sparkfire

    Sparkfire Гик

    Может не нужно для всего этого использовать библиотеку Keypad.h ??
    Может напрямую считывать сигналы с пинов ардуино? Тогда можно понимать какой код пришел в ардуину с клавиатуры.
    Хотя, это наверное, как по воробьям из пушки...
     
  18. Sparkfire

    Sparkfire Гик

    Код (C++):
     void loop(){
    value =1;
          lcd.setCursor(10,0);
      char Xa1=keypad.getKey();
          if(Xa1)
        {
       
          lcd.print(Xa1);
          delay(250);
        }
    value=2;
          lcd.setCursor(11,0);
      char Xa2=keypad.getKey();
          if(Xa2)
        {
       
          lcd.print(Xa2);
          delay(250);
        }    
    value=3;
            lcd.setCursor(12,0);
      char Xa3=keypad.getKey();
          if(Xa3)
        {
     
          lcd.print(Xa3);
          delay(250);
        }

       
    X1=(Xa1*100)+(Xa2*10)+Xa3;
      lcd.setCursor(0,1);
      lcd.print(X1);

        }
     
    Нет не выходит каменный цветок. так же пишет числа в любую ячейку в случайном порядке.. Что делать?
     
  19. KellaKilla

    KellaKilla Нерд

    Библиотеку использовать нужно.
    Вы массив после подключения не задаете ? у Вас же клавиатура матричная, 4х4, как я понимаю?
    мой Вам совет- не спешите с пилением именно своего проекта- подключите по одному обвесу к ардуинке и потыкатесь: гляньте примеры. Самое главное-всегда делайте комментарии кода, это дико помогает.
     
  20. Sparkfire

    Sparkfire Гик

    Частично снова решил задачку. Только теперь не понимаю, что с этим делать.
    Видео процесса ввода многозначного числа.



    Часть кода ввода многозначного числа.
    Код (C++):
    String X1;
    String keystr;
    int value=0;
    void setup(){
    lcd.begin(16,2);
    lcd.setCursor(0,0);
    lcd.print("X1=");

    }

    void loop(){

    char key = keypad.getKey();

      if (key)
      {
        lcd.setCursor(15,1);
        lcd.print(key);
        value=value+1;
    X1=X1+key;
        lcd.setCursor(3,0);
        lcd.print(X1);
        keystr=String(key);
      }
      }
    Решил сделать так: На панели приборов есть три кнопки, подписанные как Х1, Х2 и Х3.
    Для ввода координаты надо нажать соответствующую кнопку, и ввести 3 цифры, они потом составляют число координаты. Это будет проще в программировании, да и не всегда нужно менять координаты, один размер оставил, второй поменял, и так далее. Нажатие на кнопку будет обнулять соответствующее число. Это позводит уйти от кнопки CLEAR и исправлять ошибки ввода.

    И вообще, уйти надо с этой дурацкой клавиатуры, и сделать кнопочную, их и нажимать приятнее, и проще программировать кнопки( мне так кажется)