สารบัญ:
- ขั้นตอนที่ 1: การวางแผนการก่อสร้าง:
- ขั้นตอนที่ 2: The Handmade Shade
- ขั้นตอนที่ 3: The Handmade Shade
- ขั้นตอนที่ 4: วงจรไฟฟ้า:
- ขั้นตอนที่ 5: รหัส:
- ขั้นตอนที่ 6: รับแบบสแตนด์อโลนด้วย PonyProg-burned Bootloader
- ขั้นตอนที่ 7: นั่นคือ Arduino Moodlamp ของฉัน
วีดีโอ: RGB Moodlamp ที่ทำด้วยมือโดย Arduino: 7 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:09
คำแนะนำนี้แบ่งออกเป็น 5 ส่วน: - การวางแผนการก่อสร้าง (ขั้นตอนที่ 1) - เฉดสีที่ทำด้วยมือ (ขั้นตอนที่ 2 + 3) - วงจรอิเล็กทรอนิกส์สำหรับการขับ LED 3W ด้วยตัวควบคุม ATmega8 (ขั้นตอนที่ 4) - รหัส (ขั้นตอนที่ 5) - วิธีรับ สแตนด์อะโลน (แฟลช Arduino bootloader ด้วย PonyProg และเบิร์นสเก็ตช์) (ขั้นตอนที่ 6) เร็วๆ นี้ Vid: ความประทับใจบางส่วน
de.youtube.com/watch?v=apZ9NpaUG84 Pic1: The Moodlamp Pic2: ไฟ LED 3W อันทรงพลัง
ขั้นตอนที่ 1: การวางแผนการก่อสร้าง:
ฉันชอบที่จะทำแนวคิดบนกระดาษเพียงแผ่นเดียว ในแผ่นแรก คุณจะเห็นแนวคิดเบื้องต้นบางอย่าง ฉันเลือกการออกแบบด้านล่างขวา หน้าที่สองแสดงรายละเอียดบางอย่างสำหรับการก่อสร้าง การวัดผลเป็นการทดลองเหมือนในแต่ละครั้ง แต่ก็โอเคสำหรับฉัน;-)ความคิดด้านฮาร์ดแวร์ของฉันคือ:- ฉันสามารถจัดการกับวัสดุได้หรือไม่- แสงจะส่องแสง ในร่มเงา?- ควรมีสัดส่วนเท่าไหร่?- ฉันต้องใช้ลูกบิดและหม้อกี่อันสำหรับอินเทอร์เฟซที่เรียบง่าย ซอฟต์แวร์ของฉันมีความคิด: หลอดไฟควรมีฟังก์ชันต่างๆ มากมายเพียงใด - RGB เฟดอัตโนมัติด้วยความเร็วที่เปลี่ยนแปลงได้ - การปรับสีด้วยตนเอง - สีขาว ปรับความสว่างได้
ขั้นตอนที่ 2: The Handmade Shade
การรวบรวมวัสดุ: ร่มเงา:ฉันพบแผ่นพลาสติก 30 มิลขนาด 3 ฟุต x 3 ฟุตที่ร้าน (Pic1-3) ใช้มีดคมตัดมัน ฉันเคลือบพลาสติกโดยใช้กระดาษทราย (Pic4-6)ถึง รับกระบอกเรียบฉันขันเข้าด้วยกันหลังจากเจาะรูที่ถูกต้อง (Pic7-8) ติดตั้งเฉดสีพลาสติกบนฐานทองเหลืองเกลียว มันดูสวยงามและง่ายต่อการหยิบจับ ฉันเจาะและเคาะรูเพื่อให้เข้ากับแท่งเกลียวที่ 1/8 (Pic9-10) ในขณะเดียวกัน ฉันทำฮีทซิงค์เพื่อทำให้ไฟ LED 3W เย็นลงและมีฐานที่มั่นคง เพื่อให้ได้เฉดสีจากก้านไม่มากเกินไป ฉันสร้างกรงเล็กๆ จากแท่งเชื่อมที่มีน๊อต M8 อยู่ด้านบน (รูปที่ 12) เมื่อประกอบเสร็จแล้วฉันก็ประกอบเข้าด้วยกัน สกรูและน็อตตัวเล็ก ๆ นั้นค่อนข้างยุ่งยาก แต่ 30 นาทีต่อมาฉันก็ทำมันเสร็จ
ขั้นตอนที่ 3: The Handmade Shade
ฐาน: นำจานไปกลึงในเครื่องกลึงเพื่อให้เรียบและกลม จากนั้นจึงย้อมด้วยคราบไม้มะฮอกกานีเพื่อให้ไม้สนดูดี แล้วต่อไปจะเป็นยังไง!?ฉันตัดสินใจทำฐานโดยใช้แบบเดียวกัน พลาสติกฝ้าเป็นเฉดสี และให้แสงพื้นหลังด้วย RGB microLED (Pic5) ลูกบิด: ฉันทำปุ่มจากชิ้นส่วนของมะฮอกกานีและลูกบิดจากส่วนที่ตัดของไม้นัทวูด
ขั้นตอนที่ 4: วงจรไฟฟ้า:
ในภาพแรก คุณเห็นแผนผังของฉัน และนี่คือวิดีโออื่น:https://de.youtube.com/watch?v=xkiYzQAYf_A&NR=1
ขั้นตอนที่ 5: รหัส:
ในภาพที่คุณเห็นกระบวนการของฉันกับ Arduino อย่างแรกเลย ฉันลองใช้ ProtoShield ที่ทำเอง ชุดแบตเตอรี่และไฟ LED บางประเภท ฉันเริ่มต้นด้วย "Spooky Projects" และ "BionicArduino" โดย TodEKurt เมื่อหลายเดือนก่อนhttps://todbot.com/blog/spookyarduino/My code is เป็นการรวมกันที่ยุ่งยากของรหัสโครงการของเขา"RGBMoodlight", "RGBPotMixer" และส่วนขยายบางส่วน สามอะนาล็อกและ. หนึ่งดิจิตอลอินเป็นสวิตช์โหมด (ขอบคุณ Ju. สำหรับกิจวัตรการขัดจังหวะ:) ไฟ LED เชื่อมต่อกัน ไปยัง D9, D10 และ D11 ที่รองรับ PulseWithModulation หากคุณต้องการ ฉันสามารถเผยแพร่ภาพร่างได้ แต่มันเป็นการผสมผสานที่ลงตัวของรหัสที่ยอดเยี่ยมทั้งสองนี้ นี่คือรหัสดั้งเดิมของหลอดไฟ มันดูเลอะเทอะเล็กน้อยเพราะเป็นของฉัน ช่วงแรกๆ ของการเขียนโปรแกรม…แต่ถ้าคุณคัดลอกมัน มันน่าจะใช้งานได้ดี มีความสงบเรียบร้อย เช่น "PotColorMixer", "RGBfadingFunction" และ Interrupt-Routine สำหรับ mode-switch./* nejo June2008
รหัสสำหรับ "Moodlamp" ของฉันตาม "dimmingLEDs" โดย Clay Shirky
*nejo Sep2008
- รหัสสุดท้ายสำหรับ Moodlamp พร้อมสวิตช์โหมดขัดจังหวะ, ปุ่มหมุนเร็วแบบอะนาล็อกสำหรับ RGB-fading และเปลี่ยนสี RGB
- ฟังก์ชันลดแสงใช้ได้กับสีขาวเท่านั้น
*เนโจ ตุลาคม 2551
- ส่วนขยายเสียงสำหรับ Moodlamp:
- ไมโครโฟนคอนเดนเซอร์พร้อมแอมป์ LM368 ขนาดเล็ก วงจรเรียงกระแส และ RC-low-pass-filter
- ด้วย analogInput อื่น ฉันใช้ฟังก์ชัน RGBPotMixer เพื่อเปลี่ยนสีโดยรับสัญญาณไมโครโฟน
* * *รหัสสำหรับไฟ LED 3 ดวงแบบ cross-fading สีแดง สีเขียว และสีน้ำเงิน หรือ LED สามสี 1 ดวง โดยใช้ PWM
- โปรแกรมค่อยๆ ข้ามจากสีแดงเป็นสีเขียว สีเขียวเป็นสีน้ำเงิน และสีน้ำเงินเป็นสีแดง
- รหัสการดีบักถือว่า Arduino 0004 เนื่องจากใช้ฟังก์ชัน Serial.begin()-style ใหม่
- เดิมที "dimmingLEDs" โดย Clay Shirky
*
- AnalogRead เปิดใช้งานบน Pin A0 เพื่อเปลี่ยนความเร็วในการเฟด RGB
- AnalogRead เปิดใช้งานบน Pin A2 เพื่อเปลี่ยนสี hueRGB
* * */#include // เอาต์พุต ledPin = 13; // controlPin สำหรับการดีบัก redPin = 9; // LED สีแดง เชื่อมต่อกับพินดิจิตอล 9int greenPin = 10; // LED สีเขียว เชื่อมต่อกับพินดิจิตอล 10int bluePin = 11; // LED สีน้ำเงิน เชื่อมต่อกับพินดิจิตอล 11int dimredPin = 3; // พินสำหรับค่าลดแสงแบบอะนาล็อกที่เชื่อมต่อกับไดรเวอร์ทรานซิสเตอร์ dimgreenPin = 5;int dimbluePin = 6; // Inputint switchPin = 2; // สวิตช์เชื่อมต่อกับพิน D2int val = 0; // ตัวแปรสำหรับอ่าน pin statusint buttonState; // ตัวแปรที่จะกดปุ่ม stateint buttonPresses = 0; // 3 กดเพื่อไป!int potPin0 = 0; // หม้อสำหรับปรับการหน่วงเวลาระหว่างเฟดใน Moodlamp; int potPin2 = 2; // เอาต์พุตโพเทนชิออมิเตอร์สำหรับเปลี่ยน hueRGB colorint potVal = 0; // ตัวแปรเก็บอินพุตจากโพเทนชิโอมิเตอร์ maxVal = 0; // ค่าที่จะบันทึกค่าดีฟอลต์ของตัวลดแสงคือ 255 หากไม่มี Pot ที่เชื่อมต่ออยู่ dimPin = 4; // หม้อเชื่อมต่อกับ A4 เพื่อหรี่ความสว่าง // ตัวแปรโปรแกรม redVal = 255; // ตัวแปรเก็บค่าที่จะส่งไปยัง pinsint greenVal = 1; // ค่าเริ่มต้นคือ สีแดงเต็ม สีเขียว และสีน้ำเงิน offint blueVal = 1;int i = 0; // ตัวนับวนรอบรอ;// = 15; // 50ms (.05 วินาที) ล่าช้า; ย่อให้เร็วขึ้น k = 0; // ค่าสำหรับ controlLED ในฟังก์ชันกะพริบ DEBUG = 0; // เคาน์เตอร์ DEBUG; หากตั้งค่าเป็น 1 จะเขียนค่ากลับผ่าน serialint LCD = 0; // เคาน์เตอร์ LCD; หากตั้งค่าเป็น 1 จะเขียนค่ากลับผ่านการตั้งค่า serialvoid (){ pinMode(ledPin, OUTPUT); โหมดพิน (redPin, เอาต์พุต); // ตั้งค่าพินเป็นเอาต์พุต pinMode (greenPin, OUTPUT); โหมดพิน (บลูพิน, เอาต์พุต); pinMode (หรี่แสงพิน, เอาต์พุต); โหมดพิน (dimgreenPin, OUTPUT); // ตั้งค่าพินเป็นเอาต์พุต pinMode (dimbluePin, OUTPUT); โหมดพิน (potPin2, INPUT); // pinMode(potPin0, INPUT); // pinMode(dimPin, INPUT); // pinMode (สวิตช์พิน, อินพุต); // ตั้งค่าพินสวิตช์เป็นอินพุต AttachInterrupt(0, isr0, RISING); if (DEBUG) { // หากเราต้องการดูค่าพินสำหรับการดีบัก… Serial.begin(9600); // …ตั้งค่า serial ouput ใน 0004 style }}// main programvoid loop(){ if (buttonPresses == 0) { Moodlamp(); // เรียกใช้ฟังก์ชัน Moodlight } ถ้า (buttonPresses == 1) { RGBPotMixer (); // เรียกฟังก์ชัน manuel mix } if (buttonPresses == 2) { White(); // มันเป็นสีขาวทั้งหมดที่นี่ } if (buttonPresses == 3) { } // Moodlamp(); // RGBPotMixer (); //สีขาว(); เฝ้าสังเกต(); dim();}void Monitor(){ // ส่งสถานะไปที่มอนิเตอร์ if (DEBUG) {// หากเราต้องการอ่านเอาต์พุต DEBUG += 1; // เพิ่มตัวนับ DEBUG ถ้า (DEBUG> 10) { // พิมพ์ทุกๆ 10 ลูป DEBUG = 1; // รีเซ็ตตัวนับ Serial.print(i); // คำสั่งซีเรียลในรูปแบบ 0004 Serial.print("\t"); // พิมพ์แท็บ Serial.print("R:"); // ระบุว่าเอาต์พุตเป็นค่าสีแดง Serial.print(redVal); // พิมพ์ค่าสีแดง Serial.print("\t"); // พิมพ์แท็บ Serial.print("G:"); // ทำซ้ำสำหรับสีเขียวและสีน้ำเงิน… Serial.print(greenVal); Serial.print("\t"); Serial.print("B:"); Serial.print (blueVal); // println เพื่อลงท้ายด้วยแคร่ส่งคืน Serial.print("\t"); Serial.print("dimValue:"); Serial.print(maxVal); // println เพื่อลงท้ายด้วยแคร่ส่งคืน Serial.print("\t"); Serial.print("รอ:"); Serial.print(รอ); // เขียนค่าของ potPin0 ไปยังจอภาพ Serial.print("\t"); Serial.print("hueRGBvalue"); Serial.print(potVal); // เขียนค่าของ potPin0 ไปยังจอภาพ Serial.print("\t"); Serial.print("ปุ่มสถานะ:"); Serial.print (ปุ่มสถานะ); // เขียนค่าของ potPin0 ไปยังจอภาพ Serial.print("\t"); Serial.print("buttonPresses:"); Serial.println (buttonPresses); // เขียนค่าของ buttonPresses ไปที่จอภาพ } }} void dim() // ฟังก์ชั่นสำหรับการหรี่แสงสีขาว // อาจจะในภายหลังสำหรับโหมดทั้งหมด{ maxVal = analogRead(dimPin); maxVal /= 4; // ช่วงอนาล็อกตั้งแต่ 0..1024 มากเกินไปสำหรับการหรี่ค่า 0.2.255 analogWrite (dimredPin, maxVal); analogWrite (dimgreenPin, maxVal); analogWrite (dimbluePin, maxVal);} เป็นโมฆะ Moodlamp () { รอ = analogRead (potPin0); // ค้นหาค่าจาก potPin0; // หากไม่มีการเชื่อมต่อ Pot: รอ 255 i += 1; // ตัวนับที่เพิ่มขึ้น // i = i - maxVal; if (i <255) // เฟสแรกของเฟด { redVal -= 1; // แดงลง greenVal += 1; // เขียวขึ้น blueVal = 1; // สีน้ำเงินต่ำ } else if (i < 509) // เฟสที่สองของเฟด { redVal = 1; // สีแดงต่ำ greenVal -= 1; // สีเขียวลง blueVal += 1; // สีน้ำเงินขึ้น } อื่น ๆ ถ้า (i < 763) // เฟสที่สามของเฟด { redVal += 1; // แดงขึ้น greenVal = 1; // สีเขียว lo2 blueVal -= 1; // สีน้ำเงินลง } else // ตั้งค่าตัวนับใหม่และเริ่มเฟดอีกครั้ง { i = 1; } // เราทำ "255-redVal" แทนที่จะเป็น "redVal" เพราะ // LEDs เชื่อมต่อกับ +5V แทน Gnd analogWrite (redPin, 255 - redVal); // เขียนค่าปัจจุบันไปยังพิน LED analogWrite (greenPin, 255 - greenVal); analogWrite(bluePin, 255 - blueVal); /* dimredVal =นาที(redVal - maxVal, 255); // ลดแสง dimredVal = สูงสุด (redVal - maxVal, 0); dimgreenVal = นาที (greenVal - maxVal, 255); dimgreenVal = สูงสุด (greenVal - maxVal, 0); dimblueVal = นาที (blueVal - maxVal, 255); dimblueVal = สูงสุด (blueVal - maxVal, 0); analogWrite(redPin, 255 - dimredVal); // เขียนค่าปัจจุบันไปยังหมุด LED analogWrite (greenPin, 255 - dimgreenVal); analogWrite(bluePin, 255 - dimblueVal); */ รอ /=4; ล่าช้า(รอ); // หยุดชั่วคราวสำหรับ 'รอ' มิลลิวินาทีก่อนที่จะทำการวนซ้ำ}เป็นโมฆะ RGBPotMixer(){ potVal = analogRead(potPin2); // อ่านค่าโพเทนชิออมิเตอร์ที่ขาอินพุต potVal = potVal / 4; // แปลงจาก 0-1023 เป็น 0-255 hue_to_rgb(potVal); // ถือว่า potVal เป็นสีและแปลงเป็น rgb vals // "255-" เป็นเพราะเรามีไฟ LED ขั้วบวกทั่วไป ไม่ใช่ขั้วลบทั่วไป analogWrite (redPin, 255-redVal); // เขียนค่าไปยังพิน LED analogWrite (greenPin, 255-greenVal); analogWrite (bluePin, 255-blueVal); }โมฆะสีขาว(){ analogWrite(redPin, maxVal); // เขียนค่าไปยังพิน LED analogWrite (greenPin, maxVal); analogWrite (bluePin, maxVal); }/*
- กำหนดเฉดสี 'h' ที่แปรผันได้ตั้งแต่ 0-252
- ตั้งค่าสี RGB อย่างเหมาะสม
- ถือว่า maxValimum Saturation & ค่าสูงสุด (ความสว่าง)
- คำนวณเลขจำนวนเต็มเท่านั้น ไม่มีจุดลอยตัว
*/ void hue_to_rgb(byte hue) { if(hue> 252) hue = 252; // ย้อนหลัง 252!! nejo ไบต์ hd = ฮิว / 42; // 36 == 252/7, 252 == H_MAX ไบต์ hi = hd % 6; // ให้ 0-5 ไบต์ f = สี % 42; ไบต์ fs = f * 6; สวิตช์ (สวัสดี) { กรณี 0: redVal = 252; greenVal = fs; blueVal = 0; หยุดพัก; กรณีที่ 1: redVal = 252-fs; ค่าสีเขียว = 252; blueVal = 0; หยุดพัก; กรณีที่ 2: redVal = 0; ค่าสีเขียว = 252; blueVal = fs; หยุดพัก; กรณีที่ 3: redVal = 0; greenVal = 252-fs; blueVal = 252; หยุดพัก; กรณีที่ 4: redVal = fs; greenVal = 0; blueVal = 252; หยุดพัก; กรณีที่ 5: redVal = 252; greenVal = 0; blueVal = 252-fs; หยุดพัก; } } เป็นโมฆะ isr0(){ Serial.println("\n \n inerrupt \n"); buttonState = digitalRead (สวิตช์พิน); // อ่านสถานะเริ่มต้นล่าช้าไมโครวินาที (100000); //if (val != buttonState) { // สถานะของปุ่มเปลี่ยนไปแล้ว! // if (buttonState == HIGH) {// ตรวจสอบว่าปุ่มถูกกดแล้วหรือไม่ buttonPresses++; // } // val = buttonState; // บันทึกสถานะใหม่ในตัวแปรของเราหาก (buttonPresses == 3) { // zur cksetzen buttonPresses = 0; } } // }ขั้นตอนต่อไปคือไดรเวอร์ทรานซิสเตอร์ ฉันใช้ทรานซิสเตอร์ PNP 3 ตัวที่มีกระแสสูงสุดที่ 3 แอมแปร์ หลังจากควบคุมกระแสไฟและแรงดันไฟ LEDemitter ทำงานได้อย่างยอดเยี่ยมด้วยความเข้มเต็มที่
ขั้นตอนที่ 6: รับแบบสแตนด์อโลนด้วย PonyProg-burned Bootloader
วิธีใช้พอร์ต Paralell ของคุณเพื่อเบิร์น Arduino bootloader บน ATmega168 หรือ ATmega8 เพื่อใช้ชิปเปล่าราคาถูกกับสภาพแวดล้อมของ Arduino เร็วๆ นี้….. อาจเป็นคำสั่งแยกกัน นี่เป็นคำแนะนำที่ดีในการใช้ชิปแบบสแตนด์อโลน: https:/ /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS
ขั้นตอนที่ 7: นั่นคือ Arduino Moodlamp ของฉัน
หากคุณชอบมันโปรดให้คะแนนฉัน
แนะนำ:
ARC Moodlamp: 6 ขั้นตอน (พร้อมรูปภาพ)
ARC Moodlamp: Lampara de sentimientos programada en Arduino con Neopixeles y sensores inspirada en diseño por el artefacto ficticio de Marvel Comics และ ARC Reactor ยกเลิกสวิตช์สำหรับ apagarla y encenderla, un modo automático y un modo manual.En el modo automátic
ไฟกลางคืน RGB Vanagon RGB: 7 ขั้นตอน
VW Vanagon RGB Nightlight: ดังนั้นฉันจึงมองหาสื่อที่ดีในการเริ่มต้นโปรเจ็กต์ และฉันสังเกตเห็นของเล่นชิ้นนี้ที่ CVS ในราคา $7 ราคาถูก น่าสนใจ และมีพื้นที่เพียงพอสำหรับอุปกรณ์อิเล็กทรอนิกส์
ESP8266 RGB LED STRIP WIFI ควบคุม - NODEMCU เป็นรีโมท IR สำหรับ Led Strip ที่ควบคุมผ่าน Wifi - RGB LED STRIP การควบคุมสมาร์ทโฟน: 4 ขั้นตอน
ESP8266 RGB LED STRIP WIFI ควบคุม | NODEMCU เป็นรีโมท IR สำหรับ Led Strip ที่ควบคุมผ่าน Wifi | การควบคุมสมาร์ทโฟน RGB LED STRIP: สวัสดีทุกคนในบทช่วยสอนนี้ เราจะเรียนรู้วิธีใช้ nodemcu หรือ esp8266 เป็นรีโมท IR เพื่อควบคุมแถบ LED RGB และ Nodemcu จะถูกควบคุมโดยสมาร์ทโฟนผ่าน wifi โดยพื้นฐานแล้ว คุณสามารถควบคุม RGB LED STRIP ได้ด้วยสมาร์ทโฟนของคุณ
หากเป็นเช่นนี้ - Moodlamp: 4 ขั้นตอน (พร้อมรูปภาพ)
If This Then That - Moodlamp: Opdracht:Bouw/ ontwerp een interactionief systeem (met hardware en software) dat data kan ontvangen en verwerken.Omdat ik geen enkele ervaring heb met arduino en codes schrijven heel erg Lastig vind โปรเจ็กต์ heb ซิมเปิล เต ฮูเดน พบ
Moodlamp แบบสีบนฐานคอนกรีต: 7 ขั้นตอน (พร้อมรูปภาพ)
โคมไฟมู้ดไลท์แบบสีเต็มรูปแบบบนฐานคอนกรีต: โคมไฟมู้ดไลท์สีแบบปรับได้พร้อมฐานคอนกรีตหล่อ หลอดไฟแบบออร์แกนิกทำขึ้นโดยใส่ถุงเท้าไลคร่าขนาดใหญ่ทับแท่งอะลูมิเนียม 2 อันที่งอและยึดด้วยท่อที่ฝังอยู่ในฐาน ส่วนใหญ่ของคำแนะนำนี้เป็นเรื่องเกี่ยวกับ