راه اندازی OLED 7 PIN با آردوینو
سلام خدمت دانش پژوهانی که تا اینجا ما را همراهی کردن در این قسمت می خواهیم با هم به راه اندازی OLED 7PIN با آردوینو بپردازیم
بیشتر ما با نمایشگر LCD ماتریس 16 × 2 نقطه ای که در بیشتر پروژه ها برای نمایش برخی اطلاعات به کاربر استفاده می شود ، آشنا هستیم. اما این نمایشگرها LCD محدودیت زیادی در کارهایی که می توانند انجام دهند دارند. در این آموزش قصد داریم با نمایشگرهای OLED و نحوه استفاده از آنها با Arduino آشنا شویم. انواع مختلفی از نمایشگرهای OLED در بازار موجود است.
در پروژه های آردوینو نیاز داریم تا برای نمایش برخی اطلاعات و یا کمیت های اندازه گیری شده از نمایشگر استفاده کنیم. به همین جهت شما را با نحوه راه اندازی و برنامه نویسی نمایشگرهای گرافیکی (OLED) آشنا کنیم.
وسایل مورد نیاز برای راه اندازی OLED 7 PIN با آردوینو:
[icon name=”tablet-alt” style=”solid” class=”” unprefixed_class=””] یک عدد برد آردوینو UNO
[icon name=”tablet-alt” style=”solid” class=”” unprefixed_class=””] یک عدد( OLED 7 PIN(SPI/I2C
[icon name=”tablet-alt” style=”solid” class=”” unprefixed_class=””] تعدادی سیم برد برد
[icon name=”tablet-alt” style=”solid” class=”” unprefixed_class=””] یک عدد کابل USB پرینتر
[icon name=”infinity” style=”solid” class=”” unprefixed_class=””] دقت داشته باشید که برای راه اندازی OLED 7 PIN با آردوینو باید از تغذیه( +3v) استفاده نماییم.
نمای OLED:
در حقیقت نمایشگر OLED که قصد راه اندازی آن را داریم یک ماژول نمایشگر OLED با پروتکل ارتباطی SPI و I2C می باشد. همانطور که از نام این نمایشگر مشخص است،ماژول OLED فاقد Backlighting یا همان نور پس زمینه می باشد چرا که در نمایشگر OLEDهر پیکسل از یک لامپ LEDا لبته در اندازه بسیار کوچک ساخته شده است.
دلیل استفاده بیشتر از oled:
نبود Backlighting در نمایشگرهای OLED باعث شده . این ماژول دارای ابعاد بسیار کوچکی نسبت به سایر ال سی دی های گرافیکی موجود در بازار باشد. این موضوع باعث شده اکثر برنامه نویسان و علاقه مندان به الکترونیک از این نمایشگرها در پروژه های حرفه ای و پرتابل خود که نیاز به داشتن ابعاد کوچک و ظاهری حرفه ای و جذاب دارد، استفاده کنند.
در این پروژه هدف ما نمایش متن متحرک بر روی ماژول نمایشگر OLED با پروتکل SPI و I2C می باشد.
شمای oled:
اصطلاح OLED به معنای “دیود ساطع کننده نور آلی” است و از همان فناوری استفاده می کند که در بیشتر تلویزیون های ما استفاده می شود اما در مقایسه با آنها پیکسل کمتری دارد.
قبل از شروع کار با نمایشگر OLED خود، اطمینان حاصل کنید که نمایشگر شما در کدام دسته قرار می گیرد. در اینجا ما یک صفحه نمایش OLED 7 پین SSD1306 0.96 ”مونوکروم استفاده کرده ایم. این نوع نمایشگر می تواند روی سه پروتکل مختلف ارتباطی مانند حالت SPI 3 Wire ، SPI چهار سیم و حالت IIC کار کند. حالت 4 سیم SPI سریعترین حالت ارتباطی و حالت پیش فرض است.
برای اینکه چیزی در صفحه OLED ظاهر شود ، با IC SSD1306 موجود در ماژول OLED ارتباط برقرار می کنیم. سپس این SSD1306IC هر پیکسل موجود در صفحه نمایش OLED ما را به روز می کند.
این ارتباط می تواند از طریق IIC یا SPI از طریق هر میکروکنترلری مانند Arduino ، PIC و غیره اتفاق بیفتد. برای برقراری ارتباط با یک IC از طریق هر یک از پروتکل های ارتباطی ، ابتدا باید IC را با خواندن صفحه داده آن درک کنیم.در اینجا ما با Arduino ارتباط برقرار کرده ایم.
نحوه اتصال سیم های OLED 7 PINبه آردوینو :
جدول اتصالات :
آردوینو | OLED |
+3V | VCC |
GND | GND |
8 | RES |
9 | DC |
11 | D1 |
13 | D0 |
نمای آردوینو:
در این قسمت به آشنایی دستورات می پردازیم
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
#include <SPI.h>
در این دستور ما کتابخانه مان را معرفی کرده ایم و در دستورهای بعدی هم همینطور می باشد
مانند کد زیر:
#include <SPI.h>
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
#define OLED_MOSI 9
در این قسمت ما پایه های lcd را به آردوینو معرفی کرده ایم و در خط های بعدی هم همینطور
مانند کد زیر:
#define OLED_MOSI 9
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
در این دستور ما نام پایه های lcd را معرفی کرده ایم
مانند کد زیر:
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
define LOGO16_GLCD_HEIGHT 16#:
ما در این دستور یک فرم 16 بیتی برای کاراکتر هایمان تعریف کرده ایم
مانند کد زیر:
#define LOGO16_GLCD_HEIGHT 16
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
static const unsigned char PROGMEM logo16_glcd_bmp[] =
در این دستور ما کد کاراکترهایی که می خواهیم نمایش داده شود را وارد کرده ایم
مانند کد زیر:
static const unsigned char PROGMEM logo16_glcd_bmp[] =
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
#define SSD1306_LCDHEIGHT 64
ما در این دستور فرم 64 بیتی lcd را تعریف کرده ایم
مانند کد زیر:
#define SSD1306_LCDHEIGHT 64
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
if (SSD1306_LCDHEIGHT) != 64
دستور را در شرط قرار داده ایم
مانند کد زیر:
#if (SSD1306_LCDHEIGHT != 64)
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
display.begin(SSD1306_SWITCHCAPVCC);
نمایش نوع lcd برای مقدار ولتاژ تغذیه lcd
مانند کد زیر:
display.begin(SSD1306_SWITCHCAPVCC);
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
display.display();
این دستور برای نمایش می باشد
مانند کد زیر:
display.display();
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
delay(2000);
این دستور برای زمان تاخیر می باشد
مانند کد زیر:
delay(2000);
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
display.clearDisplay();
این دستور برای پاک کردن دستورات بالا می باشد
مانند کد زیر:
display.clearDisplay();
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
display.drawPixel(10, 10, WHITE);
دستور کشیدن پیکسل (10و10ورنگ سفید)می باشد
مانند کد زیر:
display.drawPixel(10, 10, WHITE);
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
testdrawline();
کشیدن تعدادی خطوط می باشد
مانند کد زیر:
testdrawline();
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
testdrawrect();
این دستور برای کشیدن مستطیل می باشد
مانند کد زیر:
testdrawline();
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
testfillrect();
این دستور برای کشیدن مستطیل پر است
مانند کد زیر:
testfillrect();
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
testdrawcircle();
این دستور برای کشیدن دایره می باشد
مانند کد زیر:
testdrawcircle();
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
display.fillCircle(display.width()/2, display.height()/2, 10, WHITE);
کشیدن یک دایره پر (عرض)/(ارتفاع)/(رنگ سفید) به شعاع 10 پیکسل رسم کند
مانند کد زیر:
display.fillCircle(display.width()/2, display.height()/2, 10, WHITE);
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
testdrawroundrect();
کشیدن دایره رکت
مانند کد زیر:
testdrawroundrect();
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
testfillroundrect();
کشیدن دایره پر رکت
مانند کد زیر:
testfillroundrect();
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
testdrawtriangle();:
این دستور برای کشیدن مثلث می باشد
مانند کد زیر:
testdrawtriangle();
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
testfilltriangle();
دستور کشیدن مثلث پر
مانند کد زیر:
testfilltriangle();
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
testdrawchar();
کشیدن کاراکتر مورد نظر
مانند کد زیر:
testdrawchar();
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
testscrolltext();
کشیدن نوشته
مانند کد زیر:
testscrolltext();
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
display.setTextSize(1);
نمایش سایز نوشته مورد نظرمان
مانند کد زیر:
display.setTextSize(1);
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1);
کشیدن بیت مپ (لوگو مشخص شده )
مانند کد زیر:
display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1);
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
display.invertDisplay(true);
صفحه نمایش در حال چرخش
مانند کد زیر:
display.invertDisplay(true);
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
while (1):
حلقه ما برای کشیدن بیت مپ در محور x وy
مانند کد زیر:
while (1)
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
if (i == ‘\n’) continue;
شرط ما برای یک کاراکتر که یک خط کاراکتر را پایین بیندازد
مانند کد زیر:
if (i == '\n') continue;
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
دستور display.write(i);
نوشتن نوشته مورد نظر
مانند کد زیر:
display.write(i);
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
display.println();
پرینت نوشته مورد نظر
مانند کد زیر:
display.println();
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
display.drawTriangle(display.width()/2, display.height()/2-i, display.width()/2-i, display.height()/2+i,display.width()/2+i, display.height()/2+i, WHITE);
کشیدن مثلث (عرض مثلث)/(ارتفاع مثلث)
مانند کد زیر:
display.fillTriangle(display.width()/2, display.height()/2-i, display.width()/2-i, display.height()/2+i, display.width()/2+i, display.height()/2+i, WHITE);
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
if (color == WHITE) color = BLACK;
شرط برای رنگ هایمان
مانند کد زیر:
if (color == WHITE) color = BLACK;
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
display.setTextColor(WHITE);
این دستور برای نمایش تنظیم رنگ نوشته مان می باشد(سفید)
مانند کد زیر:
display.setTextColor(WHITE);
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
display.setCursor(10,0);
تنظیم مکان نوشته ما
مانند کد زیر:
display.setCursor(10,0);
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
display.println(“test”);
پرینت نوشته مورد نظر
مانند کد زیر:
display.println("test");
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
display.startscrollright(0x00, 0x0F);
شروع نمایش کاراکتر های مشخص ما از سمت راست
مانند کد زیر:
display.startscrollright(0x00, 0x0F);
[icon name=”circle-o” class=”” unprefixed_class=””]دستور:
display.stopscroll();
توفق کردن نوشته
مانند کد زیر:
display.stopscroll();
سورس کامل برنامه:
برای دانلود کامل برنامه و فایل های پروژه به صورت رایگان به پایین صفحه مراجعه کنید.
//در این قسمت ما کتابخانه های مورد نظرمان رامعرفی کرده ایم #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> //در این قسمت ما پایه های lcd را به آردوینو معرفی کرده ایم #define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13 // در این قسمت ما نام پایه های lcd را معرفی کرده ایم Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); #define NUMFLAKES 10 #define XPOS 0 #define YPOS 1 #define DELTAY 2 //ما در این دستور یک فرم 16 بیتی برای کاراکتر هایمان تعریف کرده ایم #define LOGO16_GLCD_HEIGHT 16 #define LOGO16_GLCD_WIDTH 16 //در این دستور ما کد کاراکتر هایی که می خواهیم نمایش داده شود را وارد کرده ایم static const unsigned char PROGMEM logo16_glcd_bmp[] = { B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B01111110, B11111111, B00110011, B10011111, B00011111, B11111100, B00001101, B01110000, B00011011, B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000 }; //ما در این دستور فرم 64 بیتی lcd را تعریف کرده ایم #define SSD1306_LCDHEIGHT 64 //شرط قرار دادن ما #if (SSD1306_LCDHEIGHT != 64) #error("Height incorrect, please fix Adafruit_SSD1306.h!"); #endif void setup() { Serial.begin(9600); //نمایش نوع lcdبرای مقدار ولتاژتغذیهlcd display.begin(SSD1306_SWITCHCAPVCC); //نمایش دادن display.display(); //زمان تاخیر delay(2000); //پاک کردن نوشته display.clearDisplay(); //کشیدن پیکسل(10و10و سفید) display.drawPixel(10, 10, WHITE); display.display(); delay(2000); display.clearDisplay(); //کشیدن تعدادی خطوط testdrawline(); display.display(); delay(2000); display.clearDisplay(); //کشیدن مستطیل testdrawrect(); display.display(); delay(2000); display.clearDisplay(); //کشیدن تعدادی مستطیل پر testfillrect(); display.display(); delay(2000); display.clearDisplay(); //کشیدن دایره testdrawcircle(); display.display(); delay(2000); display.clearDisplay(); //کشیدن یک دایره پر (عرض)/(ارتفاع)/(رنگ سفید)به شعاع 10 پیکسل رسم کند display.fillCircle(display.width()/2, display.height()/2, 10, WHITE); display.display(); delay(2000); display.clearDisplay(); //کشیدن دایره رکت testdrawroundrect(); delay(2000); display.clearDisplay(); //کشیدن دایره پررکت testfillroundrect(); delay(2000); display.clearDisplay(); //کشیدن مثلث testdrawtriangle(); delay(2000); display.clearDisplay(); //کشیدن مثلث پر testfilltriangle(); delay(2000); display.clearDisplay(); // کشیدن کاراکتر ها testdrawchar(); display.display(); delay(2000); display.clearDisplay(); // کشیدن نوشته ها testscrolltext(); delay(2000); display.clearDisplay(); //نمایش سایز تست ها display.setTextSize(1); display.clearDisplay(); //کشیدن بیت مپ (لوگو مشخص شده) display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); display.display(); // صفحه نمایش در حال چرخش display.invertDisplay(true); delay(1000); display.invertDisplay(false); delay(1000); display.clearDisplay(); testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); } void loop() { } //کشیدن بیت مپ مشخص void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { uint8_t icons[NUMFLAKES][3]; // شرط ما در محور x و y for (uint8_t f=0; f< NUMFLAKES; f++) { icons[f][XPOS] = random(display.width()); icons[f][YPOS] = 0; icons[f][DELTAY] = random(5) + 1; Serial.print("x: "); Serial.print(icons[f][XPOS], DEC); Serial.print(" y: "); Serial.print(icons[f][YPOS], DEC); Serial.print(" dy: "); Serial.println(icons[f][DELTAY], DEC); } //حلقه ما برای کشیدن بیت مپدر محور x و y while (1) { for (uint8_t f=0; f< NUMFLAKES; f++) { display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); } display.display(); delay(200); // شرط بیت مپ ما for (uint8_t f=0; f< NUMFLAKES; f++) { display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); //حرکت y icons[f][YPOS] += icons[f][DELTAY]; // کشیدن دوباره آن if (icons[f][YPOS] > display.height()) { icons[f][XPOS] = random(display.width()); icons[f][YPOS] = 0; icons[f][DELTAY] = random(5) + 1; } } } } //کشیدن کاراکتر void testdrawchar(void) { display.setTextSize(1); //رنگ کارکتر display.setTextColor(WHITE); //مکان نمایش آن در محور lcd display.setCursor(0,0); //شرط قرار دادن for (uint8_t i=0; i < 168; i++) { //شرط مابرای یک کاراکتر که یک خط کاراکتر را پایین بیندازد if (i == '\n') continue; //نوشتن نوشته مورد نظر display.write(i); if ((i > 0) && (i % 21 == 0)) //پرینت کاراکتر display.println(); } //نمایش آن display.display(); } //کشیدن دایره void testdrawcircle(void) { for (int16_t i=0; i<display.height(); i+=2) { display.drawCircle(display.width()/2, display.height()/2, i, WHITE); display.display(); } } //پر کردن رکت void testfillrect(void) { uint8_t color = 1; for (int16_t i=0; i<display.height()/2; i+=3) { // رنگ های متناوب display.fillRect(i, i, display.width()-i*2, display.height()-i*2, color%2); display.display(); color++; } } //کشیدن مثلث void testdrawtriangle(void) { for (int16_t i=0; i<min(display.width(),display.height())/2; i+=5) { //نمایش کشیدن مثلث(عرض مثلث / ارتفاع مثلث) display.drawTriangle(display.width()/2, display.height()/2-i, //عرض مثلث/ ارتفاع مثلث display.width()/2-i, display.height()/2+i, //عرض مثلث / ارتفاع مثلث display.width()/2+i, display.height()/2+i, WHITE); //نمایش display.display(); } } //مثلث پر void testfilltriangle(void) { //رنگ مورد نطر uint8_t color = WHITE; for (int16_t i=min(display.width(),display.height())/2; i>0; i-=5) { //نمایش عرض و ارتفاع مثلث پر display.fillTriangle(display.width()/2, display.height()/2-i, display.width()/2-i, display.height()/2+i, display.width()/2+i, display.height()/2+i, WHITE); if (color == WHITE) color = BLACK; else color = WHITE; display.display(); } } //کشیدن دایره رکت void testdrawroundrect(void) { //شرط برای ارتفاع for (int16_t i=0; i<display.height()/2-2; i+=2) { //کشیدن دایره رکت عرض و ارتفاع و رنگ دایره display.drawRoundRect(i, i, display.width()-2*i, display.height()-2*i, display.height()/4, WHITE); //نمایش آن display.display(); } } //تست دایره پر رکت void testfillroundrect(void) { //رنگ سفید uint8_t color = WHITE; //شرط ما برای نمایش for (int16_t i=0; i<display.height()/2-2; i+=2) { //نمایش دایره رکت display.fillRoundRect(i, i, display.width()-2*i, display.height()-2*i, display.height()/4, color); //شرط (رنگ ما=سفید)رنگ مشکی if (color == WHITE) color = BLACK; //شرط رنگ ما =سفید else color = WHITE; //نمایش display.display(); } } //تست کشیدن رکت void testdrawrect(void) { //شرط نمایش ما for (int16_t i=0; i<display.height()/2; i+=2) { display.drawRect(i, i, display.width()-2*i, display.height()-2*i, WHITE); //نمایش دادن display.display(); } } //تست خط کشیدن void testdrawline() { //شرط برای عرض نمایش خطمان for (int16_t i=0; i<display.width(); i+=4) { //کشیدن خط و نمایش ارتفاع رنگ سفید display.drawLine(0, 0, i, display.height()-1, WHITE); // نمایش دادن display.display(); } for (int16_t i=0; i<display.height(); i+=4) { display.drawLine(0, 0, display.width()-1, i, WHITE); display.display(); } delay(250); //پاک کردن display.clearDisplay(); //شرط برای عرض for (int16_t i=0; i<display.width(); i+=4) { //کشیدن خط ارتفاع و رنگ آن display.drawLine(0, display.height()-1, i, 0, WHITE); //نمایش display.display(); } for (int16_t i=display.height()-1; i>=0; i-=4) { display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); display.display(); } delay(250); display.clearDisplay(); for (int16_t i=display.width()-1; i>=0; i-=4) { display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); display.display(); } for (int16_t i=display.height()-1; i>=0; i-=4) { display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); display.display(); } delay(250); display.clearDisplay(); for (int16_t i=0; i<display.height(); i+=4) { display.drawLine(display.width()-1, 0, 0, i, WHITE); display.display(); } for (int16_t i=0; i<display.width(); i+=4) { display.drawLine(display.width()-1, 0, i, display.height()-1, WHITE); display.display(); } delay(250); } //تست نوشته void testscrolltext(void) { //نمایش تنظیم سایز نوشته(2) display.setTextSize(2); //نمایش تنظیم رنگ نوشته (سفید) display.setTextColor(WHITE); //نمایش تنظیم مکان (0و10) display.setCursor(10,0); //نمایش پاک کردن نوشته display.clearDisplay(); //پرینت جمله مورد نظر display.println("test"); //نمایش دادن display.display(); //شروع نمایش کاراکتر ها از سمت راست display.startscrollright(0x00, 0x0F); //زمان تاخیر delay(2000); //توقف کاراکتر display.stopscroll(); delay(1000); //شروع نمایش کاراکتر ها از سمت چپ display.startscrollleft(0x00, 0x0F); delay(2000); display.stopscroll(); delay(1000); //شروع موربی کاراکتر از سمت راست display.startscrolldiagright(0x00, 0x07); delay(2000); //شروع موربی کاراکتر از سمت چپ display.startscrolldiagleft(0x00, 0x07); delay(2000); display.stopscroll(); }
نتیجه:
از این نمایشگر در پروژه های حرفه ای و پرتابل خود که نیاز به داشتن ابعاد کوچک و ظاهری حرفه ای و جذاب دارد می توانید استفاده کنید.
با استفاده از ماژول نمایشگر OLED با پروتکل SPI و I2C می توانید ساعت و یا تصاویر و اشکال مختلف متحرک بسازیم.
خب اینم از آموزش امروز امیدوارم که لذت برده باشید و پروژه های مختلفی رو با این ماژول بسازید و فیلمشو روی صفحه اینستگرام خودتون بزارید ، مارو تگ کنید و کپن تخفیف از ما بگیرید.
راستی یادتون نره ، حتما به اینستاگرام ماهم سربزنید 😉
_________ _________
- در صورت مشکل در لینک دانلود یا خود فایل حتما در بخش خرابی لینک برامون بنویسید تا در سریع ترین زمان رسیدگی کنیم
- توجه فرمایید که اعلام گزارش خربی باعث بهتر شدن خدمات ما به شما خواهد بود
- برای دریافت لینک دانلود یک بار ثبت نام کنید و به صورت مستقیم دانلود کنید
برای مشاهده لینک دانلود لطفا وارد حساب کاربری خود شوید!
وارد شویدپسورد فایل : robotafzar.com گزارش خرابی لینک
Oops! We could not locate your form.
درباره امیرحسین تاراج بر
دانشجوی الکترونیک دانشگاه سراسری تهران و در زمینه ی آردوینو - رزبری پای در حال فعالیت هستم به ساخت رباتیک و کار های فنی علاقه مندم و در ربات افزار مشغول به کار هستم
نوشته های بیشتر از امیرحسین تاراج بر
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.