лазерный ЧПУ гравер - ФОРУМ ДВ Робот dvrobot.ru
Воскресенье, 18.11.2018, 09:35
Главная Мой профиль Регистрация Выход
  • НАШ МАГАЗИН
  • Вы вошли как Гость | Группа "Гости"Приветствую Вас, Гость
    [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
    • Страница 1 из 1
    • 1
    Модератор форума: Serg, GRACH  
    ФОРУМ ДВ Робот dvrobot.ru » DV ROBOT » Arduino - вопросы и ответы. » лазерный ЧПУ гравер
    лазерный ЧПУ гравер
    xdramxДата: Среда, 23.07.2014, 16:13 | Сообщение # 1
    1.5 Вольт
    Группа: Пользователи
    Сообщений: 3
    Репутация: 0
    Статус: Offline
    Ребят всем привет я чайник. в общем видел темку как из DVD сделали гравер хочу сделать такой же нашел скетч но мне нужны только 2 оси. Помогите пожалуйсто отредактировать его а лучше так чтоб и я понял что и зачем заранее спасибо int motorPins[3][2] = {{8,9},{10,11},{12, 13}};
    int count;
    int count2[3] = {0,0,0};
    int delayTime = 500;
    int val = 0;
    int rot=0; int incomingByte = 0;
    int sign=1;
    int s_p=40;
    //Процедура настройки прошивки
    void setup() {
    int i; Serial.begin(9600);
    pinMode(2, OUTPUT);
    for (i=0; i<3; i++) {
    for (count = 0; count < 4; count++) {
    pinMode(motorPins[i][count], OUTPUT); //
    установка режима работы цифровых pin'ов Ардуино
    }
    }
    delayTime=2; //задержка между шагами 3 мс (2
    мс - время реакции ШД на подачу напряжения)
    } //Поворот двигателя с номерм sm на один шаг
    вперёд
    void moveForward(int sm) {
    digitalWrite(motorPins[sm][1], HIGH);
    digitalWrite(motorPins[sm][0], HIGH);
    digitalWrite(motorPins[sm][0], LOW); }
    //Поворот двигателя с номерм sm на один шаг
    назад
    void moveBackward(int sm) {
    digitalWrite(motorPins[sm][1], LOW);
    digitalWrite(motorPins[sm][0], HIGH); digitalWrite(motorPins[sm][0], LOW);
    }
    //Одновременный поворот двигателей 0, 1, 2 на
    x, y, z шагов соответственно
    void MoveSM(long x, long y, long z) {
    long c[3], c2[3]; double c1[3], d[3];
    long m, i;
    boolean flg;
    long ms;
    long d1, d2, t;
    c[0] = x; c[1] = y;
    c[2] = z;
    if (z<0) s_p=-z; //количество шагов на 1 пиксель
    m = 1;
    for (i=0; i<2; i++) {
    if (m < abs(c[i])) m = abs(c[i]); }
    for (i=0; i<2; i++) {
    c1[i] = 0;
    d[i] = 1.0 * c[i] / m;
    c2[i] = 0;
    } flg = false;
    for (i=0; i<2; i++) {
    if (abs(c1[i]) < abs(c[i])) flg=true;
    }
    t=m;
    if (z>0) { d1=s_p*z/255;
    d2=s_p/2-d1/2;
    d1=d2+d1;
    }
    while (flg) {
    flg=false; for (i=0; i<2; i++) {
    if (abs(c1[i]) < abs(c[i]))
    c1[i] += d[i];
    if (abs(c1[i]) - abs(c2[i]) >= 0.5) {
    if (c[i]>0) {
    c2[i]++; moveForward(i);
    } else {
    c2[i]--;
    moveBackward(i);
    }
    } if (abs(c1[i]) < abs(c[i])) flg=true;
    }
    if (z>0 && t==d1) digitalWrite(2, HIGH);
    t--;
    delay(2);
    if (z>0 && t==d2) digitalWrite(2, LOW); }
    }
    //Основной цикл
    void loop() {
    if (Serial.available() > 0) { //Пришла команда
    long c[3]={0,0,0}; int i;
    sign=1;
    i=0;
    incomingByte = Serial.read();
    while (incomingByte!=';') { //Читаем входящую
    строку, признак конца строки знак "точка с запятой"
    if (c[i]==0) {
    if (incomingByte=='-')
    sign=-1;
    }
    if (incomingByte==',') { c[i]*=sign;
    sign=1;
    i++;
    } else if (incomingByte>='0' && incomingByte<='9') {
    c[i]=c[i]*10+incomingByte-'0';
    } while (Serial.available() == 0) {
    delay(2);
    }
    incomingByte = Serial.read();
    }
    c[i]*=sign; MoveSM(c[0],c[1],c[2]); //Вращаем двигатели на
    заданное число шагов
    Serial.println("OK"); //Отправляем компьютеру
    сообщение "OK", значит можно высылать новую
    команду
    } else
    delay(2); //Если ничего не пришло, ждём 2
    миллисекуды.
     
    SergДата: Среда, 23.07.2014, 23:11 | Сообщение # 2
    Ампер
    Группа: Модераторы
    Сообщений: 510
    Репутация: 28
    Статус: Offline
    Просто не подключайте мотор третьей оси.
     
    xdramxДата: Среда, 23.07.2014, 23:50 | Сообщение # 3
    1.5 Вольт
    Группа: Пользователи
    Сообщений: 3
    Репутация: 0
    Статус: Offline
    Спасибо за совет smile просто хотелось бы разобраться в алгоритме . Потомучто ничего не понятно
     
    SergДата: Четверг, 24.07.2014, 00:29 | Сообщение # 4
    Ампер
    Группа: Модераторы
    Сообщений: 510
    Репутация: 28
    Статус: Offline
    Очень часто сложно разобраться в в чужом коде.
    Более того, бывает даже в своем коде трудно разобраться, спустя пару месяцев. biggrin
     
    xdramxДата: Четверг, 24.07.2014, 01:39 | Сообщение # 5
    1.5 Вольт
    Группа: Пользователи
    Сообщений: 3
    Репутация: 0
    Статус: Offline
    И на эттом спасибо тоже
     
    BochkarДата: Воскресенье, 14.09.2014, 18:54 | Сообщение # 6
    1.5 Вольт
    Группа: Пользователи
    Сообщений: 8
    Репутация: 0
    Статус: Offline
    Данный код, а так же инструкции по установке и калибровки станка чпу на ардуино можно найти здесь http://www.ecnc.ru/ 
    Автор старается выложить максимум информации по разработке своего станка ЧПУ
     
    ФОРУМ ДВ Робот dvrobot.ru » DV ROBOT » Arduino - вопросы и ответы. » лазерный ЧПУ гравер
    • Страница 1 из 1
    • 1
    Поиск:

    ДВ Робот - Чат