| 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
| Спасибо за совет просто хотелось бы разобраться в алгоритме . Потомучто ничего не понятно
|
| |
| |
| Serg | Дата: Четверг, 24.07.2014, 00:29 | Сообщение # 4 |
|
Ампер
Группа: Модераторы
Сообщений: 510
Репутация: 28
Статус: Offline
| Очень часто сложно разобраться в в чужом коде. Более того, бывает даже в своем коде трудно разобраться, спустя пару месяцев.
|
| |
| |
| 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/ Автор старается выложить максимум информации по разработке своего станка ЧПУ
|
| |
| |