0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino颜色选择器的制作

454398 ? 来源:wv ? 2019-08-28 10:59 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:零件清单

Arduino颜色选择器的制作

对于此项目,我们需要:

TCS34725 RGB颜色传感器对于Arduino by DFRobot

带有RGB字体显示的I2C 16x2 Arduino LCD DFRobot

DFRobino的DFRduino Pro Mini V1.3(8M3.3V328)

2 x CR2032电池座

滑动开关

RGB LED模块

电线

3x7 cm原型PCB

男性和母针头

2x M2x20螺丝和螺母

工具:

3D打印机,如果你不拥有它,你可以从Shapeways获得印花盒

菲利普斯螺丝刀

烙铁

焊接

步骤2:原理图

请参阅下面打开视频的装配部分和示意图,了解如何

使用上面提供的原理图进行正确接线。

2》

在测量完零件后,是时候设计一个3D外壳并进行打印了!

设计

以下是我在tinkercad上的设计链接:https://www.tinkercad.com/things/dG47Pr28uwx

上面的内容设计非常适合上面列出的所有组件。

前部将固定LCD屏幕和颜色传感器。

主要的3x7 cm PCB将容纳DFRDuino Pro Mini,电池座和3个按钮,将是从内部拧到后部。

RGB LED将位于后部顶部内部。

电源开关将安装在后部的小孔中。

打印

准备打印的3D模型是av适用于Thingiverse:https://www.thingiverse.com/thing:3223709

打印设置可能因打印机而异。

电池盖部件和前部需要支撑因为前部有一个内置的距离,可以提供颜色传感器和样品之间的距离。

如果你没有3D打印机,你可以从Shapeways获得印刷品:点击这里

汇编

有关汇编说明,请参阅开头提供的视频的汇编部分。

第4步:源代码

GitHub上免费提供源代码:https://github.com/alojzjakob/Arduino-Color-Picker

非常欢迎您改进代码,因为提供的代码只是起点,但效果很好。

这个项目使用这两个特定的库,所以一定要把它们添加到你的Arduino IDE中:

https://github.com/bearwaterfall/DFRobot_LCD-master/tree/master

https://github.com/DFRobot/DFRobot_TCS34725/raw/master/DFRobot_TCS34725.rar

#include

#include

#define ledPin 12

#define redpin 3

#define greenpin 5

#define bluepin 6

const int8_t button1Pin = 7; //1

const int8_t button2Pin = 8; //2

const int8_t button3Pin = 9; //3

int8_t button1State = 0;

int8_t button2State = 0;

int8_t button3State = 0;

#define ACTIVATED LOW

// for a common anode LED, connect the common pin to +5V

// for common cathode, connect the common to ground

// set to false if using a common cathode LED

#define commonAnode true

// our RGB -》 eye-recognized gamma color

byte gammatable[256];

DFRobot_LCD lcd(16,2);

DFRobot_TCS34725 tcs = DFRobot_TCS34725(0x50, TCS34725_GAIN_60X);

bool ledEnabled=false;

int lightsMode=0;

// make some custom characters

byte light_on[8] = {

0b00100,

0b00100,

0b01110,

0b11111,

0b11111,

0b01110,

0b00000,

0b10101

};

byte light_off[8] = {

0b00100,

0b00100,

0b01110,

0b10001,

0b10001,

0b01110,

0b00000,

0b00000

};

byte rgb_on[8] = {

0b00000,

0b10101,

0b00000,

0b01110,

0b01110,

0b01110,

0b11111,

0b11111

};

byte rgb_off[8] = {

0b00000,

0b00000,

0b00000,

0b01110,

0b01010,

0b01010,

0b10001,

0b11111

};

void setup() {

lcd.init();

// create a new character

lcd.customSymbol(0, light_on);

lcd.customSymbol(1, light_off);

lcd.customSymbol(2, rgb_on);

lcd.customSymbol(3, rgb_off);

pinMode(ledPin, OUTPUT);

digitalWrite(ledPin, LOW);

pinMode(button1Pin, INPUT);

pinMode(button2Pin, INPUT);

pinMode(button3Pin, INPUT);

digitalWrite(button1Pin, HIGH);

digitalWrite(button2Pin, HIGH);

digitalWrite(button3Pin, HIGH);

pinMode(redpin, OUTPUT);

pinMode(greenpin, OUTPUT);

pinMode(bluepin, OUTPUT);

analogWrite(redpin,0);

analogWrite(greenpin,0);

analogWrite(bluepin,0);

// thanks PhilB for this gamma table! it helps convert RGB colors to what humans see

for (int i=0; i《256; i++) {

float x = i;

x /= 255;

x = pow(x, 2.5);

x *= 255;

if (commonAnode) {

gammatable[i] = 255 - x;

} else {

gammatable[i] = x;

}

}

}

