תוכן עניינים:
- שלב 1: תכנון הבנייה:
- שלב 2: הצל בעבודת יד
- שלב 3: הצל בעבודת יד
- שלב 4: המעגל החשמלי:
- שלב 5: הקוד:
- שלב 6: קבל את זה עצמאי עם מטען אתחול שנשרף על ידי PonyProg
- שלב 7: אז זהו מנורת הלחץ הארדואינית שלי
וִידֵאוֹ: מנורת מצב רוח RGB המופעלת בעבודת יד בארדואינו: 7 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:18
מדריך זה מחולק ל -5 חלקים:- תכנון הבנייה (שלב 1)- הגוון בעבודת יד (שלב 2+3)- המעגל האלקטרוני להנעת נוריות 3W עם בקר ATmega8 (שלב 4)- הקוד (שלב 5)- כיצד להשיג זאת עצמאי (הבזק את מטען האתחול של Arduino עם PonyProg ושרוף את הסקיצה) (שלב 6) בקרוב Vid: כמה התרשמות
de.youtube.com/watch?v=apZ9NpaUG84 Pic1: מנורת מצב הרוח Pic2: נורית 3W אדירה
שלב 1: תכנון הבנייה:
אני אוהב לעשות רעיון על דף נייר אחד בלבד.על הגיליון הראשון רואים כמה רעיונות מוקדמים. בחרתי בעיצוב הימני התחתון. העמוד השני מציג כמה פרטים על הבנייה. המדידות הן ניסיוניות כמו בכל פעם, אבל בסדר מבחינתי;-) מחשבות החומרה שלי היו:- האם אוכל להתמודד עם החומרים?- האם האור יזרח דרך הגוון? - איזה פרופורציה היא צריכה להיות? - כמה כפתורים וסירים אצטרך לממשק פשוט? מחשבות התוכנה שלי היו: כמה פונקציות שונות צריכה להיות למנורה? - דהיית RGB אוטומטית במהירות משתנה - התאמת צבע ידנית - לבן עם בהירות מתכווננת
שלב 2: הצל בעבודת יד
איסוף החומרים: הגוון: מצאתי בחנות גיליון של 30 רגל על 3 רגל של פלסטיק 30 טחנת (Pic1-3). השתמש בסכין חדה כדי לחתוך אותו. הקפאתי את הפלסטיק בעזרת נייר זכוכית (Pic4-6). קבל גליל חלק דפקתי את הכל יחד לאחר קידוח החורים הנכונים (Pic7-8). הרכיב את גווני הפלסטיק על תומכי הפליז המושחלים. זה נראה יפה ודי קל להשיג ולטפל בו. קידחתי והקשתי על החורים כך שיתאימו לסרגל ההברגה 1/8 (Pic9-10). בינתיים הכנתי גוף קירור כדי לקרר את נוריות ה -3 W ולבסיס בסיס מוצק..כדי לקבל לא יותר מדי גוונים מהפיר, אני בונה כלוב קטן ממוט ריתוך עם אגוז M8 למעלה (Pic12). בסיום הרכבתי הכל יחד. הברגים והאגוזים הקטנים היו קצת מסובכים, אבל 30 דקות לאחר מכן סיימתי.
שלב 3: הצל בעבודת יד
הבסיס: הדיסקים נחתכו במחרטה כדי שיהיה חלק ועגול. לאחר מכן כתמתי אותו בכתם מעץ מהגוני כדי שהאורן ייראה טוב. מה הלאה?!? החלטתי להכין בסיס בעזרת אותו פלסטיק חלב כגוון, ותאורה אחורית באמצעות מיקרו LED RGB (Pic5). הכפתורים: הכנתי את הכפתור מחתיכת מהגוני ואת הכפתורים מחיתוך מעץ אגוז.
שלב 4: המעגל החשמלי:
בתמונה הראשונה אתה רואה את הסכימה שלי. והנה עוד סרטון: https://de.youtube.com/watch? V = xkiYzQAYf_A & NR = 1
שלב 5: הקוד:
בתמונות אתה רואה את התהליך שלי עם ארדואינו. ראשית ניסיתי להסתובב עם ה- ProtoShield שלי, חבילת סוללות וכמה מיני נוריות. התחלתי עם "פרויקטים מפחידים" ו"ביוניק ארדואינו "מאת TodEKurt לפני מספר חודשים. Http: //todbot.com/blog/spookyarduino/ הקוד שלי הוא רק שילוב מסובך של קוד הפרויקט שלו. "RGBMoodlight", "RGBPotMixer" וכמה הרחבות. שלושה אנלוגי-אין ו. אחד דיגיטלי-אין כמתג מצב (תודה ל- Ju. על שגרת ההפסקות:). נוריות ה- LED מחוברות ל- D9, D10 ו- D11 התומכים ב- PulseWithModulation. אם תרצה, אני יכול לפרסם את הסקיצה, אבל זה שילוב ממש חשוף של שני הקודים הנהדרים האלה. הנה הקוד המקורי של המנורה. זה נראה קצת מבולגן, כי זה היה שלי שלב מאוד מוקדם בתכנות … אבל אם אתה מעתיק את זה, זה אמור לעבוד מצוין. יש שקטות טובות, כמו "PotColorMixer", "RGBfadingFunction" ו- Interrupt-Routine עבור mode-witch./* nejo יוני 2008
קוד עבור "מנורת הלחץ" שלי, המבוסס על "dimmingLEDs" מאת קליי שירקי
*nejo ספטמבר 2008
- קוד סופי עבור מנורת הלחץ עם מתג מצב מפסק, חיוג מהיר אנלוגי לדהיית RGB ושינוי צבע RGB.
- פונקציית העמעום פועלת רק לצבע הלבן
*nejo אוקטובר 2008
- הרחבת קול למנורת הלחץ:
- מיקרופון מעבה עם מגבר LM368 זעיר, מקלט ומסנן RC-low-pass.
- עם קלט אנלוגי אחר אני משתמש בפונקציית RGBPotMixer כדי לשנות את הצבע על ידי קבלת אות המיקרופון.
* * * קוד ל -3 נוריות צולבות, אדום, ירוק וכחול, או נורית אחת בשלושה צבעים, באמצעות PWM
- התוכנית צולבת לאט מאדום לירוק, ירוק לכחול וכחול לאדום
- קוד האיתור מניח Arduino 0004, מכיוון שהוא משתמש בפונקציות החדשות בסגנון Serial.begin ().
- במקור "dimmingLEDs" מאת קליי שירקי
*
- AnalogRead מופעל על Pin A0 כדי לשנות את מהירות דהיית ה- RGB
- AnalogRead מופעל על Pin A2 כדי לשנות את צבע hueRGB
* * */#כוללים // Outputint 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; // משתנה לקריאת הלחצן statusint pinState; // משתנה להחזיק את הלחצן stateint buttonPresses = 0; // 3 לחיצות כדי ללכת! Int potPin0 = 0; // סיר להתאמת העיכוב בין דהייה ב- Moodlamp; int potPin2 = 2; // פלט פוטנציומטר לשינוי color hintRGB colorVal = 0; // משתנה לאחסון הקלט מה- potentiometerint maxVal = 0; // ערך לשמירת ברירת המחדל של גורם עמעום הוא 255, אם אין סיר מחוברint dimPin = 4; // סיר מחובר ל- A4 כדי לעמעם את הבהירות // משתני התוכניתint redVal = 255; // משתנים לאחסון הערכים שיש לשלוח ל- pinsint greenVal = 1; // הערכים הראשוניים הם אדום מלא, ירוק וכחול כחול כחול = 1; int i = 0; // Loop counter int wait; // = 15; // עיכוב של 50 ms (.05 שנייה); לקצר לדהייה מהירה יותר k = 0; // ערך עבור ה- controlLED ב- blink-functionint DEBUG = 0; // מונה DEBUG; אם הוא מוגדר ל -1, הוא יכתוב ערכים בחזרה באמצעות סדרת LCD = 0; // מונה LCD; אם הוא מוגדר ל -1, הוא יכתוב ערכים בחזרה באמצעות הגדרת serialvoid () {pinMode (ledPin, OUTPUT); pinMode (redPin, OUTPUT); // מגדיר את הפינים כ- pinMode פלט (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); pinMode (dimredPin, OUTPUT); pinMode (dimgreenPin, OUTPUT); // מגדיר את הפינים כ- pinMode פלט (dimbluePin, OUTPUT); pinMode (potPin2, INPUT); // pinMode (potPin0, INPUT); // pinMode (dimPin, INPUT); // pinMode (switchPin, INPUT); // הגדר את סיכת המתג כקלט attachInterrupt (0, isr0, RISING); if (DEBUG) {// אם נרצה לראות את ערכי הסיכה לניפוי באגים … Serial.begin (9600); // … הגדר את הפלט הסידורי בסגנון 0004}} // לולאת התוכנית הראשית () {if (buttonPresses == 0) {Moodlamp (); // מכנה את הפונקציה Moodlight} אם (buttonPresses == 1) {RGBPotMixer (); // מכנה את פונקציית תערובת המדריך} if (buttonPresses == 2) {White (); // הכל לבן כאן} if (buttonPresses == 3) {} // Moodlamp (); // RGBPotMixer (); //לבן(); צג (); dim ();} void Monitor () {// שלח מצב לצג אם (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 ("buttonState:"); Serial.print (buttonState); // כותב את הערך של potPin0 למסך Serial.print ("\ t"); Serial.print ("buttonPresses:"); Serial.println (buttonPresses); // כותב את ערך הכפתור לוחץ אל הצג}}} חלל עמום () // פונקציה לעמעם לבן // אולי מאוחר יותר עבור כל המצבים {maxVal = analogRead (dimPin); maxVal /= 4; // טווח אנלוגי מ 0..1024 יותר מדי לעמעם ערך 0..255 analogWrite (dimredPin, maxVal); analogWrite (dimgreenPin, maxVal); analogWrite (dimbluePin, maxVal);} void Moodlamp () {wait = analogRead (potPin0); // חפש את הערך מתוך potPin0; // אם לא מחובר סיר: המתן 255 i += 1; // מונה תוספת // i = i - maxVal; אם (i <255) // שלב ראשון של דהייה {redVal -= 1; // אדום למטה greenVal += 1; // ירוק עד כחול = 1; // כחול נמוך} אחרת אם (i <509) // שלב שני של דהייה {redVal = 1; // אדום נמוך greenVal -= 1; // ירוק למטה blueVal += 1; // כחול למעלה} אחר אם (i <763) // שלב שלישי של דהייה {redVal += 1; // אדום למעלה greenVal = 1; // ירוק lo2 blueVal -= 1; // כחול למטה} אחר // הגדר מחדש את המונה, והתחל את ההתעמעמות שוב {i = 1; } // אנו עושים "255 -redVal" במקום רק "redVal" כי נוריות // מחוברות ל- +5V במקום GW analogWrite (redPin, 255 - redVal); // כתוב ערכים נוכחיים לסיכות LED analogWrite (greenPin, 255 - greenVal); analogWrite (bluePin, 255 - blueVal); /* dimredVal = min (redVal - maxVal, 255); // עמעום dimredVal = max (redVal - maxVal, 0); dimgreenVal = min (greenVal - maxVal, 255); dimgreenVal = max (greenVal - maxVal, 0); dimblueVal = min (blueVal - maxVal, 255); dimblueVal = max (blueVal - maxVal, 0); analogWrite (redPin, 255 - dimredVal); // כתוב ערכים נוכחיים לסיכות LED analogWrite (greenPin, 255 - dimgreenVal); analogWrite (bluePin, 255 - dimblueVal); * / המתן / = 4; עיכוב (המתנה); // השהה למשך מילי -שניות 'המתן' לפני חידוש הלולאה} void RGBPotMixer () {potVal = analogRead (potPin2); // קרא את ערך הפוטנציומטר בפין הקלט potVal = potVal / 4; // להמיר מ- 0-1023 ל- 0-255 hue_to_rgb (potVal); // התייחסו ל- potVal כגוון והמירו ל- rgb vals // "255-" הוא מכיוון שיש לנו נוריות אנודה משותפות, לא analogWrite-cathode common-cathode (redPin, 255-redVal); // כתוב ערכים לסיכות LED analogWrite (greenPin, 255-greenVal); analogWrite (bluePin, 255-blueVal); } void White () {analogWrite (redPin, maxVal); // כתוב ערכים לסיכות LED analogWrite (greenPin, maxVal); analogWrite (bluePin, maxVal); }/*
- בהתחשב בגוון משתנה 'h', הנע בין 0-252,
- הגדר את ערך הצבע RGB כראוי.
- מניח את הרוויה המקסימלית והערך המקסימלי (בהירות)
- מבצע מתמטיקה שלמה בלבד, ללא נקודה צפה.
*/void hue_to_rgb (byte hue) {if (hue> 252) hue = 252; // סטטבק ל 252 !! nejo byte hd = hue / 42; // 36 == 252/7, 252 == H_MAX בתים hi = hd % 6; // נותן 0-5 בתים f = גוון % 42; בתים fs = f * 6; switch (hi) {case 0: redVal = 252; greenVal = fs; blueVal = 0; לשבור; מקרה 1: redVal = 252-fs; greenVal = 252; blueVal = 0; לשבור; מקרה 2: redVal = 0; greenVal = 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; לשבור; }} void isr0 () {Serial.println ("\ n / n inerrupt / n"); buttonState = digitalRead (switchPin); // קרא את עיכוב המצב ההתחלתי מיקרו שניות (100000); // אם (val! = buttonState) {// מצב הלחצן השתנה! // if (buttonState == HIGH) {// בדוק אם הכפתור נלחץ כעת buttonPresses ++; //} // val = buttonState; // שמור את המצב החדש במשתנה שלנו אם (buttonPresses == 3) {// zur cksetzen buttonPresses = 0; }} //} השלב הבא היו מנהלי הטרנזיסטורים. השתמשתי ב -3 טרנזיסטורים PNP עם זרם מרבי ב- 3Ampere. לאחר ויסות הזרם והמתח קדימה, LEDemitter עבד מצוין בעוצמה מלאה.
שלב 6: קבל את זה עצמאי עם מטען אתחול שנשרף על ידי PonyProg
כיצד להשתמש ביציאת המדף שלך כדי לשרוף את מטען האתחול של arduino ב- ATmega168 או ATmega8 כדי להשתמש בשבב ריק וזול עם סביבת arduino. בקרוב … אולי במדריך נפרד הנה גם הוראה טובה לשימוש בשבב העצמאי: https:/ /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS
שלב 7: אז זהו מנורת הלחץ הארדואינית שלי
אם אהבתם, אנא דרגו אותי.
מוּמלָץ:
מנורת מצב רוח עם LED RGB: 4 שלבים
מנורת מצב רוח עם RGB LED: Este proyecto se trató de hacer una lampara de * sentimientos * utilizando un Arduino Uno. Primero se necesitan varios materiales como jumpers, leds RGB o Neopixel, dependiendo de cómo se desee hacer. En este caso utilizaremos led RGB con ánodo común
מנורת מצב רוח RGB מודרנית: 7 שלבים (עם תמונות)
מנורת מצב רוח RGB מודרנית: רוצה להוסיף קצת סגנון לשולחן שלך? קיבלנו אותך מכוסה במנורת מצב רוח DIY העשויה מחלקים שתוכל למצוא בקלות בשכיבה במוסך או בסככה שלך. מנורת מצב הרוח שלנו מתאפיינת בעיצוב אסתטי ומודרני תוך מתן שליטה מלאה על הקולו
מנורת מצב רוח RGB Icosahedron: 9 שלבים (עם תמונות)
מנורת מצב הרוח של RGB Icosahedron: צורות גיאומטריות תמיד משכו את תשומת ליבנו. לאחרונה, צורה מרתקת כזו עוררה את סקרנותנו: האיקוסאהדרון. האיקוסאהדרון הוא פולידרדר בעל 20 פנים. יכולות להיות אינסוף צורות לא דומות של איקוסדרה, אבל הב
רמקול מצב רוח- רמקול רב עוצמה לנגינת מצב רוח על סמך טמפרטורת הסביבה: 9 שלבים
רמקול מצב רוח- רמקול רב עוצמה לנגינת מצב רוח על סמך טמפרטורת הסביבה: היי! לפרויקט בית הספר שלי ב- MCT Howest Kortrijk, הכנתי רמקול מצב רוח זה מכשיר רמקול Bluetooth חכם עם חיישנים שונים, LCD ו- WS2812b רצועת LED כלולה. הרמקול מנגן מוזיקת רקע המבוססת על הטמפרטורה אך יכול
MIA-1 רובוט אנושי מתקדם בעבודת יד מתקדמת בעבודת יד !: 4 שלבים
MIA-1 רובוט אנושי מתקדם בעבודת יד !: היי לכולם, היום אני אראה כיצד הכנתי את הרובוט MIA-1, שהוא לא רק מתקדם וייחודי אלא גם קוד פתוח וניתן לבצע אותו ללא הדפסה בתלת מימד! כן, הבנתם, הרובוט הזה עשוי בעבודת יד לחלוטין. וקוד פתוח פירושו - אתה מקבל את