Сортировщик Распаковщик Вкусностей
Содержание
Описание[править]
Актуальность[править]
Данный проект был интересен с точки зрения реализации (опробовать оборудование в Фаб-Лабе и поработать с микроконтроллерами).
Проектная команда[править]
Поставленные цели[править]
Создать полуавтоматическую машину, которая будет открывать упаковки с вкусностями и делить поровну на заданное количество человек.
Работа по проекту[править]
Срок | Задача | Возникающие проблемы | Что сделано к сроку |
23.03.18 | Ознакомление с Arduino | На данном этапе проблем не возникло | Собран "скелет" Arduino и написана прошивка |
30.04.18 | Работа с 3D принтером | На данном этапе проблем не возникло | Смоделированы две шестеренки |
07.05.18 | Сборка механического каркаса | Выяснилось, что мощности имеющегося двигателя не хватает для того, чтобы крутить шестеренки с натянутой лентой | Решено отказаться от использования двигателя постоянного тока (в связи с дороговизной более мощного) |
14.05.18 - 28.05.18 | Сборка корпуса со всеми составляющими | Вместо автоматического "открытия" упаковки было решено использовать механическое | Корпус собран |
Результаты по проекту[править]
Наблюдается выполнение основных функций установкой. Для большего эффекта требуется увеличить количество тестирований с целью выявления мест конструкции, требующих усовершенствований. Например, более рациональным и зрелищным способом вскрытия упаковки может оказаться её сдавливание и дальнейшее расхождение по швам, вероятность которого возможно увеличить путём расчёта места приложения усилия. Проблем, связанных с написанным скетчем к Arduino не обнаружено, сама программа не занимает много места в памяти Arduino UNO и обрабатывается быстро. Таким образом, использование микроконтроллера Arduino отлично подходит для реализации проекта такого рода.
Arduino прошивка[править]
1 #include <Servo.h> // Библиотека для сервопривода
2 Servo servo1; // Объявление переменных
3 int timestep;
4 int timestep1;
5 boolean flag = 0;
6 boolean flag1 = 0;
7 boolean battle;
8 byte i;
9 byte j;
10 byte v;
11 byte c;
12 void setup() {
13 servo1.attach(4); // Задание пинов на вход и выход
14 pinMode(3,INPUT_PULLUP);
15 pinMode(2,INPUT);
16 pinMode(9,OUTPUT);
17 Serial.begin(9600);
18 servo1.write(0);
19 // digitalWrite(9,LOW);
20 }
21
22 void loop() {
23 v = !digitalRead(2);
24 battle = !digitalRead(3);
25 if (battle==1 && flag==0 && (millis()-timestep)>300){ // Отрабатываем нажатие кнопки..
26 flag = 1;
27 i++;
28 Serial.println(i);
29 timestep = millis();
30 }
31 if (battle==0 && flag==1){ // ..и отжатие
32 flag = 0;
33 }
34 if ((millis()-timestep)>2500 && i>1){ // Через 2.5 секунды после последнего нажатия кнопки запускается дальнейший скрипт
35 j = i;
36 }
37 //if (j>0 && (millis()-timestep)>5000 && (millis()-timestep)<6000){ Прошивка для двигателя (не использовалась)
38 // digitalWrite(9,HIGH);
39 //} else {
40 // digitalWrite(9,LOW);
41 //}
42 if (j>0 && v==HIGH && flag1==0 && c<180 && (millis()-timestep1)>1000){ // Снятие показания с датчика препятствий и
43 flag1 = 1;
44 timestep1 = millis();
45 c += 180/j;
46 servo1.write(c); // подача сигнала на сервопривод
47 }
48 if (j>0 && v==LOW && flag1==1 && (millis()-timestep1)>300){
49 flag1 = 0;
50 timestep1 = millis();
51 }
52
53 }
Литература и ссылки[править]
1. Видео уроки по Arduino:
http://alexgyver.ru/arduino_lessons/
2. Итернет-класс обучения работы с Arduino:
http://robotclass.ru
3. Лекции по Arduino:
http://boteon.com/blogs/obuchayuschie-lekcii-po-arduino