ИК-радар
- Войдите на сайт для отправки комментариев
Втр, 24/04/2012 - 16:21
На самом деле этот маленький проект является частью большого проекта, который еще не закончен. Основные элементы это - ИК-дальномер SHARP 2Y0A02, который собственно говоря и измеряет расстояния до объектов , мотор-редуктор Gekko MR12-100, который вращает ИК-дальномер, "скользящик контакт" и ИК-датчик определяющий точку отсчета. Принцип действия я думаю всем понятен и без объяснения.
Вот видео www.youtube.com/watch
Схема:

Код:
// Дуина
uint32_t millisold, sens1 = 0;
uint16_t sens = 0;
volatile uint16_t angle = 0;
uint8_t distant[150];
void setup() {
Serial.begin(115200);
digitalWrite(2, HIGH);
attachInterrupt(0, circle, RISING);
}
void loop() {
if(millis()-millisold > 5){
sens = 14145/(analogRead(A0)+7);
if(sens > 255){
sens = 255;
}
distant[angle] = sens;
angle++;
if(angle > 149){
angle = 149;
}
millisold = millis();
if(angle < 149){
Serial.println(distant[angle], BYTE);
}
}
}
void circle() {
Serial.println(0, BYTE);
angle = 0;
}
/*
// Процессинг
import processing.serial.*;
Serial myPort;
int distant = 0;
float x, y, speed;
float angle = 0.0;
void setup() {
size(550, 550);
String portName = Serial.list()[2];
myPort = new Serial(this, portName, 115200);
smooth();
x = width/2;
y = height/2;
speed = 0.0141;
background(100);
fill(100);
ellipse(width/2, height/2, 520, 520);
}
void draw() {
stroke(80);
line(width/2, height/2, 275, 535);
while(myPort.available () > 0) {
distant = myPort.read();
if (distant == 0) {
angle = 1.52;
}
pushMatrix();
translate(x, y);
rotate(angle);
stroke(100);
fill(100);
triangle(0, 0, 257, 9, 257, 13);
stroke(255);
fill(255);
triangle(0, 0, distant, 0, distant, distant/15);
popMatrix();
angle += speed;
}
}
*/
Фото:

"Arduino 2012"




Футуристично выглядит :) Даже агрессивно.
А можно чуть подробней про "скользящий контакт". Как вы его делали? Или из чего-то готового взяли?
Просто много где он может пригодится.
Тоже интересно про скользящий контакт. А вывод графики - это processing?
Делал сам из кусоча текстолита, а сами контакты взял из потенциометра.
Тут доржки смазаны литолом:
С близкого растояния, конечно не очень выглядит, ну и ладно, этой чати все равно не видно и самое главное, что работает нормально.
Спасибо за подробные фотки.
> а сами контакты взял из потенциометра.
Вроде очевидно и просто, но как раз та простота до которой сложно додуматся самому. Та котороая "под носом".
Еще раз спасибо.
А белый пластик, из которого шасси радара сделано, это часом не полиморфус (поликапролактон)?
Не знаю, вродебы обычное белое оргстекло.
А вывод графики - это processing?
Да.
Здесь Тоже хорошая статья на эту тему:
http://luckylarry.co.uk/arduino-projects/arduino-processing-make-a-radar...
Здесь Тоже хорошая статья на эту тему:
http://luckylarry.co.uk/arduino-projects/arduino-processing-make-a-radar...
Этот радар очень медленный, он поворачивается на 180° за 30 секунд.
Можно немного подробнее про скользящий контакт. У вас на фото вижу 2 контакта, припаяных к кусочку макетки, которые трутся о лист текстолита. А где 3ий? Всего же 3 на ИК датчике, или третий это сам штырек которые в редуктор входит?
Все верно - ось редуктора это земля.
Т.е. прошиваем ардуину кодом "//Дуина"
А код "//Процессинг" компилируем и Tools>Serial Monitor. Будет выводить в виде диаграммы?
У меня просто не компилирует. Ругается на строчку
'Import' does not name a type
Версия arduino-0021.
И в видео на диаграмме видны изменения. Это при помещении предметов в плоскость видимости датчика, или это дребезг скользящего контакта?
Вы бы погуглили что такой Процессинг (Processing) тогда бы и таких вопросов не возникало, и тут на форуме есть отдельная ветка Processing.
А какой разброс(угол) у ИК-дальномера? ведь чем дальше припятствие тем меньше разрешающая способность датчика?
А если лазером сканировать? Из CD-ROM лазеры ик, датчик тоже откалибровать и сфокусировать линзой на дальнее расстояние?