صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از 1 به 10 از 13
Like Tree16 لایک

موضوع: ماژول led rgb ws2812 با رابط i2c کنترل با اردوینو

  1. #1
    Member
    تاریخ عضویت
    Aug 2015
    محل سکونت
    ایران اسلامی
    نوشته ها
    67

    ماژول led rgb ws2812 با رابط i2c کنترل با اردوینو

    ماژول LED RGB WS2812 با رابط I2C
    این ماژول سه پایه ورودی و سه پایه خروجی جهت امتداد دارد. برای شروع کار پایه + را به 3/3 ولت و منفی را اتصال میدهیم پایه بین این دو سیگنال هست که به پین دیجیتال 6 نصب میشه و اپلود کد و اتمام کار، توضیح اینکه در این کد هم حالت Fade موجود است با امکان دستکاری در زمان بندی هم حالت Flasher.

    لینک قطعه : ماژول LED RGB WS2812 با رابط I2C
    در لایبرری در قسمت adafruit neopixel مثال و در ادرس example/adafruit/strandtest این مثال بطور پیش فرض وجود دارد

    کد:
    #include <Adafruit_NeoPixel.h>
    #ifdef __AVR__
      #include <avr/power.h>
    #endif
    
    #define PIN 6
    
    // Parameter 1 = number of pixels in strip
    // Parameter 2 = Arduino pin number (most are valid)
    // Parameter 3 = pixel type flags, add together as needed:
    //   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
    //   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
    //   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
    //   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
    Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);
    
    // IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across
    // pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input
    // and minimize distance between Arduino and first pixel.  Avoid connecting
    // on a live circuit...if you must, connect GND first.
    
    void setup() {
      // This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket
      #if defined (__AVR_ATtiny85__)
        if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
      #endif
      // End of trinket special code
    
    
      strip.begin();
      strip.show(); // Initialize all pixels to 'off'
    }
    
    void loop() {
      // Some example procedures showing how to display to the pixels:
      colorWipe(strip.Color(255, 0, 0), 50); // Red
      colorWipe(strip.Color(0, 255, 0), 50); // Green
      colorWipe(strip.Color(0, 0, 255), 50); // Blue
      // Send a theater pixel chase in...
      theaterChase(strip.Color(127, 127, 127), 50); // White
      theaterChase(strip.Color(127, 0, 0), 50); // Red
      theaterChase(strip.Color(0, 0, 127), 50); // Blue
    
      rainbow(20);
      rainbowCycle(20);
      theaterChaseRainbow(50);
    }
    
    // Fill the dots one after the other with a color
    void colorWipe(uint32_t c, uint8_t wait) {
      for(uint16_t i=0; i<strip.numPixels(); i++) {
        strip.setPixelColor(i, c);
        strip.show();
        delay(wait);
      }
    }
    
    void rainbow(uint8_t wait) {
      uint16_t i, j;
    
      for(j=0; j<256; j++) {
        for(i=0; i<strip.numPixels(); i++) {
          strip.setPixelColor(i, Wheel((i+j) & 255));
        }
        strip.show();
        delay(wait);
      }
    }
    
    // Slightly different, this makes the rainbow equally distributed throughout
    void rainbowCycle(uint8_t wait) {
      uint16_t i, j;
    
      for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel
        for(i=0; i< strip.numPixels(); i++) {
          strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
        }
        strip.show();
        delay(wait);
      }
    }
    
    //Theatre-style crawling lights.
    void theaterChase(uint32_t c, uint8_t wait) {
      for (int j=0; j<10; j++) {  //do 10 cycles of chasing
        for (int q=0; q < 3; q++) {
          for (int i=0; i < strip.numPixels(); i=i+3) {
            strip.setPixelColor(i+q, c);    //turn every third pixel on
          }
          strip.show();
    
          delay(wait);
    
          for (int i=0; i < strip.numPixels(); i=i+3) {
            strip.setPixelColor(i+q, 0);        //turn every third pixel off
          }
        }
      }
    }
    
    //Theatre-style crawling lights with rainbow effect
    void theaterChaseRainbow(uint8_t wait) {
      for (int j=0; j < 256; j++) {     // cycle all 256 colors in the wheel
        for (int q=0; q < 3; q++) {
          for (int i=0; i < strip.numPixels(); i=i+3) {
            strip.setPixelColor(i+q, Wheel( (i+j) % 255));    //turn every third pixel on
          }
          strip.show();
    
          delay(wait);
    
          for (int i=0; i < strip.numPixels(); i=i+3) {
            strip.setPixelColor(i+q, 0);        //turn every third pixel off
          }
        }
      }
    }
    
    // Input a value 0 to 255 to get a color value.
    // The colours are a transition r - g - b - back to r.
    uint32_t Wheel(byte WheelPos) {
      WheelPos = 255 - WheelPos;
      if(WheelPos < 85) {
        return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
      }
      if(WheelPos < 170) {
        WheelPos -= 85;
        return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
      }
      WheelPos -= 170;
      return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
    }
    تصاویر کوچک شده (Thumbnails) پیوست شده تصاویر کوچک شده (Thumbnails) پیوست شده maxresdefault.jpg   arduino_usb_and_extrenal_power_ws2812.jpg  

  2. #2
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,933
    چه آدمای خوبی پیدا میشن جدیدا؟

  3. #3
    Member
    تاریخ عضویت
    Aug 2015
    محل سکونت
    ایران اسلامی
    نوشته ها
    67
    سلام دوست من، خوبی از خودتونه شما همه رو مثل خودتون خوب میدونید...
    لایک کردن

  4. #4
    Junior Member
    تاریخ عضویت
    Apr 2015
    نوشته ها
    6
    سلام دوست عزیز
    من تمام این کارها رو انجام دادم
    ابته فقط با یک عدد led

    اما هر دو دفعه ای که این کار رو کردم led ترکید.
    میشه راهنمایی بفرمایید؟
    ولتاژ 5 هم دادم بهش.
    لایک کردن

  5. #5
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,933

  6. #6
    Member
    تاریخ عضویت
    Aug 2015
    محل سکونت
    ایران اسلامی
    نوشته ها
    67
    دوست من شانس شما ال ای دی ها اشتباه نصب شده بودن روی اون pcb، بنده اصلا این مشکل رو نداشتم چه ازمایش تک تک ال ای دی ها و چه متری ! نمیدونم دلیل چیه شما این مشکل رو داشتید ! شما ال ای دی ها رو بدون pcb خریداری یا جدا و خودون مونتاژ کردید؟ چون من از فروشگاه افتاب رایانه ردو مدل رو تهیه کردم و دقیقا طبق عکسی که گذاشتم مثال نئو پیکسل براحتی جواب میده حتما عکس هم میزارم جهت اثبات، سوالی داشتید در خدمتم

  7. #7
    Member
    تاریخ عضویت
    Aug 2015
    محل سکونت
    ایران اسلامی
    نوشته ها
    67
    photo1445887136389.jpgphoto1445887135062.jpgphoto1445887136109.jpg
    لایک کردن

  8. #8
    Junior Member
    تاریخ عضویت
    Jul 2015
    نوشته ها
    9
    سلام
    برای استفاده متراژ بالا ریسه SMD (استریپ) از RGB amp میتونید استفاده کنید توخیلی از پروژه ها واسشون مهمه متراژ زیادی ریسه با هم تغییر رنگ بدهfile_1_73_1.jpg
    لایک کردن

  9. #9
    Junior Member
    تاریخ عضویت
    Jul 2015
    نوشته ها
    9
    سلام
    ولتاٰژ یک عدد LED به این صورت است
    red 2-2,3v
    green 3-3,3v
    blue3,-3,3v
    اگر ولتاژ بیشتر باشه led می سوزه البته در LED power ولتاژ مهم نیست پارامتر اصلی جریان می باشد Use Your Arduino to Control RGB LEDs | Farasbee Blog
    لایک کردن

  10. #10
    Member
    تاریخ عضویت
    Aug 2015
    محل سکونت
    ایران اسلامی
    نوشته ها
    67
    سلام دوست من ممنونم از راهنماییت، ولی یه سوال همون ریسه ها نوع 5050 مکانیزم کارکردشون با این WS2812 یکیه با توجه به ساختار ال ای دی ها و استفاده از اون امپ rgb؟ یا دقیق تر بگم تو ال ای دی 5050 باید هر رنگ با ولتاژ روشن بشه ولی در WS2812 اینطور نیست با کد هست و این امپ فکر کنم فقط برای نوع 5050 مناسبه درسته؟5050led_vs_ws2812.jpg

صفحه 1 از 2 12 آخرینآخرین

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO