Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Робототехника

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.02.2015, 21:57   #1
DEM
Senior Member
 
Регистрация: 25.03.2014
Сообщений: 146
Вес репутации: 0
DEM is an unknown quantity at this point
По умолчанию Ардуино Uno+2двигателя+шаговый+2 сервопривода

Собственно нужна помощь в разработке скрипта для ардуино мотор-шилд на 4 двигателя.
чтобы можно было отправить на какой угол повернуть сервопривод и сколько шагов сделать шаговому двигателю.
понимаю, что надо делать какую то функцию которая бы разбирала, что приходит в буфер.
Но пока получается отправить команду для движения 2 моторов.
Пока использую скрипт кибер-бота с шилдом на 4 двигателя.
Подскажите пожалуйста....
DEM вне форума   Ответить с цитированием
Старый 12.02.2015, 09:46   #2
DEM
Senior Member
 
Регистрация: 25.03.2014
Сообщений: 146
Вес репутации: 0
DEM is an unknown quantity at this point
По умолчанию Re: Ардуино Uno+2двигателя+шаговый+2 сервопривода

Нашел функцию разбора команд....
ТУт
Код:
#include <string.h>
 
char unitID_in[10];
char command_in[10];
char data_in[100];
 
 
void setup() {
  // открываем порт 
  Serial.begin(9600); 
}
 
void loop() {         
 
  int i=0;
  char buffer[100];
 
//если есть данные - читаем
  if(Serial.available()){
     delay(100);
      
     //загоняем прочитанное в буфер
     while( Serial.available() && i< 99) {
        buffer[i++] = Serial.read();
     }
     //закрываем массив
     buffer[i++]='\0';
  }
 
//если буфер наполнен
  if(i>0){  
     
    //разбераем его на части отделенные запятой
    sscanf(buffer, "%[^','],%[^','],%s", &unitID_in, &command_in, &data_in);
     
  }
   
//Исполнительная часть
//Проверяем какому устройству пришли данные
 
//тестовое устройство 001
    if ((String)unitID_in == "001"){  //test serial read
      Serial.print("001,arduino recive: unit ");
      Serial.print(unitID_in);
      Serial.print("\n");
      Serial.print("command: ");
      Serial.print(command_in);
      Serial.print("\n");
      Serial.print("data: ");
      Serial.print(data_in);      
      Serial.print("\n");
      unitID_in [0] = '\0'; 
      command_in [0] = '\0';            
    }
     
//пример выполнения команды устройством 013
     if ((String)unitID_in == "013"){
       
      if ((String)command_in == "on"){
          digitalWrite(13, HIGH);}
      if ((String)command_in == "off"){
          digitalWrite(13, LOW);}   
           
      Serial.print("001,arduino recive: unit ");
      Serial.print(unitID_in);
      Serial.print(" command ");
      Serial.print(command_in);
      Serial.print("\n");
      unitID_in [0] = '\0';
      command_in [0] = '\0';            
    }
}
DEM вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 13:57. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика