ИК-радар
- Войдите на сайт для отправки комментариев
Втр, 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 лазеры ик, датчик тоже откалибровать и сфокусировать линзой на дальнее расстояние?