Doodle Bot

sahavol
Offline
Зарегистрирован: 14.02.2014

Подарили мне игрушку которая рисует, считая что я программист(я нет)
Все сделал по инструкции, сам робот работает на arduino плата /w ATMega8, драйвер установил и видит его как порт 7
Успешно загрузил через ардуино файл penWriting (хз что это по инструкции) Далее 2 выхода из ситуации воспольозоваться программой которую предоставили вместе с диском (там просто стрелочки , задержка, скорость, рисовать или нет, с кнопкой Upload) или загрузить готовые файлы чтобы робот исполнял уже готовые скрипты, но к сожелению не один он не загружается(пример ниже), пишет разные ошибки, ошибка именно к этом у примеру  expected unquaitfied-id before 'reinterpret_cast'.

А програма которую предоставили после аплауда горят лампочки "якобы загружает" и ничего не происходит

Предпологаю, что не правильное подключение (все делал по схеме)
Кто нибудь сможет помочь в моей не легкой проблеме?

Буду рад любой помощи!

 

void A()
{
  Turn(-90);Down();Go(4);
  Turn(45);Go(3);
  Turn(90);Go(3);
  Turn(45);Go(4);
  Up();Go(-3);
  Turn(-90);Down();
  Go(-4);Up(); 
  Turn(90);Go(3);
  Turn(-90);Go(6);
}

void B()
{
  Down();Go(3); 
  Turn(-45);Go(1);
  Turn(-45);Go(1);
  Turn(-45);Go(1);
  Turn(-45);Go(3);
  Up();
  Turn(90); Go(-3);
  Down();Go(6);
  Turn(90);Go(3);
  Turn(45);Go(1);
  Turn(45);Go(1);
  Turn(45);Go(1);
  Up();
  Turn(-45);Go(3);
  Turn(-90);Go(3);
}

 

maksim
Offline
Зарегистрирован: 12.02.2012
sahavol
Offline
Зарегистрирован: 14.02.2014

толсто, но все таки платы везде одни и те же и ошибки тоже. Почему с программы ардуино он не хочет загружать на робота при условии что все настройки выполнены

Клапауций
Offline
Зарегистрирован: 10.02.2013

sahavol пишет:

толсто, но все таки платы везде одни и те же и ошибки тоже. Почему с программы ардуино он не хочет загружать на робота при условии что все настройки выполнены

публикуйте сюда рекомендуемые настройки - бум смотреть, что советут создатели.

sahavol
Offline
Зарегистрирован: 14.02.2014

Клапауций пишет:

sahavol пишет:

толсто, но все таки платы везде одни и те же и ошибки тоже. Почему с программы ардуино он не хочет загружать на робота при условии что все настройки выполнены

публикуйте сюда рекомендуемые настройки - бум смотреть, что советут создатели.

Спасибо за отклик, для начала они говорят загрузить на робота этот файл, он загружается успешно.  Можете сказать за что он отвечает ( он единственный загружается, подозреваю что это какая та прошивка для распознания команд)

Вообще схема разработчиков очень проста 
Это сборка конструткора 
И программирование его через ардуино или же через их программу которая работает на java (там где обычные стрелки с задержками). 
Очень жаль что тут нельзя прикрепить файлы.

 

//servo control
 unsigned char servo = 6;
 unsigned char count = 0;
 unsigned char i = 0;
 unsigned char servoTime = 0;
 unsigned char servoValue = 0;
 unsigned char flag = 0;
 unsigned int secondT = 0;
 
 unsigned int k = 0;
 
 //pen
 const unsigned int down = 50;
 const unsigned int up = 100;
 
 //motor
 int L1 = 9;
 int L2 = 7;
 
 int R1 = 10;
 int R2 = 8;
 
 //speed and time
 int dir = 0;
 int speeds = 0;
 unsigned long time = 0;
 
 long serialValue = 0;
 int length = 0;

 unsigned char cmd[400];
 
void setup()
{  
  UBRRL=103;   //16M baud 9600,8bit UART
  UCSRB=0x18; //enable

  pinMode(servo,OUTPUT);
  digitalWrite(servo,LOW);
  //pin for motor
  pinMode(L1,OUTPUT);
  pinMode(L2,OUTPUT);
  pinMode(R1,OUTPUT);
  pinMode(R2,OUTPUT);
  
  timer2();
  TIMSK &= ~(2 << 6);
  digitalWrite(servo,LOW);
  
  time = 300;
  penWrite();
  penRise();
}

