สีใดก็ได้ประกอบด้วยสามสี: แดงเขียวและน้ำเงินโดยใช้ RGB LED ที่เรียบง่ายคุณสามารถสร้างสีใดก็ได้ แต่ข้อ จำกัด ของ RGB LED คือมีไฟ LED สามดวงแยกกันอยู่ภายในและต้องใช้หมุดสามตัวของไมโครคอนโทรลเลอร์เพื่อใช้งาน RGB LED หนึ่งดวง ดังนั้นจึงไม่สามารถเชื่อมต่อ LED หลายร้อยตัวกับไมโครคอนโทรลเลอร์เพียงตัวเดียวได้
ที่จะเอาชนะปัญหานี้ได้สร้าง Adafruit NeoPixel LED Strip ต้องใช้เพียงสามพินในการขับเคลื่อน LED RGB NeoPixel หลายตัว หมุดสองตัวใช้สำหรับจ่ายไฟและกราวด์และอีกหนึ่งพินสำหรับ Data In (DI) พิน Data INใช้เพื่อระบุและควบคุม LED ต่างๆในแถบด้วยสีความสว่าง ฯลฯ แต่ต้องใช้ไมโครคอนโทรลเลอร์เพื่อเรียกใช้ NeoPixels Arduino มากมักใช้กับ NeoPixel ดังนั้นวันนี้เราจะเรียนรู้ที่จะไฟ LED อินเตอร์เฟส NeoPixel กับ Arduino คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ NeoPixels ได้ที่ AdaFruit
ในโครงการนี้เรากำลังควบคุม NeoPixel LED โดยใช้ Arduino และ TFT LCD touch Screen เราได้สร้างปุ่มสัมผัส 7 สีที่แตกต่างกันบน TFT LCD 2.4 นิ้วและเมื่อเราแตะปุ่มที่มีสีบางสีบนจอ LCD แถบ NeoPixel LED จะสว่างขึ้นพร้อมกับสีเดียวกันของปุ่มนั้น ที่นี่เราได้ใช้NeoPixel RGB ดิจิตอล LED แถบไฟ LED
NeoPixel RGB LED สามารถส่องสว่างได้ทุกสีดังนั้นเราจึงสามารถเพิ่มปุ่มต่างๆบนจอ LCD เพื่อให้ LED เรืองแสงเป็นสีมากขึ้นเมื่อแตะที่ปุ่มเหล่านั้น นอกจากนี้ยังสามารถเพิ่มเอฟเฟกต์และลวดลายที่สวยงามอื่น ๆ ได้โดยใช้ Coding คุณสามารถสร้างระบบตกแต่งที่ควบคุมโดย Arduinoเต็มรูปแบบโดยใช้ NEO Pixel LEDsและสามารถควบคุมระบบนี้ได้โดย LCD ที่วางอยู่ใกล้คุณ
ส่วนประกอบที่จำเป็น:
- Arduino Mega หรือ Arduino รุ่นอื่น ๆ
- 2.4 นิ้ว TFT LCD Shield พร้อมตัวควบคุม SPFD5408
- NeoPixel RGB LED Strip
- การเชื่อมต่อสายไฟ
- สาย USB หรืออะแดปเตอร์ 12 V 1A
การเชื่อมต่อวงจร:
ในการเชื่อมต่อ NeoPixels Strip กับ Arduino Megaเพียงแค่เชื่อมต่อขา Arduino 5V กับขา 5V ของ NeoPixel และ GND ของ Mega เข้ากับ GND ของ NeoPixel จากนั้นเชื่อมต่อNeoPixel DI pin (data in)กับ Digital Pin no 36 ของ Arduino Mega ติดตั้ง TFT LCD Touch Shield บน Arduino อย่างระมัดระวังเพื่อให้ GND ของ MEGA อยู่ใต้ GND ของ LCD และขา 5V ของ Arduino เชื่อมต่อกับขา 5V ของ LCD
ระวังอย่าเปลี่ยน GND และ 5V พินของแถบ NeoPixel LED ขณะเชื่อมต่อกับ Arduino มิฉะนั้นจะทำให้แถบ NeoPixel LED เสียหาย โปรดทราบว่าที่นี่เราใช้ Arduino Mega แต่คุณสามารถใช้ Arduino รุ่นอื่นได้
การเชื่อมต่อกับ Arduino กับ NeoPixel RGB LED Strip:
หมุด Arduino |
หมุดของ NeoPixel Strip |
5v |
5v |
GND |
GND |
หมายเลขพินดิจิทัล 36 |
DI (ข้อมูลใน) |
คำอธิบายการทำงาน:
การทำงานของNeoPixel LED กับ Arduinoนั้นง่ายมาก เพียงแตะปุ่มสัมผัสที่มีสีใดก็ได้บนจอ LCD ที่คุณต้องการให้แถบ NeoPixel LED เรืองแสง ไฟ LED จะสว่างตามสีนั้น ๆ โค้ดถูกเขียนด้วยวิธีนี้เพื่อให้คุณสามารถทำงานนี้ซ้ำได้ไม่รู้จบโดยไม่ต้องรีเซ็ต Arduino Mega คุณสามารถตรวจสอบCode และ Demo Video ได้ที่ท้ายบทความนี้
เมื่อแตะปุ่มใด ๆ บน LCD ข้อมูลจะถูกส่งไปยัง Arduino และ Arduino จะส่งคำสั่งไปยัง NeoPixel Strip เพื่อให้สว่างขึ้น ตัวอย่างเช่นแถบ NeoPixel LED จะเรืองแสงเป็นสีเขียวเมื่อเราแตะปุ่มสีเขียวบน LCD และแถบ LED จะเรืองแสงเป็นสีแดงเมื่อเรากดปุ่มสีแดงและอื่น ๆ
คำอธิบายการเขียนโปรแกรม:
ในการเชื่อมต่อ TFT LCD กับ Arduino เราได้ใช้ไลบรารีบางส่วน ไลบรารีทั้งหมดมาในไฟล์ rar เดียวและสามารถดาวน์โหลดได้จากลิงค์นี้ คลิกที่ 'โคลนหรือดาวน์โหลด' และ 'ดาวน์โหลดไฟล์ ZIP' และเพิ่มลงในโฟลเดอร์ไลบรารี Arduino ของคุณ ไลบรารีนี้จำเป็นสำหรับการทำงานที่เหมาะสมของ TFT LCD
# รวม
คุณควรทดสอบ TFT LCD ของคุณโดยการเบิร์น Arduino ด้วยรหัสตัวอย่างที่ให้ไว้ในไลบรารีและตรวจสอบว่ารหัสทำงานถูกต้องหรือไม่ ขั้นแรกให้ตรวจสอบการทดสอบกราฟิกจากนั้นปรับเทียบการทดสอบและทดสอบสีในที่สุด หากคุณพบว่าคุณสมบัติทั้งหมดทำงานได้ดีให้เริ่มด้วยรหัสที่ให้ไว้ในบทช่วยสอนนี้
นอกจากนี้เพื่อการทำงานที่เหมาะสมของแถบ LED NeoPixel RGB LED คุณจะต้องมีไลบรารีอีกหนึ่งไลบรารีซึ่งสามารถดาวน์โหลดได้จากที่นี่
# รวม
ตามที่อธิบายไว้ก่อนหน้า Digital Pin 36 ของ MEGA เชื่อมต่อกับ DI pin ของ NeoPixel LED Strip ดังแสดงในโค้ดด้านล่าง นอกจากนี้จำนวน LED ใน Strip คือ 30 ตามที่เขียนในรหัส:
# กำหนด PIN 36 # กำหนด NUM_LEDS 30
สีที่แสดงของปุ่ม LCD แสดงด้วยรหัสบางตัว คุณสามารถเปลี่ยนรหัสเหล่านี้ได้ตาม LCD ของคุณ
#define BLACK 0x0000 #define YELLOW 0x001F #define GREEN 0xF800 #define RED 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define BLUE 0xFFE0 #define WHITE 0xFFFF
พารามิเตอร์บางอย่างสำหรับปุ่มเช่นขนาดและตำแหน่งถูกกำหนดไว้ในโค้ด:
uint16_t กว้าง = 0; uint16_t สูง = 0; uint16_t x = 40; uint16_t y = ความสูง - 20; uint16_t w = 75; uint16_t h = 20;
h ใช้พารามิเตอร์เพื่อปรับขนาดของปุ่มบน LCD หากคุณสร้างเป็น 40 ขนาดของปุ่มจะเพิ่มขึ้นเป็นสองเท่า พารามิเตอร์ y คือพิกัด y ของ LCD
ปุ่มสัมผัสแสดงด้วยตัวเลขตามที่แสดงในรหัส:
# กำหนดปุ่ม 9 # กำหนด BUTTON_Red 0 # กำหนด BUTTON_DarkRed 1 #define BUTTON_RED 2 # กำหนด BUTTON_DarkGreen 3 # กำหนด BUTTON_DeepRed 4 # กำหนด BUTTON_Blue 5 #define BUTTON_LightBlue1 7 #define BUTTON_LightBlue1 #
ฟังก์ชั่นบางอย่างใช้เพื่อให้สีออกมาจาก NeoPixel เช่น:
โมฆะ EmitCyan (); โมฆะ EmitWhite (); โมฆะ EmitGreen (); เป็นโมฆะ EmitYellow (); โมฆะ EmitPink (); โมฆะ EmitBlack ();
หากต้องการค้นหาค่า RGB ดิจิทัลที่จะป้อนสำหรับสีที่กำหนดคุณสามารถไปที่ลิงค์นี้ เพียงป้อนสีที่คุณต้องการให้แถบ NeoPixel ของคุณเรืองแสงค้นหาค่า RGB สำหรับสีนั้นและใส่ฟังก์ชันด้านบน
ฟังก์ชัน initializeButtons () เป็นโมฆะ ใช้สำหรับกำหนดข้อความและสีให้กับปุ่มและสำหรับวางในตำแหน่งที่ต้องการบน LCD
เป็นโมฆะ initializeButtons () {uint16_t x = 40; uint16_t y = ความสูง - 20; uint16_t w = 75; uint16_t h = 40; uint8_t spacing_x = 5………………..
ฟังก์ชัน void showCalibration () ใช้เพื่อวาดปุ่มบน LCD
โมฆะ showCalibration () {tft.setCursor (40, 0); สำหรับ (uint8_t i = 0; i <8; i ++) {buttons.drawButton (); }}
นอกจากนี้รหัส Arduinoแบบเต็มสำหรับการเรืองแสงแถบ LED NeoPixel ในสีที่ต้องการจะได้รับด้านล่าง รหัสมีความยาวเล็กน้อย แต่เรียบง่ายคุณสามารถเข้าใจรหัสได้อย่างง่ายดาย