цифровая электроника
вычислительная техника
встраиваемые системы

 



Фломастер на основе Arduino, копирующий цвет объекта

Автор: Mike(admin) от 17-08-2023, 23:55

Хотели бы вы рисовать одним фломастером различными цветами, а не покупать для этого целую упаковку разных фломастеров? Это можно сделать, если реализовать смеситель цветов с датчиков цвета. И всем этим может управлять Arduino.


Фломастер на основе Arduino, копирующий цвет объекта

Для начала сделайте насосы для чернил, используя 3 обрезанных шприца, гвозди с плоской головкой и швейную нить, как показано на следующем изображении.


Фломастер на основе Arduino, копирующий цвет объекта

Основные цвета (красный, синий, зеленый) будем подавать с помощью трех серводвигателей. Их конфигурация на следующем изображении. Здесь привяжите нити насосов к сервоприводам.


Фломастер на основе Arduino, копирующий цвет объекта

Схема подключения компонентов показана далее. Здесь в качестве датчика цвета мы используем TCS34725.


Фломастер на основе Arduino, копирующий цвет объекта

Самодельный фломастер может выглядеть следующим образом.


Фломастер на основе Arduino, копирующий цвет объекта

Код программы для Arduino представлен далее.



#include <Adafruit_TCS34725.h>

#include <Servo.h>
Servo mA;
Servo mB;
Servo mC;

Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);

void setup() {
Serial.begin(9600);
mA.attach(3);  //CYAN
mB.attach(5);  //YELLOW
mC.attach(6);  //MAGENTA
tcs.begin();
}
void loop() {
delay(3000);
float red, green, blue;
tcs.getRGB(&red, &green, &blue);
Serial.print("R: "); Serial.print(int(red));
Serial.print("  G: "); Serial.print(int(green));
Serial.print("  B: "); Serial.print(int(blue));
Serial.println();
float R = int(red);
float G = int(green);
float B = int(blue);
float cyan = 10 - R/25.5;
float magenta = 10 - G/25.5;
float yellow = 10 - B/25.5;
Serial.print("Cyan: ");\
Serial.print(cyan);
Serial.print("  Yellow: ");
Serial.print(yellow);
Serial.print("  Magenta: ");
Serial.print(magenta);
while(cyan>0){
mA.write(0);
delay(1000);
mA.write(90);
delay(1000);
cyan = cyan - 1;
}
while(yellow>0){
mB.write(180);
delay(1000);
mB.write(60);
delay(1000);
yellow = yellow - 1;
}
while(magenta>0){
mC.write(0);
delay(1000);
mC.write(90);
delay(1000);
magenta = magenta - 1;
}
delay(100000);
}



© digitrode.ru


Теги: Arduino, датчик цвета




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий