Проект сортировщика цветов Arduino
<основной класс="главный сайт" id="главный">
В этой статье я покажу вам, как сделать сортировщик цветов Arduino. Вы можете посмотреть следующее видео или прочитать статью ниже.
Дизайн
Все, что нам нужно для этого проекта Arduino, — это один датчик цвета (TCS3200) и два серводвигателя для любителей, что делает этот проект довольно простым, но в то же время очень увлекательным. Во-первых, с помощью программы 3D-моделирования Solidworks я сделал дизайн цветного сортировщика, и вот его принцип работы:
- Сначала цветные кегли, находящиеся в зарядном устройстве, падают на платформу, прикрепленную к верхнему серводвигателю.
- Затем серводвигатель вращается и подводит кегель к датчику цвета, который определяет его цвет.
- После этого нижний серводвигатель поворачивается в определенное положение, а затем снова вращается верхний серводвигатель, пока кегель не упадет на направляющую.
Здесь вы можете скачать 3D-модель, а также чертежи со всеми размерами, необходимыми для создания этого проекта Arduino.
Вы можете найти и скачать эту 3D-модель, а также изучить ее в своем браузере на Thangs.
Загрузите 3D-модель сборки на Thangs.
Для лазерной резки всех деталей корпуса можно использовать следующие чертежи:
Сборка сортировщика цветов Arduino
Материал, который я использовал для этого проекта, представляет собой 3-миллиметровую древесноволокнистую плиту. Я перерисовываю детали на ДВП по чертежам и небольшой ручной пилой вырезаю все детали в размер.
Подготовив все детали, я приступил к их сборке. Сначала я собрал внешние детали с помощью клеевого пистолета.
Затем с помощью универсального клея я приклеил два серводвигателя на платформы и прикрепил их к сборке.
После этого снова с помощью клея я прикрепил направляющую к нижнему серводвигателю, а также опору и платформу, необходимые для верхнего серводвигателя.
Затем я вставил переключатель и разъем питания для питания Arduino с помощью адаптера 5 В, а на третьей платформе вставил датчик цвета.
Я соединил компоненты вместе в соответствии со следующей принципиальной схемой.
Вы можете получить компоненты, необходимые для этого проекта Arduino, по ссылкам ниже:
- TCS230 Датчик цвета TCS3200…….
- Ардуино Нано …………………………….
- Макет и соединительные провода………
- Серводвигатель ……………………………….
- Переключение………………………………….……..
- Разъем питания…………………………….……
Исходный код сортировщика цветов Arduino
На этом этапе нам нужно сначала запрограммировать Arduino, а затем закончить сборку. Вот код Arduino:
/* Arduino Project - Color Sorting Machine
*
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
*/
#include <Servo.h>
#define S0 2
#define S1 3
#define S2 4
#define S3 5
#define sensorOut 6
Servo topServo;
Servo bottomServo;
int frequency = 0;
int color=0;
void setup() {
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(sensorOut, INPUT);
// Setting frequency-scaling to 20%
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
topServo.attach(7);
bottomServo.attach(8);
Serial.begin(9600);
}
void loop() {
topServo.write(115);
delay(500);
for(int i = 115; i > 65; i--) {
topServo.write(i);
delay(2);
}
delay(500);
color = readColor();
delay(10);
switch (color) {
case 1:
bottomServo.write(50);
break;
case 2:
bottomServo.write(75);
break;
case 3:
bottomServo.write(100);
break;
case 4:
bottomServo.write(125);
break;
case 5:
bottomServo.write(150);
break;
case 6:
bottomServo.write(175);
break;
case 0:
break;
}
delay(300);
for(int i = 65; i > 29; i--) {
topServo.write(i);
delay(2);
}
delay(200);
for(int i = 29; i < 115; i++) {
topServo.write(i);
delay(2);
}
color=0;
}
// Custom Function - readColor()
int readColor() {
// Setting red filtered photodiodes to be read
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
// Reading the output frequency
frequency = pulseIn(sensorOut, LOW);
int R = frequency;
// Printing the value on the serial monitor
Serial.print("R= ");//printing name
Serial.print(frequency);//printing RED color frequency
Serial.print(" ");
delay(50);
// Setting Green filtered photodiodes to be read
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
// Reading the output frequency
frequency = pulseIn(sensorOut, LOW);
int G = frequency;
// Printing the value on the serial monitor
Serial.print("G= ");//printing name
Serial.print(frequency);//printing RED color frequency
Serial.print(" ");
delay(50);
// Setting Blue filtered photodiodes to be read
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
// Reading the output frequency
frequency = pulseIn(sensorOut, LOW);
int B = frequency;
// Printing the value on the serial monitor
Serial.print("B= ");//printing name
Serial.print(frequency);//printing RED color frequency
Serial.println(" ");
delay(50);
if(R<45 & R>32 & G<65 & G>55){
color = 1; // Red
}
if(G<55 & G>43 & B<47 &B>35){
color = 2; // Orange
}
if(R<53 & R>40 & G<53 & G>40){
color = 3; // Green
}
if(R<38 & R>24 & G<44 & G>30){
color = 4; // Yellow
}
if(R<56 & R>46 & G<65 & G>55){
color = 5; // Brown
}
if (G<58 & G>45 & B<40 &B>26){
color = 6; // Blue
}
return color;
}
Code language: Arduino (arduino)
Описание кода:
Итак, нам нужно подключить библиотеку «Servo.h», определить пины, к которым будет подключаться датчик цвета, создать сервообъекты и объявить некоторые переменные, необходимые для программы. В разделе настройки нам нужно определить контакты как выходы и входы, установить масштабирование частоты для датчика цвета, определить контакты сервопривода и запустить последовательную связь для печати результатов считывания цвета на последовательном мониторе.
В секции цикла наша программа начинается с перемещения верхнего серводвигателя в положение зарядного устройства для кеглей. Обратите внимание, что это значение 115 подходит для моих деталей и моего серводвигателя, поэтому вам следует настроить это значение, а также следующие значения для серводвигателей в соответствии с вашей сборкой.
Далее с помощью цикла «for» мы будем вращать и подводить кеглю к положению датчика цвета. Мы используем цикл for, чтобы можно было контролировать скорость вращения, изменяя время задержки в цикле.
Далее, с задержкой в полсекунды, с помощью специально созданной функции readColor() мы будем считывать цвет кегли. Вот код пользовательской функции. Используя четыре контрольных контакта и контакт частотного выхода датчика цвета, мы считываем цвет кегли. Датчик считывает 3 разных значения для каждой кегли:красный, зеленый и синий, и в соответствии с этими значениями мы определяем, каков фактический цвет. Подробнее о том, как работает датчик цвета TCS3200, вы можете узнать из моего предыдущего подробного руководства.
Вот значения RGB, которые я получил от датчика для каждой кегли. Обратите внимание, что эти значения могут варьироваться, поскольку датчики не всегда точны. Следовательно, используя эти операторы «если», мы допускаем ошибку датчика около +-5 от проверенного значения для определенного цвета. Так, например, если у нас есть красная кегля, первое утверждение «если» будет истинным, а переменная «цвет» получит значение 1. Это то, что делает пользовательская функция readColor(), а после этого использование «переключателя-кейса». ” мы поворачиваем нижний сервопривод в определенное положение. В конце мы дополнительно вращаем верхний серводвигатель, пока кегля не упадет в направляющую, и снова отправляем ее обратно в исходное положение, чтобы процесс можно было повторить.
Завершение дизайна
После загрузки кода я закрепил плату Arduino с помощью клеевого пистолета.
Затем из прозрачной пластиковой бутылки я сделал зарядное устройство и вместе с верхней частью приклеил его к сборке и закончил проект.
Не стесняйтесь задавать любые вопросы в разделе комментариев ниже.
Производственный процесс
- Создание монитора Ambilight с помощью Arduino
- Игра Arduino Pong - OLED-дисплей
- Детектор звуковой частоты
- Клон Arduino Tamagotchi - цифровой питомец
- Манипулятор беспроводного переключателя света
- Tech-TicTacToe
- Водяной пистолет с датчиком движения
- Таймер обратного отсчета Arduino
- Цветовой микшер Arduino RGB
- Arduino Sunflower:электронный танцор солнца