0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Arduino顏色選擇器的制作

454398 ? 來(lái)源:wv ? 2019-08-28 10:59 ? 次閱讀

步驟1:零件清單

Arduino顏色選擇器的制作

對(duì)于此項(xiàng)目,我們需要:

TCS34725 RGB顏色傳感器對(duì)于Arduino by DFRobot

帶有RGB字體顯示的I2C 16x2 Arduino LCD DFRobot

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

2 x CR2032電池座

滑動(dòng)開(kāi)關(guān)

RGB LED模塊

電線

3x7 cm原型PCB

男性和母針頭

2x M2x20螺絲和螺母

工具:

3D打印機(jī),如果你不擁有它,你可以從Shapeways獲得印花盒

菲利普斯螺絲刀

烙鐵

焊接

步驟2:原理圖

請(qǐng)參閱下面打開(kāi)視頻的裝配部分和示意圖,了解如何

使用上面提供的原理圖進(jìn)行正確接線。

2》

在測(cè)量完零件后,是時(shí)候設(shè)計(jì)一個(gè)3D外殼并進(jìn)行打印了!

設(shè)計(jì)

以下是我在tinkercad上的設(shè)計(jì)鏈接:https://www.tinkercad.com/things/dG47Pr28uwx

上面的內(nèi)容設(shè)計(jì)非常適合上面列出的所有組件。

前部將固定LCD屏幕和顏色傳感器。

主要的3x7 cm PCB將容納DFRDuino Pro Mini,電池座和3個(gè)按鈕,將是從內(nèi)部擰到后部。

RGB LED將位于后部頂部?jī)?nèi)部。

電源開(kāi)關(guān)將安裝在后部的小孔中。

打印

準(zhǔn)備打印的3D模型是av適用于Thingiverse:https://www.thingiverse.com/thing:3223709

打印設(shè)置可能因打印機(jī)而異。

電池蓋部件和前部需要支撐因?yàn)榍安坑幸粋€(gè)內(nèi)置的距離,可以提供顏色傳感器和樣品之間的距離。

如果你沒(méi)有3D打印機(jī),你可以從Shapeways獲得印刷品:點(diǎn)擊這里

匯編

有關(guān)匯編說(shuō)明,請(qǐng)參閱開(kāi)頭提供的視頻的匯編部分。

第4步:源代碼

GitHub上免費(fèi)提供源代碼:https://github.com/alojzjakob/Arduino-Color-Picker

非常歡迎您改進(jìn)代碼,因?yàn)樘峁┑拇a只是起點(diǎn),但效果很好。

這個(gè)項(xiàng)目使用這兩個(gè)特定的庫(kù),所以一定要把它們添加到你的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步:享受您的新工具+改進(jìn)計(jì)劃

現(xiàn)在你可以到處選擇一些漂亮的顏色:)

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6458

    瀏覽量

    186504
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    色環(huán)電阻計(jì)算的研究與應(yīng)用

    一個(gè)理想的色環(huán)電阻計(jì)算的界面應(yīng)該包含一個(gè)顏色選擇器,讓用戶(hù)能夠通過(guò)點(diǎn)擊或下拉菜單選擇各個(gè)顏色環(huán)。而在程序邏輯層面,計(jì)算
    的頭像 發(fā)表于 09-18 13:45 ?213次閱讀

    pads打印彩色貼片圖時(shí),為什么有時(shí)有顏色選擇,有時(shí)沒(méi)有顏色選擇?

    pads打印彩色貼片圖時(shí),這個(gè)位置,為什么有時(shí)有顏色選擇,有時(shí)沒(méi)有顏色選擇?
    發(fā)表于 09-13 14:48

    在RGB和XYZ顏色傳感之間進(jìn)行選擇,以實(shí)現(xiàn)自適應(yīng)照明調(diào)節(jié)

    電子發(fā)燒友網(wǎng)站提供《在RGB和XYZ顏色傳感之間進(jìn)行選擇,以實(shí)現(xiàn)自適應(yīng)照明調(diào)節(jié).pdf》資料免費(fèi)下載
    發(fā)表于 08-26 09:30 ?0次下載
    在RGB和XYZ<b class='flag-5'>顏色</b>傳感<b class='flag-5'>器</b>之間進(jìn)行<b class='flag-5'>選擇</b>,以實(shí)現(xiàn)自適應(yīng)照明調(diào)節(jié)

    數(shù)據(jù)選擇器是時(shí)序邏輯電路嗎

    數(shù)據(jù)選擇器(Data Selector)是一種數(shù)字電路,用于從多個(gè)輸入信號(hào)中選擇一個(gè)或多個(gè)信號(hào),并將所選信號(hào)輸出。它是一種組合邏輯電路,而非時(shí)序邏輯電路。以下是關(guān)于數(shù)據(jù)選擇器的分析。 1. 數(shù)據(jù)
    的頭像 發(fā)表于 08-01 14:39 ?462次閱讀

    數(shù)據(jù)選擇器是組合邏輯電路嗎

    數(shù)據(jù)選擇器(Data Selector)是一種常見(jiàn)的組合邏輯電路,用于根據(jù)輸入的選擇信號(hào),從多個(gè)輸入信號(hào)中選擇一個(gè)輸出。在數(shù)字電路設(shè)計(jì)中,數(shù)據(jù)選擇器廣泛應(yīng)用于多路數(shù)據(jù)
    的頭像 發(fā)表于 08-01 14:28 ?368次閱讀

    一文掌握PCB顏色選擇的訣竅與奧秘

    在電子行業(yè)中,印制電路板(PCB)是至關(guān)重要的組件,它承載著電子元器件并連接它們以形成完整的工作電路。除了電路板的功能和性能外,其顏色也是一個(gè)不可忽視的因素。選擇合適的PCB顏色不僅關(guān)乎產(chǎn)品的美觀性
    的頭像 發(fā)表于 06-28 11:17 ?748次閱讀
    一文掌握PCB<b class='flag-5'>顏色</b><b class='flag-5'>選擇</b>的訣竅與奧秘

    具有N通道功率MOSFET選擇器的1-4節(jié)鋰離子電池SMBus充電控制bq24735數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《具有N通道功率MOSFET選擇器的1-4節(jié)鋰離子電池SMBus充電控制bq24735數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 04-01 10:58 ?0次下載
    具有N通道功率MOSFET<b class='flag-5'>選擇器</b>的1-4節(jié)鋰離子電池SMBus充電控制<b class='flag-5'>器</b>bq24735數(shù)據(jù)表

    如何用Arduino制作一個(gè)簡(jiǎn)易自動(dòng)喂魚(yú)

    如果你家里養(yǎng)有魚(yú),并想找到一種自動(dòng)化喂食的方法,這個(gè)項(xiàng)目可能會(huì)對(duì)你有所啟發(fā)。 在這個(gè)教程中,作者將展示如何制作自己的基于Arduino的自動(dòng)喂魚(yú),讓小魚(yú)不在餓肚子。 自動(dòng)喂魚(yú)
    發(fā)表于 03-28 11:25

    如何制作自己的Arduino電容計(jì)

    在這個(gè)項(xiàng)目中,您將學(xué)習(xí)如何制作自己的Arduino電容計(jì)(測(cè)量電容器的值,范圍從pF到1000的uF)。一般來(lái)說(shuō),電子愛(ài)好者喜歡設(shè)計(jì)自己的小工具而不是購(gòu)買(mǎi)。在這個(gè)項(xiàng)目中,我們使用兩種電容測(cè)量方法,即
    的頭像 發(fā)表于 02-25 15:10 ?1419次閱讀
    如何<b class='flag-5'>制作</b>自己的<b class='flag-5'>Arduino</b>電容計(jì)

    DA1453x閃存選擇器指南應(yīng)用說(shuō)明

    電子發(fā)燒友網(wǎng)站提供《DA1453x閃存選擇器指南應(yīng)用說(shuō)明.pdf》資料免費(fèi)下載
    發(fā)表于 02-21 09:40 ?0次下載
    DA1453x閃存<b class='flag-5'>選擇器</b>指南應(yīng)用說(shuō)明

    如何使用Arduino制作智能垃圾箱

    在這個(gè)項(xiàng)目中,我將向您展示如何使用Arduino制作智能垃圾箱,當(dāng)您帶著垃圾接近時(shí),垃圾箱的蓋子會(huì)自動(dòng)打開(kāi)。
    的頭像 發(fā)表于 02-11 12:22 ?2781次閱讀
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>智能垃圾箱

    如何使用Arduino控制RGB LED

    在本指南中,您將學(xué)習(xí)如何使用Arduino控制RGB LED。RGB(紅-綠-藍(lán))LED可以通過(guò)混合不同強(qiáng)度的紅、綠、藍(lán)光來(lái)產(chǎn)生多種顏色。您將學(xué)習(xí)創(chuàng)建一個(gè)基本Arduino RGB LED電路,并以一些基本
    的頭像 發(fā)表于 02-11 10:28 ?4415次閱讀
    如何使用<b class='flag-5'>Arduino</b>控制RGB LED

    Arduino制作循跡小車(chē)教程

    Arduino制作循跡小車(chē)完全教程
    發(fā)表于 01-05 11:09 ?4次下載

    鴻蒙原生應(yīng)用/元服務(wù)開(kāi)發(fā)-利用picker選擇器來(lái)多選相冊(cè)圖片

    完成某些功能測(cè)試的時(shí)候就很不方便。后來(lái)官方文檔更新后,我發(fā)現(xiàn)一種比較方便的接口來(lái)完成這一功能。那就是利用 @ohos.file.picker (選擇器),直接完成對(duì)相冊(cè)里面圖片的選擇和多選。 正文
    發(fā)表于 12-01 17:04

    如何設(shè)計(jì)一個(gè)參數(shù)化的數(shù)據(jù)選擇器

    在FPGA設(shè)計(jì)中,大部分情況下我們都得使用到數(shù)據(jù)選擇器。并且為了設(shè)計(jì)參數(shù)化,可調(diào),通常情況下我們需要一個(gè)參數(shù)可調(diào)的數(shù)據(jù)選擇器,比如M選1,M是可調(diào)的參數(shù)。
    的頭像 發(fā)表于 11-20 10:27 ?1075次閱讀
    如何設(shè)計(jì)一個(gè)參數(shù)化的數(shù)據(jù)<b class='flag-5'>選擇器</b>