чем писать в COM Poprt arduino
- Войдите на сайт для отправки комментариев
Пнд, 09/06/2014 - 12:05
День добрый!
стоит задача заменить старый девайс работающий через LPT порт компьютера
смысл работы простой в LPT(пин1) загоняем 1 при нажатии на ярлычек в виндах (подключая оборудование), а при нажатии на другой ярлык загоняеться в LPT(пин1) 0 (отключяя оборудование).
сейчас материнки идут без LPT и дополнительно приобретать LPT нет желания.
Какой програмулиной из командной строки(по ярлыку в виндах) можно менять на пинах ардуины уровни(те писать команды в прот ардуины)?
День добрый!
стоит задача заменить старый девайс работающий через LPT порт компьютера
смысл работы простой в LPT(пин1) загоняем 1 при нажатии на ярлычек в виндах (подключая оборудование), а при нажатии на другой ярлык загоняеться в LPT(пин1) 0 (отключяя оборудование).
сейчас материнки идут без LPT и дополнительно приобретать LPT нет желания.
Какой програмулиной из командной строки(по ярлыку в виндах) можно менять на пинах ардуины уровни(те писать команды в прот ардуины)?
я бы попробовал управление станком попользовать
автор именно это и делал переход с lpt на usb<->arduino uno
cnc_1_0_10.zip
страничку автора не помню сами надете?
автор связь windows с arduino uno
код в uno такой зашивал
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 bz=0; const int buttonPin = 2; int buttonState = 0; //Процедура настройки прошивки void setup() { int i; Serial.begin(9600); for (i=0; i<3; i++) { for (count = 0; count < 4; count++) { pinMode(motorPins[i][count], OUTPUT); //установка режима работы цифровых pin'ов Ардуино } } pinMode(buttonPin, INPUT); delayTime=3; //задержка между шагами 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; c[0] = x; c[1] = y; c[2] = z; m = 1; for (i=0; i<3; i++) { if (m < abs(c[i])) m = abs(c[i]); } for (i=0; i<3; i++) { c1[i] = 0; d[i] = 1.0 * c[i] / m; c2[i] = 0; } flg = false; for (i=0; i<3; i++) { if (abs(c1[i]) < abs(c[i])) flg=true; } while (flg) { flg=false; for (i=0; i<3; 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; } delay(2); if (z>0) { buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { flg=false; } } } if (z>0) { Serial.println(c2[2]); bz=c2[2]; } } //Основной цикл 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; bz=0; MoveSM(c[0],c[1],c[2]); //Вращаем двигатели на заданное число шагов if (bz>0) { MoveSM(0,0,-bz); } Serial.println("OK"); //Отправляем компьютеру сообщение "OK", значит можно высылать новую команду } else delay(2); //Если ничего не пришло, ждём 2 миллисекуды. }если получится отпишитесь
Взять да купить адаптер USB/LPT. А так (наверное проще всего) на Вижуал Бейсике написать можно. Или Си.
смысл понятен.
спасибо.
Вот еще: http://www.ftdichip.com/Support/FTSwExamples.htm
если свою софтину писать.