Проект посвящён основам 3D-технологии. Этот проект является логическим завершением нашей работы за 2018-2019 уч. год: "СТАРТАП: «3D-СКАНЕР СВОИМИ РУКАМИ»" и имеет полный комплект документации, позволяющей самостоятельно изготовить 3D-сканирующее устройство. Проект за 2019-2020 уч. год отличается от предшествующего тем, что имеет более полную проработку каждого элемента конструкции за счёт широкого применения унифицированных узлов и деталей. Это позволило снизить трудоёмкость изделия, его себестоимость с одновременным повышением основных технических характеристик.
Объект исследования в проекте: 3D-моделирование физических тел.
Предмет исследования в проекте:лазерное сканирование физического тела.
Цель проекта:создание бюджетного 3D-сканирующего устройства доступного для самостоятельного повторения и имеющего высокие технические характеристики.
Гипотеза:лазерное сканирование позволяет построить 3D-копию исследуемого физического тела в цифровом формате.
Задачи проекта: разработать 3D-сканирующее устройство; изготовить 3D-сканирующее устройство; провести финансово-экономическое обоснование проекта.
Методы исследования, применённые в проекте:метод обобщения, синтез, анализ, метод наблюдения и сравнения, метод лабораторных и натуральных испытаний.
Практическая значимость проекта:разработана документация для самостоятельной сборки 3D-сканирующего устройства «Фаворит».
Введение
Сущность 3D-формата заключается в изготовлении виртуальной копии заданного объекта в цифровом формате, а сам изготавливаемый объект воспроизводится с нужными свойствами с помощью 3D-принтеров. 3D-формат можно разделить на два отдельных малосвязанных между собой процесса: это создание виртуальной цифровой копии объекта и воспроизводство его с нужными свойствами. Создание виртуальной цифровой копии объекта возможно двумя способами: это программный метод - с помощью специальных программ и метод сканирования - с помощью различных дальномеров при копировании уже реально существующего объекта для его дальнейшего тиражирования. В современном мире 3D-технология широко используется как на производстве, так и частными людьми, занимающимися 3D-моделированием физических объектов. Приобретение готового 3D-сканера в собственное пользование не всегда экономически оправдано, так как стоимость отдельных моделей может достигать до миллиона рублей.
Объект исследования в проекте: 3D-моделирование физических тел.
Предмет исследования в проекте:лазерное сканирование физического тела.
Цель проекта:создание бюджетного 3D-сканирующего устройства доступного для самостоятельного повторения и имеющего высокие технические характеристики.
Гипотеза:лазерное сканирование позволяет построить 3D-копию исследуемого физического тела в цифровом формате.
Задачи проекта: разработать 3D-сканирующее устройство; изготовить 3D-сканирующее устройство; провести финансово-экономическое обоснование проекта.
Методы исследования, применённые в проекте:метод обобщения, синтез, анализ, метод наблюдения и сравнения, метод лабораторных и натуральных испытаний.
Практическая значимость проекта:разработана документация для самостоятельной сборки 3D-сканирующего устройства «Фаворит».
Теоретические основы работы 3D-сканера
1.1 Краткая историческая справка
Технология трехмерного сканирования появилась в конце 20-го века. Устройство 3D-сканера детально исследует объект, и полученные данные форматирует в цифровую копию. Первый прототип 3D-сканера был заявлен в 1960 году [1], хотя и не обладал высокими техническими характеристиками. После 1985 года сканирующие устройства дополнили лазерами, источниками белого света и затемнения. В 80-х годах прошлого века появились контактные датчики, которые использовались в 3D-сканерах для оцифровки поверхности твердых объектов, но такой способ сканирования занимал много времени и не отличался высокой точностью. В 1994 году компания 3DScanner выпустила 3D-сканер REPLICA, который давал точный (для того времени) и быстрый результат, это стало большим шагом в сфере 3D-технологий [2].
1.2 Методы и технологии трёхмерного сканирования
Методы трехмерного сканирования разделяют на два основных: это контактный метод и бесконтактный. Контактный метод представляет собой следующее: устройство сканирует объект с помощью физического контакта, но объект обязательно должен находиться на прецизионной поверочной плите. Контактный 3D-сканер отличается высокой точностью, но сложен в использовании, т.к. можно повредить форму объекта. Бесконтактный метод разделают на два: лазерный и оптический. Лазерная технология основывается на работе лазерных дальномеров. В оптической технологии в отличие от лазерной используется лазер второго класса безопасности. Он отличается высокой точностью и скоростью выполнения сканирования. Даже при движении сканируемого объекта изображение не будет искажено, поэтому такой вид технологии используют в качестве 3D-сканера человека. В отличие от лазерной технологии оптическая технология не нуждается в нанесении специальных разметок, но такой вид технологии не подойдет для сканирования зеркальных или блестящих объектов.
1.3 Лазерная технология трёхмерного сканирования
Устройство лазерной технологии сканирует объект с помощью лазерного излучения или специальных источников света, в нашем проекте лазерные лучи вместе с камерой сканируют заданный объект, находящийся на предметном вращающемся столе сканера.
Устройство 3D-сканера «Фаворит»
Внешний вид устройства представлен на рис. №1:
Рис. № 1. 3D-сканер «Фаворит».
Для снижения трудоёмкости при изготовлении сканера нами были использованы унифицированные узлы и детали от фирмы «СОБЕРИЗАВОД» https://www.soberizavod.ru/
2.1 Корпусные элементы сканирующего устройства
Основанием корпуса послужил алюминиевый конструкционный профиль 20 серии длиной 1,7 м, рис.№ 2:
Рис. № 2. Алюминиевый конструкционный профиль 20 серии.
Применённые основные унифицированные детали представлены на рис.№ 3:
Рис. № 3. Основные унифицированные детали.
Деталировка унифицированных элементов приведена в таблице № 1.
Табл. № 1. Деталировка унифицированных элементов.
№ п\п |
Оборудование (материалы) |
Кол. во |
1 |
Г-соединитель 60х60 (черный), паз 6, отв.6 |
4 |
2 |
Соединитель 20х80, паз 6 |
2 |
3 |
Уголок 20х20L (черный), паз 6 |
4 |
4 |
Заглушка торцевая 20 х 20 |
6 |
5 |
Винт цилиндр. с внутренним шест. М10 х 10 |
4 |
6 |
Сухарь пазовый М5, паз 6 |
29 |
7 |
Гайка-барашек М5 |
4 |
8 |
Узел крепления лазера |
4 |
9 |
Шайба М5 |
8 |
10 |
Подшипники 624 |
2 |
11 |
Болт М12 х 30 |
8 |
12 |
Болт М9 х 7 |
21 |
13 |
Болт М6 х 30 |
2 |
14 |
Болт М7 х 30 |
2 |
15 |
Гайка М8 |
2 |
2.2Электронные компоненты сканирующего устройства
Основным оптическим прибором 3D-сканера «Фаворит» является веб-камера Logitech C270 [3], четыре промышленных лазерных излучателя Symbol Standart CW [4] засвечивают объект в процессе сканирования, рис. № 4:
Рис.№ 4. а) веб-камера Logitech C270; б) промышленный лазерный излучатель Symbol Standart CW.
В качестве управляющего микропроцессорного устройства была использована плата Arduino Uno [5], рис. № 5:
Рис.№ 5. Плата Arduino Uno.
Позиционный стол приводится во вращение шаговым двигателем 28BYJ-48 [6], рис. № 6:
Рис.№ 6. Шаговый двигатель 28BYJ-48.
Управляется шаговый двигатель драйвером ULN2003 [7], рис.№ 7:
Рис.№ 7. Драйвер шагового двигателя ULN2003.
Подключение плат Arduino Uno и драйвера шагового двигателя ULN2003 к шаговому двигателю 28BYJ-48 [8] представлено на рис.№ 8:
Рис.№ 8. Монтажная схема устройства.
2.3 Скетч для Arduino и программа для персонального компьютера
На Arduino загружается официальный скетч, приложение №2. В качестве управляющей программы для нашего сканера используется программа Sardauscan [9], под Windows. После запуска программы, для начала сканирования необходимо:
выбрать нужную камеру в окне «Camera» и нажать «ok»;
подключить Arduino Uno, нажав на иконку лотка или лазера, откроется окно обновления, выбрать предложенный USB порт и нажать "ok";
нажать «Turn Table» и проверить работу поворотного стола. В этом же окне можно включить лазеры;
откалибровать камеру, для этого необходимо: перейти на вкладку «Camera» и нажать «Physical Calibration». Нужно найти центр стола, перемещая горизонтальную зеленую линию, если она остается на одном месте и не смещается, значит, центр стола установлен;
откалибровать лазеры, для этого необходимо: сфокусировать лазерный луч, получив максимально тонкую линию и разместить так, чтобы лазерные лучи нельзя было различить с зеленой вертикальной линией;
откалибровать размеры сканера и расположение лазеров;
откалибровать лазерное изображение;
откалибровать матрицу, для этого необходимо: перейти во вкладку «Calibrate», нажать «Correction matrix» и запустить быстрое сканирование;
если массив точек каждого излучателя «размывается», нужно установить лазерные излучатели так, чтобы все точки совпадали с заданным контуром.
После всех выполненных настроек можно приступать к сканированию.
Финансово-экономическое обоснование проекта
В современном мире 3D-технология широко используется как на производстве, так и частными людьми, которые нуждаются в собственном 3D-сканере. Приобретение готового 3D-сканера в собственное пользование не всегда экономически оправдано, так как его стоимость, отдельных моделей, может достигать миллиона рублей. Нашим решением поставленной проблемы является разработка линии конструкторов для самостоятельной сборки бюджетного 3D-сканера, способного решить многие технические и технологические проблемы. Разработано три комплекта наборов для самостоятельной сборки: комплект №1 – входит подробная инструкция по сборке бюджетного 3D-сканера. Распространяется как на электронных, так и на бумажных носителях, покупатель оплачивает только стоимость носителя. Так достигается эффект «скрытая реклама»; комплект №2 – комплектация, состоящая из комплекта №1 и готовых деталей корпуса, электронные компоненты в набор не входят; комплект №3 – комплектация, состоящая из комплекта №2 и всех электронных компонентов.
Лозунг нашего проекта: «собрать бюджетный 3D-сканер проще, чем табуретку из IKEA». Его легко соберет даже учащийся средней школы, что было доказано в ходе выполнения нашего проекта.
Целевая аудитория проекта
Первичным звеном целевой аудитории, являются учащиеся средних школ и студенты вузов, занимающиеся техническим творчеством. Косвенной целевой аудиторией являются члены семьи учащихся. Социально-демографические характеристики целевой аудитории [10] сведены в таблицу № 2:
Табл. № 2. Социально-демографические характеристики целевой аудитории.
Пол |
Женский/мужской |
Возраст |
От 12 лет |
Уровень дохода на члена семьи |
От 15 000 рублей |
Жизненный цикл семьи |
Полные/неполные семьи |
Род занятий |
Служащие, представители малого бизнеса, учащиеся и студенты |
Образование |
Без образования, среднее и высшее образование |
Поколение |
Родившиеся в период с 1960-2007 |
Психографические характеристики целевой аудитории [10] сведены в таблицу № 3:
Табл. № 3. Психографические характеристики целевой аудитории.
Образ жизни потребителя |
Размеренный, сельский, городской |
Отношение потребителя к инновациям |
Новатор |
Отношение к себе |
Ощущение себя лидером — способность изменить мир или положение вещей |
Лидер потребителя |
Известные личности инженеринга |
Внутренняя мотивация покупки |
Получение новых знаний, навыков, умений, достижение личного достатка |
Отношение к местному производителю |
Положительное |
Жизненная позиция |
Активная, положительная, спокойная, утвердительная. |
Ценности |
Семья, дети, самореализация, стабильное материальное благополучие, положение в обществе |
3.2 Анализ конкурентной насыщенности на рынке
Наш проект, рынок его реализации, имеет высокую конкурентную насыщенность. Данные по конкурентным моделям в денежном эквиваленте до 100 тысяч рублей приведены в таблице № 4:
Табл. № 4. Анализ конкурентной насыщенности рынка.
№ п/п |
Название 3D-сканера |
Стоимость (тыс. руб.) |
Время сканирования (минут) |
Точность сканирования (мм) |
Область сканирования (мм) |
1 |
3D-сканер «Фаворит» |
11-250 |
2 |
1,0 |
120 х 120 |
2 |
BQ CICLOP |
21-990 |
2 |
1,0 |
205 х 205 |
3 |
XYZPRINTING Hand Scanner |
24-290 |
2 |
1,5 |
50 х 600 |
4 |
ISENSE |
39-450 |
2 |
1,0 |
300 x 300 |
5 |
SENSE |
45-900 |
3 |
1,0 |
200 x 200 |
6 |
SHINING 3D EINSCAN-S |
58-000 |
3 |
0,1 |
700 х 700 |
7 |
МФУ XYZ da Vinci 1.0 Pro |
71-850 |
5 |
0,25 |
150 х 150 |
8 |
EinScan-SE |
84-925 |
2 |
0,1 |
200 х 200 |
Проведённый анализ конкурентной насыщенности рынка позволил выделить основного конкурента — это BQ CICLOP [11], представленный на рис. № 9:
Рис. № 9. 3D-сканерBQ CICLOP.
3D-сканер BQCICLOP распространяется торговыми сетями AliExpress, производители предлагают покупателю конструктор с необходимой инструкцией для самостоятельной сборки 3D-сканирующего устройства, отличающегося хорошими показателями цена/качество.
Предлагаемое нами техническое решение имеет лучшие техника/экономические показатели по многим позициям и позволяет потребителю самому выбрать ту или иную комплектацию приобретаемого конструктора для самостоятельной сборки, что в значительной степени варьирует его финансовые вложения.
3.3 Экономический расчёт проекта
Себестоимость нашего устройства в полной комплектации составляет 5500 рублей. Даже при наценке 100% наша продукции будет, являться привлекательной для потребителей, занимающихся трехмерным сканированием, среди других устройств в ценовом диапазоне до 50 тысяч рублей.
Стоимость первой комплектации (в бумажном варианте): 25 листов формата А4 + цветная печать на 25 листов = 25 * 1 + 25 * 4 = 25 + 100 = 125 рублей.
Стоимость второй комплектации: цена первого комплекта + себестоимость корпуса и расходных материалов + наценка = 125 + 1955 + наценка 100% = 2080 + 2080 = 4160 рублей.
Стоимость третьей комплектации: цена первого комплекта + себестоимость комплектующих устройства + наценка = 125 + 5500 + наценка 100% = 5625 + 5625 = 11250 рублей.
Данные расчета постоянных расходов сведён в табл. № 5; данные расчёта переменных расходов сведён в табл. № 6:
Табл. № 5. Расчет постоянных расходов. Табл. № 6. Расчет переменных расходов.
№ п/п |
Услуга/материалы |
Стоимость (руб) |
№ п/п |
Услуга/материалы |
Стоимость (руб) |
||||||
1 |
Аренда помещения |
8000 |
1 |
Материалы и сырье |
180 |
||||||
2 |
Коммунальные услуги |
2000 |
2 |
Закупочная стоимость товара |
3850 |
||||||
3 |
Зарплата (ставка) |
12000 |
3 |
Зарплата (сдельная часть) |
300 |
||||||
4 |
Реклама |
2000 |
Итого: |
4330 |
|||||||
5 |
Страховые взносы за ИП |
3000 |
|||||||||
6 |
Страховые взносы за работника |
3600 |
|||||||||
7 |
НДФЛ |
1560 |
|||||||||
Итого: |
32160 |
Для изготовления конструктора будет достаточно площадь помещения в 20 м2. Была выбрана средняя средняя по региону стоимость аренды за 1 м2 - 400 рублей. Аренда помещения: 20 * 400 = 8000 рублей. Понадобится один работник для изготовления комплектующих и их упаковки. Ставка 400 р/день. Зарплата работнику (ставка) = 400 * 30 = 12000 рублей. Планируемая стоимость рекламы в социальных сетях 2000 рублей в месяц.
Оплата сдельной части труда работников за одну единицу товара: изготовление устройства (печать на 3D-принтере, проверка исправности) - 100 рублей за одно устройство; упаковка конструктора и отправка на почту (или доставка на руки) - 200 рублей за одно устройство. Зарплата (сдельная часть) за единицу товара = 100 + 200 = 300 рублей.
Расчет BEP [12] (точки безубыточности) при продаже третьей комплектации:
Расчёт маржинального дохода (разница между ценой единицы и переменными затратами) произведен по формуле:
(1) где
P- цена (от англ. price),
AVC- переменные затраты на единицу (от англ. Average variable cost);
Расчёт коэффициента маржинального дохода произведён по формуле :
;(2) где
MR - маржинальный доход,
P- цена (от англ. price);
Расчёт BEP - точки безубыточности (от англ. Break - evenpoint) произведен по формуле:
; (3) где
FC (от англ. Fixed cost) - постоянные затраты,
KMR- коэффициент маржинального дохода;
Точка безубыточности составила 52721 рублей. Это значит, чтобы расходы были равны доходам, нам нужно достигнуть порога в 52721 рублей, превысив этот порог, мы выйдем на прибыль. Для того чтобы достигнуть точки безубыточности нам достаточно иметь пять продаж в месяц третьей комплектации.
Основная часть деталей – унифицированные изделия производства фирмы «СОБЕРИЗАВОД». При изготовлении поворотного стола используется 200 грамм ABS пластика.
Расчёт себестоимости устройства при единичном изготовлении сведен в табл. № 7.
Табл. № 7. Расчёт себестоимости устройства при единичном изготовлении.
№ п/п |
Оборудование (материалы) |
Количество (штук) |
Цена (руб.) |
Сумма (руб.) |
Поставщик/источник |
|
1 |
Arduino Uno |
1 |
260-00 |
260-00 |
https://ru.aliexpress.com |
|
2 |
Веб-камера Logitech C270 |
1 |
1799-00 |
1799-00 |
https://www.dns-shop.ru |
|
3 |
Драйвер шагового двигателя ULN2003 |
1 |
109-00 |
109-00 |
https://ru.aliexpress.com |
|
4 |
Шаговый двигатель 28BYJ-48 |
1 |
120-00 |
120-00 |
https://ru.aliexpress.com |
|
5 |
Промышленный лазерный модуль |
4 |
251-88 |
1007-52 |
https://ru.aliexpress.com |
|
6 |
Пластик ABS для 3D-принтера |
200 гр |
900-00 за 1кг |
180-00 |
https://www.ozon.ru |
|
7 |
Алюминиевый профиль |
1,7 м |
198-00 за 1м |
336-06 |
https://www.soberizavod.ru/ |
|
8 |
Г-соединитель 60х60 |
4 |
66-00 |
264-00 |
https://www.soberizavod.ru/ |
|
9 |
Соединитель 20х80 |
2 |
24-00 |
48-00 |
https://www.soberizavod.ru/ |
|
10 |
Уголок 20х20L |
4 |
35-00 |
140-00 |
https://www.soberizavod.ru/ |
|
11 |
Заглушка торцевая 20 х 20 |
6 |
20-00 |
120-00 |
https://www.soberizavod.ru/ |
|
12 |
Винт с внутренним шест. М5 х 8 |
4 |
2-00 |
8-00 |
https://www.soberizavod.ru/ |
|
13 |
Сухарь пазовый М5 |
29 |
22-00 |
638-00 |
https://www.soberizavod.ru/ |
|
14 |
Гайка-барашек М5 |
4 |
4-00 |
16-00 |
https://www.shuruping.ru |
|
15 |
Гайка М12 |
4 |
7-12 |
28-48 |
https://www.shuruping.ru |
|
16 |
Шайба М5 |
8 |
1-00 |
8-00 |
https://www.obi.ru |
|
17 |
Подшипники 624 |
2 |
35-00 |
70-00 |
https://www.obi.ru |
|
18 |
Болт М12 х 30 |
8 |
3-00 |
24-00 |
https://www.obi.ru |
|
19 |
Болт М9 х 7 |
21 |
3-00 |
63-00 |
https://www.obi.ru |
|
20 |
Болт М6 х 30 |
2 |
3-00 |
6-00 |
https://www.obi.ru |
|
21 |
Болт М7 х 30 |
2 |
3-00 |
6-00 |
https://www.obi.ru |
|
22 |
Прочие расходы |
251-94 |
||||
Итого: |
5500 |
Следует отметить, что оптовые закупки позволят снизить себестоимость устройства до 30 процентов. В этом случае закупочная стоимость товара составит: 5500 - (5500 : 100%) * 30%) = 5500 – 1650 = 3850 рублей.
Заключение
В ходе выполнения проекта мы выявили методы и технологии трехмерного сканирования, нами был разработан, изготовлен и испытан действующий образец 3D-сканера «Фаворит». На созданной действующей модели провели демонстрацию использования лазерного дальномера для трёхмерного сканирования исследуемого объекта, провели финансово-экономического обоснование проекта.
Гипотеза:лазерное сканирование позволяет построить 3D-копию исследуемого физического тела в цифровом формате – нашла своё практическое подтверждение.
Задачи проекта - выполнены полностью.
Цель проекта:создание 3D-сканера «Фаворит» – достигнута.
Библиографический список
https://make-3d.ru/articles/chto-takoe-3d-skaner-i-kak-on-rabotaet/
http://can-touch.ru/blog/history-and-types-of-3d-scanning/
https://www.logitech.com/ru-ru/product/hd-webcam-c270
https://www.astrel.su/3d-printer/3d-plastik/kbase_id_7165.htm
http://arduino.ru/Hardware/ArduinoBoardUno
https://3d-diy.ru/wiki/arduino-mechanics/stepper-motor-28BYJ-48/
http://robotchip.ru/obzor-28byj-48-s-drayverom-uln2003/
https://arduinomaster.ru/motor-dvigatel-privod/shagovye-dvigateli-i-motory-arduino/
https://www.thingiverse.com/thing:702470
http://powerbranding.ru/potrebitel/celevaya-auditoriya/
https://3deshnik.ru/blogs/akdzg/3d-skaner-tsiklop-svoimi-rukami
https://bbf.ru/calculators/13/?outlay=1000&outlay_item=5&cost=10&count=1000
Приложение №1. Основные узлы и соединения 3D-сканера «Фаворит»
Приложение №2. Скетчдля Arduino
#include "SerialCommand.h"
#include <AccelStepper.h>
#include "configuration.h"
AccelStepperstepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
SerialCommandSCmd;
intRotationToSteps(int rotation)
{
return rotation*STEP_BY_MINMOVE;
}
intStepsToRotation(int rot)
{
return rot/STEP_BY_MINMOVE;
}
void Identification()
{
Serial.println("yes");
}
void Hun()
{
Serial.println("Hun?");
}
voidTableCommand()
{
char *arg;
arg = SCmd.next();
if (arg != NULL)
{
if(arg[0]=='R'||arg[0]=='r') // T R
{
char *arg2 = SCmd.next();
intpos=atoi(arg2);
stepper1.move(RotationToSteps(pos));
stepper1.runToPosition();
Serial.print("RELATIVE ROTATION :");
Serial.print(pos);
Serial.print(" => ");
Serial.println(StepsToRotation(stepper1.currentPosition()));
}
else if(arg[0]=='A'||arg[0]=='a') // T A
{
char *arg2 = SCmd.next();
intpos=atoi(arg2);
stepper1.moveTo(RotationToSteps(pos));
stepper1.runToPosition();
Serial.print("ABSOLUTE ROTATION ");
Serial.print(pos);
Serial.print(" => ");
Serial.println(StepsToRotation(stepper1.currentPosition()));
}
else if(arg[0]=='S'||arg[0]=='s') //T S
{
Serial.print("REVOLUTION STEPS ");
Serial.print(" => ");
Serial.println(StepsToRotation(REVOLUTION_STEP));
}
else if(arg[0]=='C' ||arg[0]=='c') //T C
{
stepper1.setCurrentPosition(0);
Serial.print("RESET CUTTENT POSITION ");
Serial.print(" => ");
Serial.println(StepsToRotation(stepper1.currentPosition()));
}
else
{
Serial.print("Unknown Table command :");
Serial.println(arg);
}
}
else {
Serial.print("Position ");
Serial.println(StepsToRotation(stepper1.currentPosition()));
}
}
intgetLaserPin(intlaserIndex)
{
if(laserIndex==0)
return LASER_PIN_1;
else if(laserIndex==1)
return LASER_PIN_2;
else if(laserIndex==2)
return LASER_PIN_3;
else if(laserIndex==3)
return LASER_PIN_4;
else
return (-1);
}
voidLaserCommand()
{
char *arg;
arg = SCmd.next();
if (arg != NULL)
{
intlaserIndex=atoi(arg);
char *arg2 = SCmd.next();
if (arg2 == NULL)
{
Serial.print("LASER_STATE: ");
Serial.print(laserIndex);
int pin =getLaserPin(laserIndex);
Serial.print("(");
Serial.print(pin);
Serial.print(") = ");
if(pin>=0)
Serial.println(digitalRead(pin));
else
Serial.println(-1);
}
else
{
intlaserState = atoi(arg2);
int pin =getLaserPin(laserIndex);
if(pin>=0)
digitalWrite( pin, laserState==1?HIGH:LOW);
Serial.print("SET_LASER: ");
Serial.print(laserIndex);
Serial.print("(");
Serial.print(pin);
Serial.print(") = ");
Serial.println(digitalRead(pin));
}
}
else
{
Serial.print("LASER_COUNT: ");
Serial.println(LASER_COUNT);
}
}
void setup() {
stepper1.setMaxSpeed(500.0);
stepper1.setAcceleration(200.0);
stepper1.setSpeed(400);
stepper1.moveTo(0);
stepper1.runToPosition();
Serial.begin(SERIAL_BAUD);
pinMode(LASER_PIN_1, OUTPUT);
pinMode(LASER_PIN_2, OUTPUT);
pinMode(LASER_PIN_3, OUTPUT);
pinMode(LASER_PIN_4, OUTPUT);
digitalWrite(LASER_PIN_1, LOW);
digitalWrite(LASER_PIN_2, LOW);
digitalWrite(LASER_PIN_3, LOW);
digitalWrite(LASER_PIN_4, LOW);
SCmd.addCommand("sardauscan",Identification);
SCmd.addCommand("T",TableCommand);
SCmd.addCommand("t",TableCommand);
SCmd.addCommand("L",LaserCommand);
SCmd.addCommand("l",LaserCommand);
SCmd.addDefaultHandler(Hun);
Serial.println(FIRMWARE_VERSION);
Serial.flush();
}
void loop() {
SCmd.readSerial(); // We don't do much, just process serial commands
Serial.flush();
}