Контроллер для двух моторов - ФОРУМ ДВ Робот dvrobot.ru
Суббота, 15.12.2018, 03:52
Главная Мой профиль Регистрация Выход
  • НАШ МАГАЗИН
  • Вы вошли как Гость | Группа "Гости"Приветствую Вас, Гость
    [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
    • Страница 1 из 1
    • 1
    Модератор форума: Serg, GRACH  
    ФОРУМ ДВ Робот dvrobot.ru » DV ROBOT » Arduino - вопросы и ответы. » Контроллер для двух моторов
    Контроллер для двух моторов
    SergДата: Пятница, 18.01.2013, 21:09 | Сообщение # 1
    Ампер
    Группа: Модераторы
    Сообщений: 510
    Репутация: 28
    Статус: Offline
    Помогите разобраться! С электроникой дружу боле менее, а вот с Aurdino связался в первые языков программирования не знаю. Пытаюсь разобраться, нужда заставляет собрать контроллер для двух моторов. Нужно написать sketch Вот мой пример все в чем, пока я разобрался не пинайте сильно так как проверить не на чем железо еще только едет в мою провинцию.
    Описание работы ниже схема:
    ОПИСАНИЕ: ниже схема
    1ч.)Режим "Analog" При включение питания на экране загорается приветствие чере 1 скунду вывод на дисплей "Analog", при повороте
    потенциометра Y от среднего положения вправо двигатель Y начинает вращаться в право чем больше угол поворота потенциометра
    тем быстрее скорость, при повороте в лево от среднего положения двигатель вращается влево, тоже с регулировкой скорости.
    Двигатель Х работает аналогично от потенциометра X.

    2ч.) Режим Programm При нажатии кнопки selekt первый раз,отключается режим Analog, на дисплей выводится setup, в этом режиме кнопками + и - выставляется
    количество импульсов поступающих с датчика Y с шагом +/-1 отображающих на дисплее в нижней строке, ( setup )
    ( Y+1 X+3 )
    следующее нажатие selekt устанавливается количество импульсов с датчика Х.
    ( setup )
    ( Y+1 X+3 )
    третье нажатие selekt вывод на дисплей Programm, при нажатие кнопки Start вывод на дисплей Program start идет ожидание сигнала
    с кнопки Sunhro при поступлении сигнала, двигателя срабатывают на количество импульсов с датчиков и останавливается, снова идет
    ожидание Sunhro.
    Если количество импульсов в setup выставлено ноль для Y илиХ то соответствующий двигатель остается на одном месте не зависимо от поступления импульсов.

    При нажатии кнопки stop вывод на дисплей Programm stop процесс останавливается , при повторном нажатии переход в режим
    аналог вывод на дисплей Analog

    Код
    #include <Wire.h>  
      #include <LiquidCrystal_I2C.h> //импорт библиотеки I2C/TWI Interface  
      LiquidCrystal_I2C lcd(0x27,16,2); //установка адреса жк 0х27  
      int potyPin =1;  
      int potxPin =0;  
      int in1Pin =13;// управление моторoм Y  
      int in2Pin =12; // управление моторoм Y  
      int in3Pin =16; //управление моторoм X  
      int in4Pin =17; //управление моторoм X  
      int speedyPin =3;// скорость мотора Y ШИМ  
      int speedxPin =11;//скорость мотора Х ШИМ  

      void setup()  
      {  
        Serial.begin(9600);  
        lcd.init(); //инциализация жк  
          // установка pin датчиков холла, вход:  

         // установка pin  потенциомеров  
       pinMode(potyPin, INPUT);  
       pinMode(potxPin, INPUT);  
          //установка pin моторов  
       pinMode(in1Pin, OUTPUT);  
       pinMode(in2Pin, OUTPUT);  
       pinMode(in3Pin, OUTPUT);  
       pinMode(in4Pin, OUTPUT);  
       pinMode(speedyPin, OUTPUT);  
       pinMode(speedxPin, OUTPUT);  
      }  
         
        void loop()  
      {  

        lcd.backlight(); //вывод сообщения на жк  
        if (Serial.available()) //Ожидание с порта  
          {  
            lcd.setCursor(0, 0); //установка курсора на первую строку  
            lcd.print("Hello"); //вывод первой строки приветствия  
            delay(200);  
            lcd.setCursor(0, 1); //установка курсора на вторую стоку  
            lcd.print("SlideUno");  //вывод второй строки приветствия  
            delay(200);  
      // прочитать все доступные символы  
            while (Serial.available() > 0)  
              // выводим каждый символ на ЖК  
              lcd.write(Serial.read());  
              delay(1500);  
              // очистить экран  
            lcd.clear();  
                lcd.setCursor(0, 0);  
            lcd.print("Analog"); //вывод аналогово режима  
            delay(200);  
      // прочитать все доступные символы  
            while (Serial.available() > 0)  
              // выводим каждый символ на ЖК  
              lcd.write(Serial.read());  
               {  
            // первая часть analog  
            // инциализация джойстиков  
            int poty;    
            int potx;  
            // считывание значений с потенциометров  
            int val = map(analogRead(potxPin), 511, 1023, 511, 0);    
            Serial.println(val);  
            delay (20);  
            int val = map(analogRead(potyPin), 511, 1023, 511, 0);  
            Serial.println(val);  
            delay (20);  
            {  
              //управление двигателями  
             while(serial.available() == 0);  
             analogWrite(speedpin y,100);//Устанавливаем скорость как менять эти значения получая с поpта?  
             digitalWrite(in1Pin,LOW);// крутиться по часовой стрелке как менять эти значения получая с поpта?  
             digitalWrite(in2Pin,HIGH // как менять эти значения получая с порта?  
             analogWrite(speedPin x,100);//Устанавливаем скорость как менять эти значения получая с поpта?  
             digitalWrite(in3Pin,LOW);// крутиться по часовой стрелке как менять эти значения получая с поpта?  
             digitalWrite(in4Pin,HIGH // как менять эти значения получая с порта?  
           {
     
    SergДата: Пятница, 18.01.2013, 21:10 | Сообщение # 2
    Ампер
    Группа: Модераторы
    Сообщений: 510
    Репутация: 28
    Статус: Offline
    Автор, добавьте рисунок.
     
    sanikДата: Суббота, 19.01.2013, 02:56 | Сообщение # 3
    5 Вольт
    Группа: Пользователи
    Сообщений: 55
    Репутация: 0
    Статус: Offline
    добавил схему и переделал скетч:
      
    Код
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h> //импорт библиотеки I2C/TWI Interface
    LiquidCrystal_I2C lcd(0x27,16,2); //установка адреса жк 0х27
    int potyPin = 1;
    int potxPin = 0;
    int ENA = 11;
    int IN1 = 12;
    int IN2 = 13;
    int ENB = 11;
    int IN3 = 16;                         
    int IN4 = 17;

    void setup()
    {
         Serial.begin(9600); //открываем порт устанавливаем скорость передачи
         lcd.init(); //инциализация жк
           // установка pin датчиков холла, вход:

          // установка pin  потенциомеров
        pinMode(potyPin, INPUT);
        pinMode(potxPin, INPUT);    
           //установка pin моторов
    pinMode(IN1, OUTPUT);
    pinMode(IN2, OUTPUT);    
    pinMode(IN3, OUTPUT);    
    pinMode(IN4, OUTPUT);

    }
            
         void loop()
    {

         lcd.backlight(); //вывод сообщения на жк
         if (Serial.available()) //Ожидание с порта
         {

      
    Прикрепления: 5561923.jpg(312.1 Kb)


    Ну не знаю я

    Сообщение отредактировал sanik - Среда, 30.01.2013, 05:35
     
    Ivan-771Дата: Суббота, 19.01.2013, 03:49 | Сообщение # 4
    5 Вольт
    Группа: Пользователи
    Сообщений: 39
    Репутация: 0
    Статус: Offline
    Вы  свой код компилировали?
     
    sanikДата: Суббота, 19.01.2013, 05:41 | Сообщение # 5
    5 Вольт
    Группа: Пользователи
    Сообщений: 55
    Репутация: 0
    Статус: Offline
    Цитата (Ivan-771)
    Вы свой код компилировали?
    Просматривал примеры читал что обозначают функции, пытался разобраться... Сейчас нашел пример джойстика как раз подходит к моему случаю.


    Ну не знаю я
     
    Ivan-771Дата: Суббота, 19.01.2013, 05:44 | Сообщение # 6
    5 Вольт
    Группа: Пользователи
    Сообщений: 39
    Репутация: 0
    Статус: Offline
    Я, в том плане,  проверяли ли вы его на ошибки?
     
    sanikДата: Суббота, 19.01.2013, 09:56 | Сообщение # 7
    5 Вольт
    Группа: Пользователи
    Сообщений: 55
    Репутация: 0
    Статус: Offline
    Проверял smile сейчас по другому делаю

    Ну не знаю я

    Сообщение отредактировал sanik - Суббота, 19.01.2013, 09:56
     
    Ivan-771Дата: Суббота, 19.01.2013, 10:08 | Сообщение # 8
    5 Вольт
    Группа: Пользователи
    Сообщений: 39
    Репутация: 0
    Статус: Offline
    И что же?
    CTRL+R, пробовали нажимать?

    на вашем проекте не мало ошибок.
    ругается на это   
    int val = map(analogRead(potхPin potyPin), 0, 1023, 0, 8);


    Сообщение отредактировал Ivan-771 - Суббота, 19.01.2013, 10:11
     
    sanikДата: Суббота, 19.01.2013, 22:14 | Сообщение # 9
    5 Вольт
    Группа: Пользователи
    Сообщений: 55
    Репутация: 0
    Статус: Offline
    Раньше не проверял код на ошибки потому что не знал как это делается sad
    Serg,
    Помогите мне с моторами!!! Пожалуйста. Как их к осям джойстика подцепить? И менять вправление?
    Код

    Добавлено (19.01.2013, 22:14)
    ---------------------------------------------
    Ivan-771, Сейчас уже не ругается... Я не знаю как вот это:
    Код
    int ENA = 11;   
       int IN1 = 12;   
       int IN2 = 13;   
       int ENB = 11;   
       int IN3 = 16;                         
       int IN4 = 17;

    Объявить переменными пробовал ругаться начинает...


    Ну не знаю я

    Сообщение отредактировал sanik - Среда, 30.01.2013, 05:38
     
    SergДата: Воскресенье, 20.01.2013, 12:45 | Сообщение # 10
    Ампер
    Группа: Модераторы
    Сообщений: 510
    Репутация: 28
    Статус: Offline
    sanik, а как устроены джойстики, какие моторы и как они управляются?
     
    Ivan-771Дата: Воскресенье, 20.01.2013, 12:48 | Сообщение # 11
    5 Вольт
    Группа: Пользователи
    Сообщений: 39
    Репутация: 0
    Статус: Offline
    Цитата (sanik)
    Ivan-771, Сейчас уже не ругается... Я не знаю как вот это:Посмотреть код
    ПечатьОписание
    ·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······1 40·······150
    int ENA = 11;
    int IN1 = 12;
    int IN2 = 13;
    int ENB = 11;
    int IN3 = 16;
    int IN4 = 17;
    1.2.3.4.5.6.

    Объявить переменными пробовал ругаться начинает...

    Незнаю как в ардуино переменные объявляются, ибо пишу на CodeVisionAVR
    я, использовал у себя так.
            int  i=1;    // для блокнота
            int a=1;   //чтение ОЗУ
            int b=1;
            int d=1;  //форматирование
            int  f=0; //для консоли.
     
    sanikДата: Воскресенье, 20.01.2013, 18:18 | Сообщение # 12
    5 Вольт
    Группа: Пользователи
    Сообщений: 55
    Репутация: 0
    Статус: Offline
    Цитата (Serg)
    а как устроены джойстики, какие моторы и как они управляются?
    Драйвер на моторы http://dvrobot.ru/?show=shop&item_id=218 моторы простые с редукторами, джойстик грибок.



    Прикрепления: 2803548.jpg(34.9 Kb) · 5909525.jpg(64.9 Kb)
     
    ФОРУМ ДВ Робот dvrobot.ru » DV ROBOT » Arduino - вопросы и ответы. » Контроллер для двух моторов
    • Страница 1 из 1
    • 1
    Поиск:

    ДВ Робот - Чат