void loop()
{
   while(!(UCSRA&(1<<RXC)));
   if(UDR == 170)
   {
     while(!(UCSRA&(1<<RXC)));
     if(UDR == 85)
    {
      while(!(UCSRA&(1<<RXC)));
      length = UDR;
	  length = length << 2;
      
      for (k = 0;k<length;++k)
      {
        while(!(UCSRA&(1<<RXC)));
        cmd[k] = UDR;
        while(!(UCSRA&(1<<RXC)));
        cmd[++k] = UDR;
        while(!(UCSRA&(1<<RXC)));
        cmd[++k] = UDR;
        while(!(UCSRA&(1<<RXC)));
        cmd[++k] = UDR;
       }
      
       while(!(UCSRA&(1<<RXC)));
       if(UDR != 0xe0)
         return;
       while(!(UCSRA&(1<<RXC)));
       if(UDR != 0x07)
         return;
        
        for (k = 0;k<length;++k)
       {
         dir = (cmd[k] & 0xf0) >> 4;
         speeds = (cmd[k] & 0xf) * 17;
         time = 0;
         time = time | cmd[++k];
         time = time << 8 | cmd[++k];
         time = time << 8 | cmd[++k];
         
         switch (dir)
         {
         case 8: 
           stoprun();
           break;
         case 0:
           gforward();
           break;
         case 1:
           gback();
           break;
         case 2:
           turnLeft();
           break;
         case 3:
           turnRight();
           break;
         case 4:
           gLF();
           break;
         case 5:
           gRF();
           break;
         case 6:
           gLB();
           break;
         case 7:
           gRB();
           break;
         case 9:
           penWrite();
           break;
         case 10:
           penRise();
           break;
         default: stoprun();
        }
       }
   cmd[0] = UDR;
    }
  }
}

//timer2 for servo control
void timer2()
{
  noInterrupts();
  TCCR2 = 0x0f;       //CTC,1024
  OCR2 = 155;
  TIMSK |= (2 << 6);
  interrupts();
}

//each interrupt 25hz
ISR(TIMER2_COMP_vect)
{
  
//two intrupt as a circle
   if(secondT == 0)
   {
    digitalWrite(servo,HIGH);
    secondT++;
    flag = 0;
   }
   else
   {
    secondT = 0;
   }
  
   //finished in 10ms
   for(count = 0;count<127;count++)
   {
     if(flag == 1)
     {
      return;    
     }
     
     //for(i = 0;i != 120;i++);
     delayMicroseconds(76);
     if(servoTime == servoValue)
     {
      digitalWrite(servo,LOW);
      flag = 1;
      servoTime = 0;
      //secondT++;
      return;
     }
     else
     {
       servoTime++;
     }
   }
}


//stop
void stoprun()
{
  digitalWrite(L1,LOW);
  digitalWrite(L2,LOW);
  
  digitalWrite(R1,LOW);
  digitalWrite(R2,LOW);
  delay(time);
}


void gforward()
{
  //leftmotor
  analogWrite(L1,speeds);
  digitalWrite(L2,LOW);
  //right motor
  analogWrite(R1,speeds);
  digitalWrite(R2,LOW);
  delay(time);
  
  digitalWrite(L1,LOW);
  digitalWrite(R1,LOW);
}

//goback
void gback()
{
  //leftmotor
  analogWrite(L1,speeds);
  digitalWrite(L2,HIGH);
  
  //right motor
  analogWrite(R1,speeds);
  digitalWrite(R2,HIGH);
  delay(time);
  
  digitalWrite(L1,LOW);
  digitalWrite(L2,LOW);
  
  digitalWrite(R1,LOW);
  digitalWrite(R2,LOW);
}

void turnLeft()
{
  analogWrite(L1,speeds);
  digitalWrite(L2,HIGH);
  
  analogWrite(R1,speeds);
  digitalWrite(R2,LOW);
  delay(time);
  
  digitalWrite(L1,LOW);
  digitalWrite(L2,LOW);
  
  digitalWrite(R1,LOW);
  digitalWrite(R2,LOW);
}

void turnRight()
{
  analogWrite(L1,speeds);
  digitalWrite(L2,LOW);
  
  analogWrite(R1,speeds);
  digitalWrite(R2,HIGH);
  delay(time);
  
  digitalWrite(L1,LOW);
  digitalWrite(L2,LOW);
  
  digitalWrite(R1,LOW);
  digitalWrite(R2,LOW);
}

void gLF()
{
  analogWrite(L1,speeds/2);
  digitalWrite(L2,LOW);

  analogWrite(R1,speeds);
  digitalWrite(R2,LOW);
  delay(time);
  
  digitalWrite(L1,LOW);
  digitalWrite(L2,LOW);
  
  digitalWrite(R1,LOW);
  digitalWrite(R2,LOW);
}

