Скетч для Ultrasonic HC-SR04
- Войдите на сайт для отправки комментариев
Вс, 20/01/2013 - 18:49
Добрый день!Хочу узнать можно ли сделать скетч для робота под Ардуино с ультразвуковым датчиком Ultrasonic HC-SR04 чтоб робот "вёл" себя как этот http://www.youtube.com/watch?feature=player_embedded&v=kXGZjqqM4T8#!,я в том смысле что это разные датчики(тот инфракрасный, а у меня ультразвуковой),"вёл" я имею в виду чтобы также подъезжал к руке\другому предмету,а если слишком близко отъзежал.Кто-нибудь может помочь каркасом для скетча?Если что мой датчик закреплен непосредственно на корпусе робота т.е. у меня он без серво-мотора.Заранее спасибо.
Можно, только нужно 4 датчика, как и на видео, а точнее на видео 8 фотодиодов (фототранзисторов) по 2 на каждой стороне.
Один датчик, неподвижно закрепленный на корпусе. Чего вы от него хотите ? Хотя можно и с одним. Только его поведение будет отличаться от того что на видео.
Робот может совершать движения в виде маятника или вращаться , пока не задетектит объект на заданом расстоянии. После чего начнет движение к объекту. И остановится недоезжая до него.
Вобщем алгоритм можно придумать.
Каркасом для скетча не поможете?
void setup() { } void loop() { }Такой подойдет ?
Если серьезно, то сначачала продумайте весь алгоритм и сформируйте рабочее ТЗ.
Не совсем понятно что вы имеете в виду под словом "Каркас".
Это полностью готовая программа, с возможностью корректирвок и настроек под разное оборудование ?
Или что то другое ?
Обычно я пишу программы либо последовательно (строка за строкой) , либо модульно (большие сложные программы).
Ладно и на том спасибо.Пойду программить..)
Добрий день, мене цікавить вдалося написати програму, В мене схожий робот?
Извините, но по Молдавски мы не понимаем
.
Добрый день, меня интересует удалось написать программу, у меня похожий робот(подъезжал к руке\другому предмету,а если слишком близко отъзежал)
Задача простейшая.
Возьмите за основу код, робота объезжающего препятствия
Видео
Код этого робота
#include <CyberLib.h> #define motors_init {D4_Out; D5_Out; D6_Out; D7_Out;} #define robot_go {D4_Low; D5_High; D6_High; D7_Low;} #define robot_back {D4_High; D5_Low; D6_Low; D7_High;} #define robot_stop {D4_Low; D5_Low; D6_Low; D7_Low;} #define robot_rotation_left {D4_Low; D5_High; D6_Low; D7_High;} #define robot_rotation_right {D4_High; D5_Low; D6_High; D7_Low;} #define size_buff 5 uint16_t sensor[size_buff]; uint8_t stat=0; void setup() { motors_init; D11_Out; D11_Low; D14_Out; D14_Low; / D15_In; randomSeed(A6_Read); for(uint8_t i=0; i<12; i++) beep(70, random(100, 2000)); wdt_enable(WDTO_500MS); } void loop() {Start uint16_t dist=GetDistance(); if( dist < 10) {rotation(stat, 255);} else if( dist < 20) {rotation(stat, 200);} else if( dist < 40) {rotation(stat, 130);} else {robot_go; stat=~stat;} wdt_reset(); //покормить собаку End;} //*************************************************** void rotation(uint8_t arr, uint8_t dur) { switch (arr) { case 0: robot_rotation_right; break; case 255: robot_rotation_left; break; } delay_ms(dur); robot_stop; } //*************************************************** uint16_t GetDistance() { uint16_t dist; for (uint8_t i = 0; i < size_buff; ++i) { D14_High; delay_us(10); D14_Low; dist = pulseIn(15, HIGH, 2400); if(dist==0) dist=2400; sensor[i]=dist; delay_ms(40); wdt_reset(); } dist=(find_similar(sensor, size_buff, 58))/58; return dist; }