Сортировщик Распаковщик Вкусностей
Материал из Department of Theoretical and Applied Mechanics
Содержание
Описание
Актуальность
Данный проект был интересен с точки зрения реализации (опробовать оборудование в Фаб-Лабе и поработать с микроконтроллерами).
Проектная команда
Поставленные цели
Создать полуавтоматическую машину, которая будет открывать упаковки с вкусностями и делить поровну на заданное количество человек.
Работа по проекту
Срок | Задача | Возникающие проблемы | Что сделано к сроку |
23.03.18 | Ознакомление с Arduino | На данном этапе проблем не возникло | Собран "скелет" Arduino и написана прошивка[1] |
30.04.18 | Работа с 3D принтером | На данном этапе проблем не возникло | Смоделированы две шестеренки |
07.05.18 | Сборка механического каркаса | Выяснилось, что мощности имеющегося двигателя не хватает для того, чтобы крутить шестеренки с натянутой лентой | Решено отказаться от использования двигателя постоянного тока (в связи с доровизной более мощного) |
14.05.18 - 28.05.18 | Сборка корпуса со всеми составляющими | Заместо автоматического "открытия" упаковки было решено использовать механическое | Корпус собран |
Результаты по проекту
Arduino прошивка
#include <Servo.h> // Библиотека для сервопривода
Servo servo1; // Объявление переменных
int timestep;
int timestep1;
boolean flag = 0;
boolean flag1 = 0;
boolean battle;
byte i;
byte j;
byte v;
byte c;
void setup() {
servo1.attach(4); // Задание пинов на вход и выход
pinMode(3,INPUT_PULLUP);
pinMode(2,INPUT);
pinMode(9,OUTPUT);
Serial.begin(9600);
servo1.write(0);
// digitalWrite(9,LOW);
}
void loop() {
v = !digitalRead(2);
battle = !digitalRead(3);
if (battle==1 && flag==0 && (millis()-timestep)>300){ // Отрабатываем нажатие кнопки..
flag = 1;
i++;
Serial.println(i);
timestep = millis();
}
if (battle==0 && flag==1){ // ..и отжатие
flag = 0;
}
if ((millis()-timestep)>2500 && i>1){ // Через 2.5 секунды после последнего нажатия кнопки запускается дальнейший скрипт
j = i;
}
//if (j>0 && (millis()-timestep)>5000 && (millis()-timestep)<6000){ Прошивка для двигателя (не использовалась)
// digitalWrite(9,HIGH);
//} else {
// digitalWrite(9,LOW);
//}
if (j>0 && v==HIGH && flag1==0 && c<180 && (millis()-timestep1)>1000){ // Снятие показания с датчика препятствий и
flag1 = 1;
timestep1 = millis();
c += 180/j;
servo1.write(c); // подача сигнала на сервопривод
}
if (j>0 && v==LOW && flag1==1 && (millis()-timestep1)>300){
flag1 = 0;
timestep1 = millis();
}
}
Литература и ссылки
- ↑ Прошивка "Arduino прошивка"