תוכן עניינים:

בקר רצועות LED Arduino RGB: 4 שלבים
בקר רצועות LED Arduino RGB: 4 שלבים
Anonim
בקר רצועות LED Arduino RGB
בקר רצועות LED Arduino RGB

לעתים קרובות כאשר אנשים רוצים לשלוט ברצועת ה- LED RGB שלהם עם Arduino, שלושה פוטנציומטרים משמשים לערבוב הצבעים האדומים, הירוקים והכחולים. זה עובד ויכול להיות בסדר גמור לצרכים שלך, אבל רציתי לעשות משהו יותר אינטואיטיבי, משהו כמו גלגל צבעים.

נראה כי פרויקט זה הוא יישום מושלם עבור מקודד סיבובי. זהו מכשיר הממיר את תנועת פירו לפלט דיגיטלי. כאשר הפיר הופך, המקודד שולח אות (דופק) שניתן למדוד אותו על ידי ארדואינו. למידע נוסף על מקודדים סיבוביים, אתה יכול לצפות בסרטון זה שמסביר אותו יותר לעומק.

במדריך זה אראה לך כיצד להכין בקר רצועות LED מסוג Arduino RGB באמצעות מקודד סיבובי. מדריך זה מכסה את בניית המעגל על לוח לחם. עם זאת תוכל לייצר PCB משלך בכדי ליצור מגן ארדואינו!

שלב 1: חלקים

חלקים
חלקים
חלקים
חלקים

עבור בקר רצועות LED RGB תזדקק לחומרים הבאים:

  • 1x ארדואינו ננו
  • 3x IRLB8721PBF, כל רמת הלוגיקה של ערוצי N-MOSFET תעשה כל עוד היא מדורגת במינימום 12V והזרם שרצועת ה- LED שלך צורכת.
  • 1x מקודד רוטרי
  • ספק כוח 1x 12V 2A, הזרם שאספקת החשמל צריכה לספק עשוי להיות תלוי באורך רצועת ה- LED המשומשת.
  • 16x חוטי מגשר זכר לגבר
  • 1x קרש לחם ללא הלחמה, כל קרש יעשה זאת כל עוד הוא מספיק גדול.

שלב 2: מעגל

מעגל חשמלי
מעגל חשמלי
מעגל חשמלי
מעגל חשמלי

חבר את הארדואינו למעקה 12V ו- GND של לוח הלחם. לאחר מכן חבר את שאר החלקים כדלקמן:

מקודד רוטרי

סיכה A - D4

סיכה B - D3

GND - GND

MOSFET אדום

שער - GND

ניקוז - פס חוט אדום

מקור - D11

MOSFET GreenGate - GND

ניקוז - פס חוט ירוק

מקור - D9

MOSFET BlueGate - GND

ניקוז - פס חוט כחול

מקור - D6

שלב 3: קוד

// סיכות PWM של Arduino

int redPin = 11; int greenPin = 6; int bluePin = 9; // סיכות מקודד Arduino int encoderPinA = 3; int encoderPinB = 4; // משתני צבע int colorVal; int redVal; int greenVal; int blueVal; // משתני מקודד int encoderPos; int encoderPinACurrent; int encoderPinALast = HIGH; // מונה אינט אחר; הגדרת void () {pinMode (encoderPinA, INPUT_PULLUP); pinMode (encoderPinB, INPUT_PULLUP); } לולאת חלל () {readEncoder (); encoder2rgb (מונה); analogWrite (redPin, redVal); analogWrite (greenPin, greenVal); analogWrite (bluePin, blueVal); } int readEncoder () {encoderPinACurrent = digitalRead (encoderPinA); if ((encoderPinALast == LOW) && (encoderPinACurrent == HIGH)) {if (digitalRead (encoderPinB) == LOW) {encoderPos = encoderPos - 1; } אחר {encoderPos = encoderPos + 1; }} encoderPinALast = encoderPinACurrent; counter = encoderPos*8; if (מונה 1535) {counter = 0; } מונה החזרה; } int encoder2rgb (int counterVal) {// אדום לצהוב אם (counterVal <= 255) {colorVal = counterVal; redVal = 255; greenVal = colorVal; blueVal = 0; } // צהוב לירוק אחרת אם (counterVal <= 511) {colorVal = counterVal - 256; redVal = 255 - colorVal; greenVal = 255; blueVal = 0; } // ירוק לציאן אחרת אם (counterVal <= 767) {colorVal = counterVal - 512; redVal = 0; greenVal = 255; blueVal = colorVal; } // ציאן לכחול אחרת אם (counterVal <= 1023) {colorVal = counterVal - 768; redVal = 0; greenVal = 255 - colorVal; blueVal = 255; } // כחול למג'נטה אחרת אם (counterVal <= 1279) {colorVal = counterVal - 1024; redVal = colorVal; greenVal = 0; blueVal = 255; } // מג'נטה לאדום אחר {colorVal = counterVal - 1280; redVal = 255; greenVal = 0; blueVal = 255 - colorVal; } החזר redVal, greenVal, blueVal; }

מוּמלָץ: