سلام خدمت همه همراهان و دوستان عزیز همونطوری که بهتون قول داده بودم این پروژه آردوینو رو هم براتون انجام دادم و در اختیارتون میزارم تا ازش نهایت استفاده رو ببرید البته حتما فیلم پایین صفحه رو ببینید تا خوب یاد بگیرید که چطور از نرم افزار استفاده کنید.
پروژه افکت دادن به ال ای دی ws2812 با سی شارپ
توی این پروژه از طریق نرم افزاری که با سی شارپ نوشته شده ما میتونیم افکت های مختلفی رو با رنگهای متنوع به ال ای دیمون اعمال کنیم که خوبی این نرم افزار اینه که با اضافه کردن یک افکت، افکت قبلی پاک نمیشه و در ادامه اونها قرار میگیره (فیلم رو ببینید) که در اینجا ما میتونیم 100 تا افکت با رنگهای مخلتلف رو به بردمون اضافه کنیم.
پروژه آردوینو رو اینجا براتون میزارم و فایل سی شارپش رو هم واستون ضمیمه می کنم تا بتونید به دلخواه خودتون تغییرات رو اعمال کنید. قابلیت هایی که میتونید بهش اضافه کنید و سختم نیس(من حوصلم نشد) :
- افزودن افکتهای بیشتر
- قرار دادن لیست و نمایش افکتهای افزوده شده
- اضافه کردن sd کارت به آردوینو و ذخیره افکت ها در اون
- پاک کردن یک یا چند افکت
- قابلیت جابجایی در ترتیب افکت ها
و هزار تا قابلیت دیگه که به سلیقه خودتون می تونید به برنامه اضافه کنید و ازش لذت ببرید.
در ابتدا به صورت زیر مدارتونو ببندید :
برنامه زیر رو روی بردتون آپلود کنید .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
#include <Adafruit_NeoPixel.h> #define pin 6 #define number 8 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(number, pin, NEO_GRB + NEO_KHZ800); int i ,j; boolean flag = false; struct data1 // sakht sakhtman baraye ravan tar shodan barname va yekja budane dadehaye effectha { uint8_t r; // mizan rang ghermez uint8_t g; // mizan rang sabz uint8_t b; // mizan rang abi uint8_t numberW; // tedad halghe tekrar uint16_t wait; // zaman ejraye effect uint8_t effect; }; data1 tartib[100]; // 100 ta az in sakhtman misazim void setup() { pixels.begin(); // led ha amade b kar mishan pixels.setBrightness(50); // mizan brightness ro mizarim ru 50 pixels.show(); // in dastoor dar inja baes mishe ag chizi az qabl ruye led ha bashe pak beshe } void loop() { if (Serial.available() > 0) // agar chizi daryaft shod { pixels.clear(); // kole led ha pak beshe String input = Serial.readString(); // dade ha ro az serial dariaft kone convert(input); // in dade ha ro bebare b in zir barname ta daste bandi beshan flag = true; // age barname y bar dade dariaft kone in flag true mishe i++; // bord amade mishe ta dade dariafti baadi ro tuye sakhteman baadi berize if(i >= 100) i=0; } else if (flag) { // hala ag dadeyi naboud effect ha ejra mishan effect(tartib[j].effect,tartib[j].numberW, tartib[j].wait, tartib[j].r, tartib[j].g, tartib[j].b); j++; if(j > i) j=0; } } void convert(String input) { tartib[i].effect = input.substring(0, 1).toInt(); tartib[i].numberW = input.substring(1, 3).toInt(); tartib[i].wait = input.substring(3, 8).toInt(); tartib[i].r = input.substring(8, 11).toInt(); tartib[i].g = input.substring(11, 14).toInt(); tartib[i].b = input.substring(14, 17).toInt(); } void e1(uint8_t num, uint16_t del, uint8_t r, uint8_t g, uint8_t b) { uint32_t da, da1, da2; int a = r / 4; int d = g / 4; int c = b / 4; int z=0 ; while (z < num) { for (int i = 0; i < number + 4; i++) { da = r; da1 = g; da2 = b; pixels.clear(); for (int j = 0; j < 4; j++) { pixels.setPixelColor(i - j, da, da1, da2); da -= a; da1 -= d; da2 -= c; } pixels.show(); delay(del); } z++; } pixels.clear(); } void e2(uint8_t num, uint16_t del, uint8_t r, uint8_t g, uint8_t b){ int z=0; while(z < num){ digitalWrite(13,HIGH); for(int j = 0 ;j < 8; j++){ pixels.setPixelColor(j,r,g,b); pixels.show(); delay(del); } pixels.clear(); z++; } } void e3(uint8_t num, uint16_t del, uint8_t r, uint8_t g, uint8_t b) { for (int j=0; j<num; j++) { for (int q=0; q < 3; q++) { for (uint16_t i=0; i < pixels.numPixels(); i=i+3) { pixels.setPixelColor(i+q,r,g,b); } pixels.show(); delay(del); pixels.clear(); } } } void e4(uint8_t num, uint16_t del) { uint16_t i, j, k; for(k=0 ; k <num ; k++){ for(j=0; j<256; j++) { for(i=0; i<pixels.numPixels(); i++) { pixels.setPixelColor(i, Wheel((i+j) & 255)); } pixels.show(); delay(del); } } } void e5(uint8_t num, uint16_t del) { uint16_t i, j, k; for(k=0; k<num ;k++){ for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel for(i=0; i< pixels.numPixels(); i++) { pixels.setPixelColor(i, Wheel(((i * 256 / pixels.numPixels()) + j) & 255)); } pixels.show(); delay(del); } } } void e6(uint8_t num, uint16_t del) { for(int k=0 ; k<num; k++){ for (int j=0; j < 256; j++) { // cycle all 256 colors in the wheel for (int q=0; q < 3; q++) { for (uint16_t i=0; i < pixels.numPixels(); i=i+3) { pixels.setPixelColor(i+q, Wheel( (i+j) % 255)); //turn every third pixel on } pixels.show(); delay(del); for (uint16_t i=0; i < pixels.numPixels(); i=i+3) { pixels.setPixelColor(i+q, 0); //turn every third pixel off } } } } } void effect(uint8_t eff, uint8_t num, uint16_t del, uint8_t r, uint8_t g, uint8_t b){ if(eff == 1) e1(num,del,r,g,b); else if (eff == 2) e2(num,del,r,g,b); else if (eff == 3) e3(num,del,r,g,b); else if (eff == 4) e4(num,del); else if (eff == 5) e5(num,del); else if (eff == 6) e6(num,del); } uint32_t Wheel(byte WheelPos) { WheelPos = 255 - WheelPos; if(WheelPos < 85) { return pixels.Color(255 - WheelPos * 3, 0, WheelPos * 3); } if(WheelPos < 170) { WheelPos -= 85; return pixels.Color(0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; return pixels.Color(WheelPos * 3, 255 - WheelPos * 3, 0); } |
اینم از فیلم پروژه که کار با نرم افزار رو توضیح دادم.
مهمان
دوستانی که مشکل دارن و میگن کار نمیکنه کافیه این خط رو داخل void setup() اضافه کنید این خط جا افتاده
Serial.begin(9600) //i
و بعد درست کار میکنه
مهمان
سلام دوست عزیز و گرانقدر. بابت همه زحماتی که میکشید ازتون سپاسگزارم.
یه سوال داشتم در مورد این پروژهای که در بالا مطرحش کردید. آیا همین قضیه رو میشه یا avr طراحی کرد؟ در صورت امکان لطفا یه پروژه کنترل این نوع ال ای دی با AVR رو تو سایتتون بذارید. ممنون میشم.
خدا خیرت بده.
مهمان
سلام خدمت مهندس masoud zahedi عزیز من جند پروژه برنامه نویسی دارم در رابطه با تصویر وشما هم مسلط هستسد و هم علاقه مند به کار هزینه ها توافقی پرداخت می شود لطفا با من تماس بگیرید
مهمان
من با پروژ قبلی که کفتیه بودید روشن کردن این مشکل دارم الان نرم افزار مشابه هست معرفی کنید لنگم اهه
نویسنده این مطلب
سلام سخت افزارتونو چک کنید
متاسفانه نرم افزار مشابه فک نکنم باشه
مهمان
اصلا افکت نمیاد من با پروژ قبلی که کفتیه بودید روشن کردن این مشکل دارم الان نرم افزار مشابه هست معرفی کنید لنگم اهه
مهمان
مهندس موقع ارسال با ارینو فق چراغ xrروشن میشه و چراغ tx خاموش یعنی انگار برنامه اشکال داره ممنون میشم راهنمایی کنید اگه میشد فیلم می گرفتم میدید
نویسنده این مطلب
سلام درسته دیگه داره نشون میده که آردوینو داره اطلاعات رو دریافت میکنه
tx زمانی روشن میشه که آردوینو یه چیزی رو ارسال کنه
مهمان
پورتا باید مثل شکل کقتنید بزارم مثلا بیت تو یک باشه حتما؟
مهمان
سلام اون قسمت کفتید انجام دادم میره تو برنامه فقط روشن نکرد تو پورت ۶ ارینو باید قرار داد یا باید از نرم افزار تعین کرد؟
مدیر سایت
نرم افزار رو که باز کردی – آردوینو رو هم که به کامپیوتر وصل کردی – میری تو نرم افزار پورت رو انتخاب میکنی و OPEN رو میزنی و تمام – فقط همین.
مهمان
سلام جواب نمیده
مهمان
سلام مهندس نرم افزار چرا غیر فعااله؟
مدیر سایت
سلام
مشکلی نداره نرم افزار
تا زمانی که پورت کامی وجود نداشته باشه – دکمه OPEN غیر فعاله
مهمان
با سلام و احترام
با تشکر از ارائه مطلب خوبتون
لینک دانلود پروژه افکت دادن به ال ای دی ws2812 با سی شارپ اشکال داره خواهشمند است اصلاح کنید.
با تشکر فراوان
مدیر سایت
سلام-تست کردم موردی نبود.
مهمان
سلام مهندس?
بنده علاقه مند به یادگیری پروژه های نورپردازی هستم لطفا بندرو راهنمایی کنید چطور و چگونه وارد این علم بشم ؟
و بتونم پروژه های نورپردازی انجام بدم ؟
مرسی از جواب شما
نویسنده این مطلب
سلام
اگه خودتون بخواید بسازید دستگاهاشو باید با برنامه نویسی میکرو (حالا هر چیزی میتونه باشه) و برنامه نویسی نرم افزار برای کامپیوتر آشنا باشید تا در حد امکان دستگاهتون رابط کاربریش قوی باشه و همه بتونن خودشونم تغییرش بدم بدون نیاز به این که هر روز شما بری واسش افکت ها رو عوض کنی. در عین حال باید سخت افزارتونم کاملا از نویز ایزوله باشه.
راه ساده تر استفاده از تجهیزاته آماده هست که فقط نیاز به سره هم کردن داره و باید برق کشیتون نسبتا خوب باشه که یکم هزینه میره بالا ولی زمان رو کاهش میده.