void loop() {

button1State = digitalRead(button1Pin);

button2State = digitalRead(button2Pin);

button3State = digitalRead(button3Pin);

int btn=0;

if(button1State==LOW){

btn=1;

}

if(button2State==LOW){

btn=2;

}

if(button3State==LOW){

btn=3;

lightsMode++;

if(lightsMode==4){

lightsMode=0;

}

}

uint16_t clear, red, green, blue;

tcs.getRGBC(&red, &green, &blue, &clear);

// Figure out some basic hex code for visualization

uint32_t sum = clear;

float r, g, b;

r = red; r /= sum;

g = green; g /= sum;

b = blue; b /= sum;

r *= 255; g *= 255; b *= 255;

String redHex,greenHex,blueHex;

redHex = String((int)r, HEX);

greenHex = String((int)g, HEX);

blueHex = String((int)b, HEX);

lcd.setRGB(r,g,b); //Set lcd backlight RGB Value

lcd.setCursor(0,0); // print values on lcd

lcd.print(“#”); lcd.print(redHex); lcd.print(greenHex); lcd.print(blueHex); lcd.print(“ ”);

lcd.setCursor(0,1);

lcd.print(“rgb(”);

lcd.print((int)r); lcd.print(“,”);

lcd.print((int)g); lcd.print(“,”);

lcd.print((int)b); lcd.print(“) ”);

if(lightsMode==0){

ledEnabled=false;

lcd.setCursor(15,0);

lcd.write((unsigned char)1);//light off

lcd.setCursor(14,0);

lcd.write((unsigned char)2);//rgb led on

//Set the color of RGB led indicator

analogWrite(redpin, round(gammatable[(int)r]/4));

analogWrite(greenpin, round(gammatable[(int)g]/4));

analogWrite(bluepin, round(gammatable[(int)b]/4));

}

if(lightsMode==1){

ledEnabled=true;

lcd.setCursor(15,0);

lcd.write((unsigned char)0);//light on

lcd.setCursor(14,0);

lcd.write((unsigned char)2);//rgb led on

//Set the color of RGB led indicator

analogWrite(redpin, round(gammatable[(int)r]/4));

analogWrite(greenpin, round(gammatable[(int)g]/4));

analogWrite(bluepin, round(gammatable[(int)b]/4));

}

if(lightsMode==2){

ledEnabled=true;

lcd.setCursor(15,0);

lcd.write((unsigned char)0);//light on

lcd.setCursor(14,0);

lcd.write((unsigned char)3);//rgb led off

//Set the color of RGB led indicator

analogWrite(redpin, 255);

analogWrite(greenpin, 255);

analogWrite(bluepin, 255);

}

if(lightsMode==3){

ledEnabled=false;

lcd.setCursor(15,0);

lcd.write((unsigned char)1);//light off

lcd.setCursor(14,0);

lcd.write((unsigned char)3);//rgb led off

//Set the color of RGB led indicator

analogWrite(redpin, 255);

analogWrite(greenpin, 255);

analogWrite(bluepin, 255);

}

if(ledEnabled){

digitalWrite(ledPin, HIGH);

}else{

digitalWrite(ledPin, LOW);

}

//delay(10);

}

第5步:享受您的新工具+改进计划

现在你可以到处选择一些漂亮的颜色:)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Arduino
    +关注

    关注

    190

    文章

    6501

    浏览量

    193096
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Texas Instruments SN74AHC257/SN74AHC257-Q1 2线至1线数据选择器/多路复用器数据手册

    Texas Instruments SN74AHC257/SN74AHC257-Q1 2线至1线数据选择器/多路复用器是具有三态输出的四通道双输入数据选择器/多路复用器。所有通道均由共享A/B和OE
    的头像 发表于 08-01 11:36 ?274次阅读
    Texas Instruments SN74AHC257/SN74AHC257-Q1 2线至1线数据<b class='flag-5'>选择器</b>/多路复用器数据手册

    Texas Instruments SN74LV8T157-EP数据选择器/多路复用器数据手册

    Texas Instruments SN74LV8T157-EP数据选择器/多路复用器包含四个数据选择器/多路复用器,用于选择两个数据源中的一个。同一地址控制所有通道、选择选通(G)输
    的头像 发表于 07-05 10:18 ?296次阅读
    Texas Instruments SN74LV8T157-EP数据<b class='flag-5'>选择器</b>/多路复用器数据手册

    Texas Instruments SN74HCT157四通道二对一线路数据选择器/多路复用器数据手册

    Texas Instruments SN74HCT157四通道二对一线路数据选择器/多路复用器包含驱动和逆变器,为四个输出栅极提供完整的数据选择。Texas Instruments SN74HCT157中提供单独的选通(/G)
    的头像 发表于 07-04 09:32 ?945次阅读
    Texas Instruments SN74HCT157四通道二对一线路数据<b class='flag-5'>选择器</b>/多路复用器数据手册

    Texas Instruments SN74AC153-Q1双路4线至1线数据选择器/多路复用器数据手册

    Texas Instruments SN74AC153-Q1双路4线至1线数据选择器/多路复用器是一款双路数据选择器/多路复用器,包含完整的二进制解码,用于选择四个数据源中的一个。相同的地址
    的头像 发表于 07-02 14:49 ?268次阅读
    Texas Instruments SN74AC153-Q1双路4线至1线数据<b class='flag-5'>选择器</b>/多路复用器数据手册

    HarmonyOS实战:自定义时间选择器

    前言 最近在日常鸿蒙开发过程中,经常会使用一些时间选择器,鸿蒙官方提供的时间选择器满足不了需求,所以自己动手自定义一些经常会使用到的时间选择器,希望能帮到你,建议点赞收藏! 实现效果 需求分析 默认
    的头像 发表于 06-09 15:51 ?284次阅读
    HarmonyOS实战:自定义时间<b class='flag-5'>选择器</b>

    PCB颜色代表什么颜色?如何选择PCB颜色?一文帮你快速搞定

    今天给大家介绍的是:PCB颜色,包括PCB颜色差异、如何选择PCB颜色?为什么大多数PCB都是绿色? 一、PCB颜色是什么?我们看到的PC
    发表于 04-08 11:22

    数字电路—13、数据选择器

    数据选择器定义:在多路数据传送过程中,能够根据需要将其中任意一路挑选出来的电路,叫做数据选择器, 也称为多路选择器,其作用相当于多路开关。
    发表于 03-26 11:13

    颜色如何影响PCBA加工成本?一文带你揭秘

    一站式PCBA智造厂家今天为大家讲讲影响PCBA板颜色选择的因素有哪些?PCBA板颜色对PCBA加工成本的影响。在PCBA制造过程中,颜色是PCB板设计的一个可选项,通常并不影响电路板
    的头像 发表于 03-10 09:27 ?450次阅读

    DLP4710EVM-LC官网的固件选择器提供的red only版本是使得PMIC只保持红色LED的连接吗?

    官网的固件选择器提供的red only版本是使得PMIC只保持红色LED的连接吗 所以物理上只需连接1个led硬件对吗
    发表于 02-18 08:19

    TMS320C6000 DSP中断选择器参考指南

    电子发烧友网站提供《TMS320C6000 DSP中断选择器参考指南.pdf》资料免费下载
    发表于 12-24 17:11 ?0次下载
    TMS320C6000 DSP中断<b class='flag-5'>选择器</b>参考指南

    如何选择PCB颜色

    一、PCB颜色代表什么意思? ? PCB颜色一般是指拿到一块PCB板时最直观看到的板子上的油色,PCB表面的颜色就是阻焊剂的颜色。PCB板染色颜料是一种硬化树脂,主体树脂是无色近透明的
    的头像 发表于 12-24 11:33 ?1209次阅读

    如何用SS1系列颜色传感示教多通道颜色

    基于白色LED光源的特性,深视智能SS1系列颜色传感突破了传统单色RGB、融合光RGB的波长限制,将发射波长的范围覆盖到整个可见光谱,最大支持检测16种颜色。那么,我们如何利用SS1系列颜色
    的头像 发表于 12-23 08:17 ?774次阅读
    如何用SS1系列<b class='flag-5'>颜色</b>传感<b class='flag-5'>器</b>示教多通道<b class='flag-5'>颜色</b>?

    色环电阻计算的研究与应用

    一个理想的色环电阻计算的界面应该包含一个颜色选择器,让用户能够通过点击或下拉菜单选择各个颜色环。而在程序逻辑层面,计算
    的头像 发表于 09-18 13:45 ?976次阅读

    pads打印彩色贴片图时,为什么有时有颜色选择,有时没有颜色选择

    pads打印彩色贴片图时,这个位置,为什么有时有颜色选择,有时没有颜色选择
    发表于 09-13 14:48

    在RGB和XYZ颜色传感之间进行选择,以实现自适应照明调节

    电子发烧友网站提供《在RGB和XYZ颜色传感之间进行选择,以实现自适应照明调节.pdf》资料免费下载
    发表于 08-26 09:30 ?0次下载
    在RGB和XYZ<b class='flag-5'>颜色</b>传感<b class='flag-5'>器</b>之间进行<b class='flag-5'>选择</b>,以实现自适应照明调节