Выдвижной экран(планшет в авто), подскажите или помогите..

Вопросы программирования в системе Ардуино
Аватара пользователя
z-level
Сообщения: 5
Зарегистрирован: 24 май 2018, 07:52

Выдвижной экран(планшет в авто), подскажите или помогите..

Сообщение z-level » 24 май 2018, 08:15

День добрый.

В проектах ардуино и программировании я новичок, но так как работаю в IT сфере думаю несложно будет вникнуть..

Планирую сделать выдвижной экран (планшет).
В наличии есть полуживая автомагнитола с выдвижным экраном на одном моторчике, arduino Mini Pro atmega328 5V 16M, драйвер Easydriver 4.4, шаговик из мфу (принтера).

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

Подскажите по доработке компонентов кнопки, концевики, программная часть..


Возможно кто-то сможет помочь проверить на ошибки скеч или доработать/оптимизировать ?
► Показать


Когда всё будет работать создам тему в проектах и более подробно опишу +фото.
С уважением Михаил.


Эдуард
Администратор
Сообщения: 363
Зарегистрирован: 30 окт 2016, 20:53

Re: Выдвижной экран(планшет в авто), подскажите или помогите..

Сообщение Эдуард » 24 май 2018, 19:10

Здравствуйте!
Задачу надо реализовывать по этапам. Правильно я понял, что первый этап это:
    Есть двигатель выезда экрана, два концевика, две кнопкми управления.
    По кнопке открыть двигатель вращается в определенном направлении, пока не достигнет соответствующего концевика.
    По кнопке закрыть двигатель вращается в противоположном направлении до срабатывания другого концевика.

Аватара пользователя
z-level
Сообщения: 5
Зарегистрирован: 24 май 2018, 07:52

Re: Выдвижной экран(планшет в авто), подскажите или помогите..

Сообщение z-level » 24 май 2018, 19:24

Получается 2 кнопки на выезд/заезд, 2 кнопки для регулировки угла наклона, два концевика.
1. Кнопка выдвижения (мотор работает в одном направлении до срабатывания концевика, остановка)
2. Кнопки регулировки угла наклона ( движение мотора в одном или другом направлении на небольшое количество шагов(оборотов), остановка с удержанием)
3. Кнопка заезда (возврата), (мотор работает в обратном направлении до срабатывания 2ого концевика, остановка)

1 и 3 кнопки необходимы для управления при прирывании электропитания.

Завтра выложу фото выезжающего механизма (будет понятнее.

Заранее спасибо :)
С уважением Михаил.

Эдуард
Администратор
Сообщения: 363
Зарегистрирован: 30 окт 2016, 20:53

Re: Выдвижной экран(планшет в авто), подскажите или помогите..

Сообщение Эдуард » 24 май 2018, 19:34

Я бы сделал это как-то так. Проверять не на чем, поэтому в программе могут быть ошибки. Но сам принцип должен быть понятен. Все делается параллельно, цикл loop() не зависает, в программу можно добавлять новые блоки.

Код: Выделить всё

#include <TimerOne.h>
#include <Button.h>
#include <StepDirDriver.h>

Button button1(2, 40); // остановить двигатель, задний концевик
Button button2(3, 40); // остановить двигатель, передний концевик
Button button3(4, 40); // выдвижение экрана
Button button4(5, 40); // закрытие экрана

StepDirDriver myMotor(10, 11, 12);  // создаем объект типа StepMotor, задаем выводы для фаз

byte  mode=0; // режим: 0 - стоп, 1 - открывает, 2 - закрывает

void setup() {
  Timer1.initialize(250);  // инициализация таймера 1, период 250 мкс
  Timer1.attachInterrupt(timerInterrupt, 250);  // задаем обработчик прерываний
  myMotor.setDivider(20);     // делитель частоты 20   
  myMotor.setMode(1, true);  // полу  шаговый режим, с фиксацией ротора при остановке
  delay(50);
  button3.flagClick= false; 
  button4.flagClick= false; 
}

void loop() {

  if( mode == 0 ) {
    //------------------------------------------- стоп
    myMotor.step(0);
    if( button3.flagClick == true ) mode= 1;   
    if( button4.flagClick == true ) mode= 2;           
  }
  else if ( mode == 1 ) {
    //------------------------------------------- открывает
    myMotor.step(-32000);  // выдвижение экрана
    if( button2.flagPress == true ) {
      // открылся
      button3.flagClick= false; 
      button4.flagClick= false; 
      mode= 0;
    }   
  }
  else if ( mode == 2 ) {
    //-------------------------------------------  закрывет
    myMotor.step(32000);  // закрытие экрана
    if( button1.flagPress == true ) {
      // закрылся
      button3.flagClick= false; 
      button4.flagClick= false; 
      mode= 0;
    }   
   
  }
  else mode=0;

}

//-------------------------------------- обработчик прерывания 0,25 мс
void  timerInterrupt() {
  myMotor.control(); // управвление двигателем
  button1.filterAvarage();  // вызов метода фильтрации кнопки
  button2.filterAvarage();  // вызов метода фильтрации кнопки
  button3.filterAvarage();  // вызов метода фильтрации кнопки
  button4.filterAvarage();  // вызов метода фильтрации кнопки   
}

Аватара пользователя
z-level
Сообщения: 5
Зарегистрирован: 24 май 2018, 07:52

Re: Выдвижной экран(планшет в авто), подскажите или помогите..

Сообщение z-level » 24 май 2018, 19:39

Спасибо, завтра или в выходные погоняю..
С уважением Михаил.

Аватара пользователя
z-level
Сообщения: 5
Зарегистрирован: 24 май 2018, 07:52

Re: Выдвижной экран(планшет в авто), подскажите или помогите..

Сообщение z-level » 24 май 2018, 19:44

Эдуард

Кнопки и концевики подключать через аналоговые контакты с резистором 30-100кОм на землю ?
С уважением Михаил.

Эдуард
Администратор
Сообщения: 363
Зарегистрирован: 30 окт 2016, 20:53

Re: Выдвижной экран(планшет в авто), подскажите или помогите..

Сообщение Эдуард » 26 май 2018, 19:07

Почему? Через цифровые. Библиотека Button включает подтягивающие резисторы на 5 В. В рабочей схеме лучше добавить внешние подтягивающие резисторы 5 - 10 кОм.

Аватара пользователя
z-level
Сообщения: 5
Зарегистрирован: 24 май 2018, 07:52

Re: Выдвижной экран(планшет в авто), подскажите или помогите..

Сообщение z-level » 01 июн 2018, 12:41

фото
Вложения
3.png
2.png
1.png
С уважением Михаил.


Вернуться в «Программирование Ардуино»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей