|
Контроллер для двух моторов
|
|
| 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()) //Ожидание с порта {
Ну не знаю я
Сообщение отредактировал 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
| Проверял сейчас по другому делаю
Ну не знаю я
Сообщение отредактировал 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
| Раньше не проверял код на ошибки потому что не знал как это делается 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 моторы простые с редукторами, джойстик грибок.
|
| |
| |