void gRF()
{
  analogWrite(L1,speeds);
  digitalWrite(L2,LOW);

  analogWrite(R1,speeds/2);
  digitalWrite(R2,LOW);
  delay(time);
  
  digitalWrite(L1,LOW);
  digitalWrite(L2,LOW);
  
  digitalWrite(R1,LOW);
  digitalWrite(R2,LOW);
}

void gLB()
{
  analogWrite(L1,speeds/2);
  digitalWrite(L2,HIGH);
  
  analogWrite(R1,speeds);
  digitalWrite(R2,HIGH);
  delay(time);
 
  digitalWrite(L1,LOW);
  digitalWrite(L2,LOW);
  
  digitalWrite(R1,LOW);
  digitalWrite(R2,LOW);
}

void gRB()
{
  analogWrite(L1,speeds);
  digitalWrite(L2,HIGH);
  
  analogWrite(R1,speeds/2);
  digitalWrite(R2,HIGH);
  delay(time);
  
  digitalWrite(L1,LOW);
  digitalWrite(L2,LOW);
  
  digitalWrite(R1,LOW);
  digitalWrite(R2,LOW);
}

void penWrite()
{
TIMSK |= (2 << 6);
servoValue = 14;
delay(150);
delay(time);
}

void penRise()
{
 TIMSK |= (2 << 6);
 servoValue = 20;
 delay(150);
 delay(time);
}

 

Клапауций
Offline
Зарегистрирован: 10.02.2013

единственный или рекомендуемый для загрузки?

я понимаю, что вы не программист, но для выполнения инструкции не нужно быть программистом - достаточно уметь читать.

maksim
Offline
Зарегистрирован: 12.02.2012

Ну так и в чем вопрос?

Клапауций
Offline
Зарегистрирован: 10.02.2013

.

sahavol
Offline
Зарегистрирован: 14.02.2014

Что примерно этот файл значит?

В инструкции написано примерно следующее 
Нажать сюда - загрузить сюда - сделать так - вот итог

Этот файл является обязательным в загрузке и он грузится как по инструкции дальше файлы не грузятся пример в 1 посте. 

Хочу узнать что примерно может значить этот файл, какую роль он выполняет

Клапауций
Offline
Зарегистрирован: 10.02.2013

sahavol пишет:

Что примерно этот файл значит?

В инструкции написано примерно следующее 
Нажать сюда - загрузить сюда - сделать так - вот итог

Этот файл является обязательным в загрузке и он грузится как по инструкции дальше файлы не грузятся пример в 1 посте. 

Хочу узнать что примерно может значить этот файл, какую роль он выполняет

я не буду заниматься реверсинженирингом того, за что вы заплатили - соизвольте хотя ты выложить электронную версию программного и документации, вместо вольного пересказа.

maksim
Offline
Зарегистрирован: 12.02.2012

Этот скейтч нужен для управления какими то двигателя через COM-порт (UART даже боюсь писать). А что вы пытаетесь сделать со строками из первого поста известно только вам. Предпологаю что данные строки должны быть вписаны в программу на компе, которая и должна отправлять команды в COM-порт.

sahavol
Offline
Зарегистрирован: 14.02.2014

 

вот все файлы которые шли там есть и инструкция. После пункта загрузите через ардуино демо у меня не работает. http://yadi.sk/d/X-AdlJNBHyRfS

 

maksim
Offline
Зарегистрирован: 12.02.2012

sahavol пишет:

 После пункта загрузите через ардуино демо у меня не работает.

Тяжелый случай... Нет там такого пункта... Что не работает? Вы к эктрасенсам сходили? Пусть они почитают ваши мысли и считают визуальную информацию с ваших глаз и сформулируют сюда буквами, так как вы не можете этого сделать. 

kentik
Offline
Зарегистрирован: 28.03.2013

Троли тут какие-то. так тяжело автору написать: "напишите ссылку, что за устройство, описание и где скачать тестовый скетч"

kentik
Offline
Зарегистрирован: 28.03.2013

кому интересно: 

описание с PDF тут: http://www.electronshik.ru/item/doodle-bot-kit-1088615
драйвера тут: http://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx
скетчи для ArduinoIDE тут: https://sites.google.com/site/daguproducts/home/download-page

kentik
Offline
Зарегистрирован: 28.03.2013

вооо а тут вообще все по русски: http://kaburka.ru/id84672-postroenie_komplekt_doodle_bot_ot_dagu

maksim
Offline
Зарегистрирован: 12.02.2012

kentik пишет:

