roboforum.ru

Технический форум по робототехнике.

Вопросы новичка.

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

Re: Вопросы новичка.

Сообщение Scorpio » 13 авг 2018, 17:15

Скетч вроде правильный. А GO нажимал? Напиши какие-нибудь ответы от дуни, чтобы видеть, идет ли обмен.

Добавлено спустя 40 минут 6 секунд:
Строчку
if (cmd.startsWith("RBT?"))SendMail("RBT!");
забыл.
Не понимаю, как прога у тебя соединилась с другим портом....
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Вопросы новичка.

Сообщение dimamichev » 13 авг 2018, 17:54

Сейчас отвлекли меня дела, строчку - я забыл в скетче прописать? Смешное что даже если ничего не подключать и вызывать соединение, то высвечивает зелёным СОМ3, совсем не так как в шашках.
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

Re: Вопросы новичка.

Сообщение Scorpio » 13 авг 2018, 18:45

Принцип такой же как в шашках. Видать я что-то лишнее стер ненароком в коде. Попозже посмотрю.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Вопросы новичка.

Сообщение Scorpio » 14 авг 2018, 04:03

Люди на таких рисовалках как у тебя бабки зарабатывают
Обрати внимание, что манипулятор не висит, а катается по бумаге. А фломастер на пружинке и поднимается тросиком. Прикольно.
picassobot.jpg


Добавлено спустя 18 минут 9 секунд:
Такая платка идет с удобной библиотекой.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Вопросы новичка.

Сообщение dimamichev » 14 авг 2018, 07:28

Да, опорный шарик рассмотрел,тросик тоже не стандартно. Плечо большое, сантиметров 15 или больше - на весь лист хватает. Рисуют,получается, в собственном приложении?Всё таки сервы имеют свой индивидуальный графический стиль и рандомность в командах более точных конструкций не даст такого точного второго повтора.
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

Re: Вопросы новичка.

Сообщение Scorpio » 14 авг 2018, 08:01

Точнее принтера все равно не получится. Зато прикольно!
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Вопросы новичка.

Сообщение Scorpio » 15 авг 2018, 07:45

Лови новую версию. Может будет коннектится. Внутри подправленный скетч тоже.
Такое ощущение, что всегда не дорисовывает до конца первую букву. Пока еще не понял, почему.
stepper2.jpg
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Вопросы новичка.

Сообщение dimamichev » 15 авг 2018, 10:05

Не, всё равно СОМ3, а не 5.
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

Re: Вопросы новичка.

Сообщение Scorpio » 15 авг 2018, 16:14

Чудеса какие-то! Не знаю, что и предположить. Разве что у тебя на СОМ3 остался висеть шашечный манипулятор и он подключается первым. Система подключения абсолютно одинаковая с шашками. Сделал жесткий СОМ5, без всякого поиска. Пробуй.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Вопросы новичка.

Сообщение dimamichev » 15 авг 2018, 17:35

Не судьба, вообще не коннектится.
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

Re: Вопросы новичка.

Сообщение Scorpio » 15 авг 2018, 20:23

А с шашечной прогой таже дуня конектится?
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Вопросы новичка.

Сообщение Dmitry__ » 15 авг 2018, 20:42

Scorpio, да приконнектись ты к нему TeamViewer-ом, сколько можно читать про этот com порт? :)
Попкорн стынет... :shock:
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Вопросы новичка.

Сообщение Scorpio » 15 авг 2018, 23:01

Не знаю кто такой TeamViewer, но ты прав. Мучения с СОМ портом, так же как и все не инфармативные для общественности посты, нам лучше перенести в личную переписку.
Прога позволяет нагенерить массив точек и вставить его прямо в дуню, если подключится никак. Хотя чудес не бывает. Я скетч пробовал на своей дуне. Все подключается и обмен нормально идет.

Добавлено спустя 42 минуты 34 секунды:
Думаю расширить возможности для рисования портретов с камеры,но без связи с дуней тут уже точно не получится.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Вопросы новичка.

Сообщение dimamichev » 16 авг 2018, 00:17

С шашечной прогой я эту дуню и гонял. Что, опять пробовать на шашках?..
Дошёл модуль часов реального времени (наконец то), такой скетч забил, цифры грубые, но вроде работает всё правильно.
Код: Выделить всёРазвернуть
///////////// СТАНОК ДЛЯ РИСОВАНИЯ ВРЕМЕНИ ПО КНОПКЕ СБРОСА //////////////////////////////
/////////////////////////// ARDUINO UNO //////////////////////////////////////////////////
#include <Servo.h>
#include <iarduino_RTC.h>
iarduino_RTC time(RTC_DS3231);
#define motor_Y_f1 8
#define motor_Y_f2 9
#define motor_Y_f3 10
#define motor_Y_f4 11

#define motor_X_f1 4
#define motor_X_f2 5
#define motor_X_f3 6
#define motor_X_f4 7

