صفحه 3 از 3 نخستنخست 123
نمایش نتایج: از 21 به 23 از 23

موضوع: مشکل با کتابخانه WS2811.H

  1. #21
    مدیر انجمن ایمان داودی آواتار ها
    تاریخ عضویت
    Apr 2014
    نوشته ها
    98
    تشکر
    87
    تشکر شده 146 بار در 74 پست
    مشکل از نحوه خواندن شما از حافظه فلش هست . خواندن از حافظه فلش با تابع pgm_read_byte میسر هست نه به سادگی خواندن از حافظه SRAM . این هم برنامه اصلاح شده شما که در عمل هم تست شد و جواب داد .

    کد:
    #define F_CPU 16000000 #include <util/delay.h> #include "WS2811.h" #include <avr/io.h> #include <avr/pgmspace.h> // Adjust as necessary. #define PORT PORTB #define DDR DDRB #define PIN 0 #define PAUSE 2000 // msec #define DELAY 1000 // msec // Bit twiddling macros. #define BIT(B) (0x01 << (uint8_t)(B)) #define SET_BIT_HI(V, B) (V) |= (uint8_t)BIT(B) #define SET_BIT_LO(V, B) (V) &= (uint8_t)~BIT(B) // Define the output function. DEFINE_WS2811_FN(WS2811RGB, PORT, PIN) const char t[6][3] PROGMEM = {{255,0,0},{0,255,0},{0,0,255},{0,0,0},{0,255,0},{0,0,255}}; // Drive the three pixels in an infinite loop. int main(void) { // Configure pin for output. SET_BIT_HI(DDR, PIN); SET_BIT_LO(PORT, PIN); RGB_t rgb[1] = {0,0,0}; WS2811RGB(rgb, ARRAYLEN(rgb)); _delay_ms(PAUSE); for (;;) { for ( int i = 0; i < 6; i++) { rgb[0].r = pgm_read_byte(&(t[i][0]));rgb[0].g = pgm_read_byte(&(t[i][1])); rgb[0].b = pgm_read_byte(&(t[i][2])); WS2811RGB(rgb, ARRAYLEN(rgb)); _delay_ms(DELAY); } } }
    - - - - - به روز رسانی شده - - - - -

    یه پیشنهاد هم دارم و اون اینکه برای ذخیره داده های رنگی از micro sd که آموزش اون در قسمت قطعات مورد نیاز نورپردازی اومده استفاده کنید .
    ویرایش توسط ایمان داودی : 09-12-2014 در ساعت 03:04 PM
    آنقدر به تاريكي لعنت نفرستيد ، يك شمع روشن كنيد.

  2. کاربران زیر از این پست مفید ایمان داودی تشکر کرده اند:

    LightIran (09-12-2014),taktak1 (09-12-2014)

  3. #22
    کاربر عادی taktak1 آواتار ها
    تاریخ عضویت
    Sep 2014
    نوشته ها
    8
    تشکر
    6
    تشکر شده 1 بار در 1 پست
    سلام تشکر جناب داودی.به جای تعریف متغیر به این صورت const char t[6][3] PROGMEM از flash__ استفاده کنیم دیگر نیاز به استفاده از
    کد:
    pgm_read_byte(&(t[i][0]));
    نیست و به راحتی جواب می دهد.تست زدم جواب داد.تشکر

  4. کاربران زیر از این پست مفید taktak1 تشکر نموده اند:

    LightIran (09-12-2014)

  5. #23
    مدیر انجمن ایمان داودی آواتار ها
    تاریخ عضویت
    Apr 2014
    نوشته ها
    98
    تشکر
    87
    تشکر شده 146 بار در 74 پست
    لطف کنید و کل برنامه رو برای استفاده بقیه دوستان هم قرار بدید .
    آنقدر به تاريكي لعنت نفرستيد ، يك شمع روشن كنيد.

صفحه 3 از 3 نخستنخست 123

باز و بسته کردن مجوز های ارسال و ویرایش

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