Троли тут какие-то. так тяжело автору написать...

Ага. Давайте тогда договоримся с вами. Я вам заведу отдельную тему с названием "Помощь" или сами заведите и буду вам туда класть ссылки на темы где нужно спросить или погуглить за автора. Так вот будете писать... всем, а мы посмотрим на каком десятке таких вот авторов, задающих одни и те же вопросы и не желающих хоть чуть-чуть подумать своей головой и предоставить хоть какую то информацию, вы перестанете им писать. Договорились?

Клапауций
Offline
Зарегистрирован: 10.02.2013

kentik пишет:

Троли тут какие-то. так тяжело автору написать: "напишите ссылку, что за устройство, описание и где скачать тестовый скетч"

предлагаю забанить негодяя, а топикстартера усыновить.

sahavol
Offline
Зарегистрирован: 14.02.2014

kentik пишет:

кому интересно: 

описание с PDF тут: http://www.electronshik.ru/item/doodle-bot-kit-1088615
драйвера тут: http://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx
скетчи для ArduinoIDE тут: https://sites.google.com/site/daguproducts/home/download-page

Спасибо за найденную информацию

По пунктам:
1) Робот собран согласно схеме
2) Драйвер установлен(мост) и программа ардуино видит его.
3) Проблемы :
Первый файл под названием penWritting как в первом посте через ардуино загружается удачно 

Размер скетча в двоичном коде: 2 726 байт (из 7 168 байт максимум)

Тут я заметил особенность в том, что если отключить провод то он напишет что не был найден провод (последовательный порт COM 7) и не загрузит ничего что лоигчно, к чему я это, а к тому что если начать загружать дальше любой файл без подключеного провода или с проводом выдает одни и !те же ошибки! (даже любые скетчи с вашей ссылки) все однотипные ошибки, ему не важно есть провод или нет у него какие то свои проблеммы (часть ошибок):
 

Doodle_Bot_Text_Demo.pde:2:23: error: Constants.h: No such file or directory
Doodle_Bot_Text_Demo.pde:3:20: error: IOpins.h: No such file or directory
Doodle_Bot_Text_Demo.pde: In function 'void setup()':
Doodle_Bot_Text_Demo:21: error: 'Rcount' was not declared in this scope
Doodle_Bot_Text_Demo:22: error: 'Lcount' was not declared in this scope

 

Пробывал загружать файлы на разных версиях ардуино 1.0.5 и 0022

 

kentik
Offline
Зарегистрирован: 28.03.2013

sahavol пишет:

Doodle_Bot_Text_Demo.pde:2:23: error: Constants.h: No such file or directory
Doodle_Bot_Text_Demo.pde:3:20: error: IOpins.h: No such file or directory
Doodle_Bot_Text_Demo.pde: In function 'void setup()':
Doodle_Bot_Text_Demo:21: error: 'Rcount' was not declared in this scope
Doodle_Bot_Text_Demo:22: error: 'Lcount' was not declared in this scope

ну видимо не все поставили. у вас нет файлов Constants.h и IOpins.h

если они есть, то перенесите их в папку, где лежит скетч. Если и так не поможет, то где-то говорилось про недружелюбные отношения к последним версиям Arduino IDE. попробуйте переставить на более старую версию.

vlvlbel
Offline
Зарегистрирован: 04.03.2014

> А програма которую предоставили (там просто стрелочки , задержка, скорость, рисовать или нет, с кнопкой Upload) после аплауда горят лампочки "якобы загружает" и ничего не происходит

китайцы, видимо, неправильно выставили в ней предел минимального заряда батарей, который проверяется в цикле arduino, если напряжение меньше предела, вместо выполнения программы робот моргает синим диодом.

> ошибка именно к этом у примеру  expected unquaitfied-id before 'reinterpret_cast'.

в текущих версиях языка программирования (программа писалась под версию 022) для ардуино 1.5 и выше так ругается компилятор на определенную пользователем функцию F(), которая есть в закладке characters, переименуйте её, например, в FF() - и будет вам счастье.

пользуемся после этой небольшой корректировки с 9-ти летним сыном doodle_bot_text_demo.pde - всё работает. ошибку выловил так: указал файл/настройки подробный вывод при компилиции и загрузке, увидел на какую строку/символ ругается, нашел временный файл компилируемой программы (перед компиляцией несколько файлов собираются в один временный текстовый файл, по которому и выводятся ошибки, для определения местонахождения временного файла смотрел командную строку с опциями компилятора, которую пишет среда разработки при компиляции, у меня linux), перешёл на проблемную строчку и проблемный символ, всё понял и победил.