byte a0=140;byte a=a0;// угол исходного положения пера - поднято
int n=10;//переменная единицы временного интервала
int i=0;// счётчик
int i1=0;// счётчик
float X=0;float Y=0;//переменные учёта положения пера относительно начала координат
String inputString;// строка данных
byte tablY[16]={0,1,1,1,
                1,1,0,1,
                1,0,1,1,
                1,1,1,0};// ТАКТЫ ВКЛЮЧЕНИЯ - полношаговый режим в одну обмотку питанием (биполярный)
byte tablX[16]={1,0,0,0,
                0,1,0,0,
                0,0,1,0,
                0,0,0,1};// ТАКТЫ ВКЛЮЧЕНИЯ - полношаговый режим в одну обмотку питанием (униполярный)               
int K;
String cmd = "";
Servo servo1;



void setup() {
time.begin();
//time.settime(0,43,14,15,8,18,3);  // 0  сек, 43 мин, 14 час, 15, АВГУСТА, 2018 года, СРЕДА
Serial.begin(9600);
servo1.attach(12);
servo1.write(a0);delay(10*n);servo1.write(a0-5);//начальный подъём пера
pinMode(motor_Y_f1, OUTPUT);   //  определение вывода как ВЫХОД
pinMode(motor_Y_f2, OUTPUT);
pinMode(motor_Y_f3, OUTPUT);
pinMode(motor_Y_f4, OUTPUT);
digitalWrite(motor_Y_f1, HIGH); digitalWrite(motor_Y_f2, HIGH); digitalWrite(motor_Y_f3, HIGH); digitalWrite(motor_Y_f4, HIGH);// исходное состояние  - обмотки обесточены 
pinMode(motor_X_f1, OUTPUT);   //  определение вывода как ВЫХОД
pinMode(motor_X_f2, OUTPUT);
pinMode(motor_X_f3, OUTPUT);
pinMode(motor_X_f4, OUTPUT);
digitalWrite(motor_X_f1, LOW); digitalWrite(motor_X_f2, LOW); digitalWrite(motor_X_f3, LOW); digitalWrite(motor_X_f4, LOW);// исходное состояние  - обмотки обесточены 
}

void loop()
    {
  Vektor(5,150);// постановка пера на положение первой цифры
  cmd=time.gettime("H"); K =cmd.substring(0,1).toInt();Cifra (K);K =cmd.substring(1).toInt();Cifra (K);//рисуем количество часов
  Dvoetoschie();//рисуем двоеточие
  cmd=time.gettime("i"); K =cmd.substring(0,1).toInt();Cifra (K);K =cmd.substring(1).toInt();Cifra (K);//рисуем количество минут
    VozvratPera ();
      me:goto me;
    }
    ////////////////////////////////////////////////////////
    //////////////функция рисования двоеточия
    ///////////////////////////////////////////////////////
    void Dvoetoschie ()
    {
    byte R=14;//единица размера сегмента в мм
    Vektor(R/2,90);up_down_pen(true); Vektor(R/2,90);up_down_pen(false);  Vektor(R/2,90);up_down_pen(true);Vektor(R/2,90);
    up_down_pen(false);Vektor(2*R,270); Vektor(4,180);
    }
    /////////////////////////////////////////////////////////
    ///////// функция рисования цифры заданной /////////////
    ////////////////////////////////////////////////////////
    void Cifra (int kk)
    {
      byte R=14;//единица размера сегмента в мм
      up_down_pen(true);
    switch (kk)
    {
      case 0:
     Vektor(2*R,90);Vektor(R,180);Vektor(2*R,270);Vektor(R,0);
      break;
      case 1:
     up_down_pen(false); Vektor(R,90); up_down_pen(true);Vektor(R*1.4,135);Vektor(2*R,270);up_down_pen(false); Vektor(R,0);
      break;
      case 2:
      up_down_pen(false); Vektor(2*R,90);up_down_pen(true);Vektor(R,180);Vektor(R,270);Vektor(R*1.4,315);Vektor(R,180);up_down_pen(false);Vektor(R,0);
      break;
      case 3:
      Vektor(R*1.4,135);Vektor(R,0);Vektor(R*1.4,135);Vektor(R,0);up_down_pen(false);Vektor(2*R,270);
      break;
      case 4:
       up_down_pen(false); Vektor(2*R,90);up_down_pen(true);Vektor(R,270);Vektor(R,180);Vektor(R,90);up_down_pen(false);Vektor(R,270);
       up_down_pen(true);Vektor(R,270);up_down_pen(false);Vektor(R,0);
      break;
      case 5:
      Vektor(R,180);Vektor(R,90);Vektor(R,0);Vektor(R,90);Vektor(R,180); up_down_pen(false);Vektor(R*1.4,315);Vektor(R,270);
      break;
      case 6:
      up_down_pen(false);Vektor(R,90);Vektor(R*1.4,135);up_down_pen(true);Vektor(R*1.4,315);Vektor(R,270);Vektor(R,180);Vektor(R,90);Vektor(R-1,0);up_down_pen(false);
      Vektor(R,270);
      break;
      case 7:
      up_down_pen(false);Vektor(2*R,90);up_down_pen(true); Vektor(R,180); Vektor(R*1.4,315);Vektor(R,270);
      break;
      case 8:
      Vektor(2*R,90);Vektor(R,180);Vektor(2*R,270);Vektor(R+1,0);up_down_pen(false); Vektor(R,90); up_down_pen(true);Vektor(R+1,180);up_down_pen(false);Vektor(R*1.4,315);
      break;
      case 9:
      Vektor(R*1.4,135);Vektor(R,90);Vektor(R,0);Vektor(R,270);Vektor(R,180);up_down_pen(false);Vektor(R*1.4,315);
      break;
    }
    up_down_pen(false); Vektor(R+3,180);// подъём-перемещение пера на следующую цифру
    }
