آردوینو آموزش آردوینو پروژه های آردوینو

آموزش ساخت عینک LED

rgb-neopixel-led-ring-glasses
نوشته شده توسط پریسا پوربلورچیان

چند سالی است که عرصه گجت‌ها جذاب‌تر و پیچیده‌تر می‌شود. به یاد دارم اولین گجت قابل حملی که بسیار به آن علاقمند بودم واکمن جیبی سونی بود. امروزه به لطف پیشرفت میکروکنترلرها و بردهای امبدد از جمله برد آردوینو Arduino گجت‌های جذاب کوچک و کاربردی روز به روز بیشتر می‌شود. نوع دیگری از این دسته، گجت‌های پوشیدنی هستند. در این مدل، گجت عضوی از بدن ما می‌شود مانند ساعت، عینک، کمربند، کفش و حتی شلوار. برای دست یابی به این موضوع، پیشرفته شدن میکروکنترلرها فقط کافی نبود بلکه نیاز به منبع تغدیه سبک، قابل حمل و کارآمد نیاز بود. دنیای گجت‌های پوشیدنی بسار جذاب و متنوع است. در این پست شیوه‌ی ساخت یک عینک با LED RGB را به شما آموزش خواهم داد که می‌توانید در جشن ها و مراسم مختلف از آن استفاده کنید. در ادامه‌ی این آموزش جذاب ساخت عینک ال ای دی با آردوینو با مرجع تخصصی آردوینو ،دیجی اسپارک همراه باشید.

 

ساختار ال ای دی پیکسل حلقه‌ای

ال ای دی دهای پیکسل یک ال ای دی SMD  و RGB می‌باشد، که با موج مربعی یا PWM میتوان آن‌ها را برای شدت نور و رنگ مورد نظر آدرس دهی کرد. این نوع ماژول به صورت پیکسل در محیط یک دایره کنار هم قرار داده شده‌اند. شیوه مدیریت این ماژول همانند آموزش راه اندازی LED RGB addressable نواری با برد آردوینو Arduino میباشد.

عینک ال ای دی با آردوینو - دیجی اسپارک

 

وسایل مورد نیاز:

برد آردوینو Arduino Pro micro

حلقه ال ای دی ۱۲ تایی LED Neo Pixel Ring RGB

باتری لیتیوم پلیمر حداکثر ۵۰۰ میلی آمپر

مینی میکروسوییچ اهرم دار

چند رشته سیم

چسب حرارتی

 

لینک کیت کامل کلیه قطعات به همراه عینک نمایش داده شده در تصاویر

 

اتصال به آردوینو

ال ای دی حلقه‌ای یا همان LED Pixel تواناییی کارکردن با ولتاژ ۳٫۳ و ۵ ولت را دارد. فقط کافیست پایه‌ها را به صورت زیر اتصال دهید.

arduino pro micro -digispark

پایه VCC را به VCC آردوینو وصل میکنیم.

پایه DI را به پایه شماره ۳ آردوینو وصل میکنیم.

پایه GND را به یکی از پایه های GND آردوینو وصل میکنیم.

پایه DO از ال ای دی حلقه ای را به پایه DI حلقه دوم وصل میکنیم.

 

برای اتصال باتری مثبت و منفی را به پایه‌های VCC و GND آردوینو مطابق شکل زیر وصل می‌کنیم. البته در این آموزش من از یک میکروسوئیچ اهرم دار بایه مثبت باتری استفاده کرده‌ام که با بستن دسته‌های عینک جریان مدار قطع شود.

micro-fritzing-Digispark

نکته بسیار مهم:

برد آردوینو Pro micro هم با ولتاژ ۵ و هم با ۳٫۳ ولت کارآیی دارد. از آن جایی که سلول باتری استفاده شده ۳٫۷ ولت است، پیشنهاد می‌کنم در حالت ۳٫۳ ولت استفاده کنید. برای این منظور کنار پورت میکرو USB یک جامپر به اسم J1 قرار دارد. کافیست این جامپر را از حالت اتصال خارج کنید.

promicro arduino - digispark

فراخوانی کتابخانه :

در این آموزش من از کتابخانه‌ی neopixel استفاده کرده‌ام. برای دانلود کتابخانه به صفحه محصول حلقه ال ای دی LED Neo Pixel ring RGB مراجعه و در انتهای صفحه لینک کتابخانه وجود دارد.

 

کدهای برنامه

#include <Adafruit_NeoPixel.h>

#define PIN 3

Adafruit_NeoPixel strip = Adafruit_NeoPixel(64, PIN, NEO_GRB + NEO_KHZ800);


void setup() {
  strip.begin();
  strip.setBrightness(40); //adjust brightness here
  strip.show(); // Initialize all pixels to 'off'
}

void loop() {
  //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(100);
}
// 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);
  }
}

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);
  }
}


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
      }
    }
  }
}

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
        }
    }
  }
}


uint32_t Wheel(byte WheelPos) {
  if(WheelPos < 85) {
   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  } else if(WheelPos < 170) {
   WheelPos -= 85;
   return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
   WheelPos -= 170;
   return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}

 

برای تغییر سرعت برنامه ال ای دی کافیست عدد کد زیر را که ۱۰۰ میباشد، تغییر دهید.

  theaterChaseRainbow(100);

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد.

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۲ دیدگاه

  • سلام خانم مهندس
    خیلى آموزشتون جالب بود، تشکر میکنم، فقط سوالى داشتم من اگر بخواهم این عینک را آماده تهیه کنم، چه باید بکنم؟

  • سلام اموزشتون خیلی خوب بود فقط میشه برای تزئین چیزای دیگه مثل ماشین ویا موتور سکلیت از این پروژه استفاده کرد و یک سوال دیگه هم از همین نوع ال ای دی به جای مدل دوازده تایی از مدل هشت تایی استفاده کنیم فرقی نداره

    • سلام
      برای استفاده در موارد دیگر هم میتوانید استفاده کنید. بسته به سلیقه‌تان در وسایل مختلف میتواند باعث جذابیت شود. همچنین برای راه اندازی از نوع ۸ تایی هم میتوانید استفاده کنید.

  • سلام
    ممنون از آموزشتون
    چطوری میتونم یه حلقه با ال ای دی ۲۴ تایی یا ۳۶ تایی بخرم یا بسازم؟
    نقشه برد این حلقه هارو دارین؟

  • با سلام
    می خواستم بدونم که این ماژول چگونه راه اندازی می شود با درگاه های ارتباطی نظیر spi,I2c و……. یا از طریق پالس pwm؟

    • سلام
      این نوع ال ای دی از LED RGB تشکیل شده است و از طریق موج مربعی و یا همان PWM می‌توانید آدرس دهی و راه اندازی کنید.

      • سلام
        ممنون از این آموزش
        فقط من مراحل و پیش رفتم اما امکان بارگزاری کتابخانه رو روی آردینو ندارم و با پیغام ارور مواجه میشم و خطای کد میده ممنون میشم راهنمایی کنید

  • با سلام
    خسته نباشید
    یه دنیا تشکر بابت این آموزش
    سوالی داشتم راجب به این که میتونم از rgb bar های دیگه هم استفاده کنم ؟ در اون صورت چه کتابخانه رو باید در ابتدا کد صدا بزنم؟ هر کدوم از این bar ها کتابخانه های مخصوص خودشون رو دارن؟
    یه تعداد سوال دیگه در زمینه سخت افزار آردینو داشتم چطور میتونم باهاتون در ارتباط باشم؟

    • سلام
      با توجه به تراشه به کار رفته در هر ال ای دی می‌بایست دیتاشیت آن را بررسی کرده و سپس کتابخانه های مورد نیاز را نصب کنید. با توجه به نوع ال ای دی کتابخانه های مخصوص به آن ارائه شده است.
      در خصوص سوال دوم، روال به همین صورت است. سوالات خود را در پست های مرتبط با مشکل خود مطرح کنید تا بررسی و پاسخ داده شود.