/////////////////////////////////////////////////////////////
////// функция рисования отрезка длиной d под углом a
////////////////////////////////////////////////////////////
void Vektor(float d,int a)
{
  float x=d*cos(PI*a/180); float y=d*sin(PI*a/180);
   Otrezok(x,y);
  }
////////////////////////////////////////////////////////////////
////функция рисования отрезка по конечным координатам x и y
////////////////////////////////////////////////////////////////
void Otrezok(float x, float y)
{
  int nx;
  int ny=10;//принимаем как постоянную для задания скорости
  if (x!=0&&y!=0){nx=ny*2.35*abs(y)/abs(x);if (nx<3){nx=5;}}else {nx=50;}// вычисляем вторую постоянную для отрезка с учётом крайних недопустимых значений - 0 и бесконечность
  long tx=millis();long ty=millis();
  Y=Y+y;//текущий учёт положения пера относительно начала отсчёта
  y=4.7*y;//переводной множитель из миллиметров в число шагов двигателя
  X=X+x;//текущий учёт положения пера относительно начала отсчёта
  x=2*x;//переводной множитель из миллиметров в число шагов двигателя
  int j1=0;int k1;if (y>=0){k1=1;}else {k1=-1;}
  int j2=0;int k2;if (x>=0){k2=1;}else {k2=-1;}
  while ((j1<=(int)abs(y)-1)||(j2<=(int)abs(x)-1))
  {
  if(j1!=(int)abs(y)&&(millis()-ty>ny))//условие совершения шага
  {ty=millis();
  if(i<0){i=12;}if(i>12){i=0;}////условия зацикливания тактов по кругу
  digitalWrite(motor_Y_f1, tablY[i]);digitalWrite(motor_Y_f2, tablY[i+1]);digitalWrite(motor_Y_f3, tablY[i+2]);digitalWrite(motor_Y_f4, tablY[i+3]);
  i=i+4*k1;j1=j1+1;//условия перехода на следующий такт
  }
  if(j2!=(int)abs(x)&&(millis()-tx>nx))//условие совершения шага
  {tx=millis();
  if(i1<0){i1=12;}if(i1>12){i1=0;}//условия зацикливания тактов по кругу
  digitalWrite(motor_X_f1, tablX[i1]);digitalWrite(motor_X_f2, tablX[i1+1]);digitalWrite(motor_X_f3, tablX[i1+2]);digitalWrite(motor_X_f4, tablX[i1+3]);
  i1=i1+4*k2;j2=j2+1;//условия перехода на следующий такт
  } 
  }
  digitalWrite(motor_Y_f1, HIGH); digitalWrite(motor_Y_f2, HIGH); digitalWrite(motor_Y_f3, HIGH); digitalWrite(motor_Y_f4, HIGH);// исходное состояние  - обмотки обесточены
  digitalWrite(motor_X_f1, LOW); digitalWrite(motor_X_f2, LOW); digitalWrite(motor_X_f3, LOW); digitalWrite(motor_X_f4, LOW);// исходное состояние  - обмотки обесточены     
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////функция возврата пера в исходное положение на начало отсчёта
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void VozvratPera ()
{
  up_down_pen(false);
  Otrezok (-X,-Y);
  X=0;Y=0;

  }
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////функция поднимания-опускания пера (значения аргумента false и true  соответственно)/////
void  up_down_pen(boolean  k)
{
  while (a>87&&k==1)
  {servo1.write(a);a=a-1;delay(n);}if(k== true ){a=87;}
   while (a<a0&&k==0)
  {servo1.write(a);a=a+1;delay(n);}if (k==false){a=a0;delay(10*n);servo1.write(a0-5);}
  }
  /////////////////////////////////////////////////////////////////////////////////////////////////


Добавлено спустя 14 минут 59 секунд:
Проверил опять на шашках, всё коннектится на "компот 5".
Вложения
20180815_185544.jpg
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

Re: Вопросы новичка.

Сообщение Angel71 » 16 авг 2018, 01:16

1.jpg

https://makezine.com/2015/04/09/4-1-drawbot-arduino-compatible-doubles-kickstarter-goal/
"cnc drawing machine grbl"
контуры из каритнок
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Пред.След.

Вернуться в Arduino и другие Xduino

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

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