اطلاعیه

Collapse
No announcement yet.

من یک تازه کار با برد آردوینو UNO هستم !!

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    من یک تازه کار با برد آردوینو UNO هستم !!


    سلام دوستان من میخوام کار با آردوینو UNO رو شروع کنم از صفر صفره پروگرم کردنش تاا ...
    این تاپیک رو زدم تا مرحله به مرحله کمکم کنین و راهنمایی کنین منم چیزایی ک یاد میگیرم به طور کامل پست میکنم
    باشد ک رستگار شوم
    نرم افزار آردوینورو دانلود کردم و برد رو به کامپیوتر متصل کردم
    اون طوری ک تو توضیحات خوندم باید پورت و نام اردوینو رو تو نرم افزار انتخاب کنم تا نرم افزار بشناسه به طور کامل بردم رو

    برا تستش هم از بخش file مثل عکس زیر میریم جلو و چشمک زن آردوینو رو فعال میکنیم :

    دکمه اپلود هم برا پروگرم شدن برنامه میزنیم

    اگه همه چی درست پیش رفته باشه led روی برد آردوینو باید چشمک بزنه

    کارمون با UNO جان شروع شد ...ایشاا... ادامه میدیم
    جدیدترین ویرایش توسط علی چمانی; ۱۱:۲۳ ۱۳۹۶/۰۳/۲۹.

    #2
    پاسخ : من یک تازه کار با برد آردوینو UNO هستم !!

    در پست قبل چشمک زن روی خود برد رو فعال کردیم و به نتیجه رسیدیم امروز میخوایم یکم کدها و دستورهای اونو بررسی کنیم و ببینیم چی به چیه !!و اگه بتونیم LED های دیگه ای رو اضافه کنیم و تاخیر بدیم و ی رقص نور کوچولو ایجاد کنیم باهاشون ....


    void setup() {
    // initialize digital pin LED_BUILTIN as an output.
    pinMode(13, OUTPUT);
    }

    // the loop function runs over and over again forever
    void loop() {
    digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
    delay(1000); // wait for a second
    digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
    delay(1000); // wait for a second
    }



    کد نمونه چشمک زن رو از همون مسیر که گفته شد باز میکنیم


    دوتا تابع اساسی داریم void setup() و void loop()
    تابع SETUP
    این تابع فقط یک بار اجرا میشه توسط کامپایلر و بیشتر برای تعریف کردن پایه ها به عنوان وردوی یا خروجی و فراخوانی کتابخونه ها و ... ب کار میره
    تابع LOOP
    برخلاف چیزی ک تو تابع بالا گفتیم این تابع هی اجرا میشه و نقطه پایان نداره کلا !!ینی کامپایلر میاد خط به خط میخونه و اجرا میکنه وختی رسید به خط پایان دوباره برمیگرده از خط اول میخونه و اجرا میکنه و این فرایند مدام تکرار میشه ...
    برم سر اصل مطلب ینی چشمک زن

    دستور pinMode :

    اگه ب برد توجه بکنیم میبینیم که 14 پایه دیجیتال داره که هم میتونن ورودی باشن و هم خروجی و البته 6 پایه آنالوگ داره که فقط میتونن ورودی باشن
    در حقیقت با این دستور ما میگیم که کدوم پایه میخوایم که چی باشه
    مثلا تو این بحث پایه مورد نظرمون پایه 13 هستش که میخوایم خروجی باشه که باید از این دستور استفاده بشه ...
    برای پایه های دیجیتال از 0 تا 13 و برای پایه های آنالوگ از A0 تا A5 استفاده میشه
    OUTPUT >> تعریف به عنوان خروجی
    INPUT>> تعریف به عنوان ورودی

    دستور digitalWrite :

    جهت مقدار دهی به پایه های دیجیتال از این دستور استفاده میشه
    در واقع همون 0 یا 1 کردن پایه هستش منتهی به جای 1 از HIGH و به جای 0 از LOW استفاده میشه!!


    دستور delay :
    این دستور دستوری هست که تاخیر ایجاد میکنه تو برنامه که واحدشم میلی ثانیه هست
    1000 میلی ثانیه میشه 1 ثانیه ینی هر عددی که داخل دستور بنویسیم در واحد میلی ثانیه محاسبه شده و اجرا میشه ینی بعد از اون تاخیر کامپایلر میره به خط بعدی ...
    اگه توجه داشته باشین دستور pinMode در تابع SETUP و دو دستور بعدی در تابع LOOP نوشته شدند .
    ینی چی ؟؟
    ینی دو دستور دوم مدام در حال تکرار شدن میشن و این ینی مدام پایه مورد نظرمون 0 و 1 (HIGH,LOW) میشه
    و این همون چشمک زن هست ....
    الان یکم تنوع و دانش به خرج دادم و با 4 تا LED یه چشمک زن راه انداختم


    طبق عکس از 4 پایه 13و12و11و 10 استفاده کردم به عنوان خروجی
    (ینی تو تابع setup آوردیم )
    روال کار هم بدین شکل خواهد بود که دو پایه 13 و 11 همزمان باهم روشن و خاموش میشن و دو پایه 10 و 12 باهم تاخیرمونم هم 1 ثانیه خواهد بود
    کد های مربوط به چشمک led ها هم تو تابع loop آورده شده بدین معنی که کدها تکرار میشه و این تکرار باعث چشمک خواهد شد ...
    کد های برنامه :


    void setup() {
    // initialize digital pin LED_BUILTIN as an output.
    pinMode(13, OUTPUT);
    pinMode(12, OUTPUT);
    pinMode(11, OUTPUT);
    pinMode(10, OUTPUT);

    }

    // the loop function runs over and over again forever
    void loop() {
    digitalWrite(13, HIGH);
    digitalWrite(11, HIGH);
    digitalWrite(12, LOW);
    digitalWrite(10, LOW);
    delay(1000);

    digitalWrite(13, LOW);
    digitalWrite(11, LOW);
    digitalWrite(12, HIGH);
    digitalWrite(10, HIGH);
    delay(1000);
    }


    ویدیوی کوتاه زیر هم روال کار رو نشون میده
    جدیدترین ویرایش توسط علی چمانی; ۱۶:۱۰ ۱۳۹۶/۰۴/۱۳.

    دیدگاه


      #3
      پاسخ : من یک تازه کار با برد آردوینو UNO هستم !!

      راه اندازی شیفت رجیستر 74HC595 با آردوینو UNO




      واقعیتش من میخواستم تعداد LED های بیشتری رو استفاده کنم و ازشون رقص نور و ... درست کنم یکم تحقیق کردم دیدم کلا پایه های UNO تموم میشه و فقط و فقط از اردوینو LED کشیده میشه برا حل شدن این مشکل یکم دیگه تحقیق کردم و دوستان استفاده از ای سی شیفت رجیستر 74595 رو پیشنهاد دادن
      و گفتن که این ای سی 8 تا خروجی به ما میده و فقط سه پایه از اردوینو رو اشغال میکنه که این عالیه ...
      از همون اولش خوبه که این ای سی رو بشناسیم و ازش استفاده کنیم تا تو پروژه های عظیم به مشکل نخوریم
      بریم جلو ببینیم میتونیم راش بندازیم ...
      یه معرفی کامل در مورد این ای سی شیفت رجیستر در لینک زیردادم که میتونین استفاده کنین :


      طبق عکس ، اول مدارشو به طور کامل رو برد برد میبندیم


      کدهای برنامه :



      int latchPin = 2;
      int clockPin = 3;
      int dataPin = 4 ;
      byte leds = 0;

      void setup() {
      pinMode(latchPin, OUTPUT);
      pinMode(dataPin, OUTPUT);
      pinMode(clockPin, OUTPUT);

      }

      void loop() {
      leds = 0 ;
      updateShiftRegister();
      delay(500);
      for (int i = 0 ; i < 8; i++)
      {
      bitSet(leds, i);
      updateShiftRegister();
      delay(500);
      }
      }
      void updateShiftRegister()
      {
      digitalWrite(latchPin,LOW);
      shiftOut(dataPin,clockPin,LSBFIRST,leds);
      digitalWrite(latchPin,HIGH);

      }


      تو سه خط اول به آردوینو پایه هارو معرفی میکنیم که
      پایه 2 رو به عنوان latchpin که برای نمایش داده های ورودی هستش
      پایه 3 رو به عنوان clockpin که برای پالس اعمالی موقع ارسال داده
      پایه 4 رو به عنوان datapin که برای ارسال داده هستند.
      تو خط بعدی یه متغیر از نوع byte چون 8 تا led مد نظره تعریف میکنیم
      در تابع setup
      سه تا پایه 2 و 3 و 4 رو به عنوان خروجی میذاریم
      درتابع loop
      اول متغیرمونو صفر میکنیم بعد یه تابعی رو که تعریف کردیم فراخوانی میکنیم
      ینی تابع updateshiftregister
      این تابع بدین صورت کار میکنه که اول همه پایه هارو صفر میکنه
      سپس میرسه به تابع shiftout که این تابع 4 تا پارامتر ورودی داره
      دو پارامتر اول برای داده و پالسه
      پارامتر سوم lsbfirst برا اینه که بگیم از کدوم led روشن شدن شروع بشه
      این پارامتر مخفف ’ Least Significant Bit ’ ینی همون بیت کم ارزش هستش
      پس گفتیم شروع روشن شدن از بیت کم ارزشمون خواهد بود
      پارامتر چهارم هم متغیری هست که شیفت داده میشه
      ادامه تابع loop بدین صورت عمل میکنه که
      برنامه 500 میلی ثانیه متوقف میشه و وارد حلقه FOR میشه و از 0 تا 7 توسط متغیر i شروع به شمارش می کنه و توسط تابع BITSET مقدار رو داخل متغیر قرار میده سپس توسط تابع updateshiftregister مقدار متغیر رو به ای سی 74HC595 منتقل میکنه و 500 میلی ثانیه متوقف میشه و این روال ادامه پیدا میکنه ...
      در تکرار بعدی عدد 2 درون متغیر قرار میگیره و LED بعدی رو روشن میکنه و خاموش میکنه و سپس عدد 3 رو قرار میده و بدین صورت همه LED ها روشن و خاموش میشن ...

      فیلم کوتاهی از روال کار رو میتونین از لینک زیر مشاهده کنین :




      دیدگاه


        #4
        پاسخ : من یک تازه کار با برد آردوینو UNO هستم !!

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


        الان میخواین با کلید یا همون PUSHBUTTON به صورت دستی کنترل کنیم روشن خاموش شدن LED رو ....
        اونطوری که مشخصه اگه جریان عبوری از مدارمون رو به منزله جریان اب درنظر بگیریم کلید به عنوان فلکه عمل میکنه ینی بافشار دادنش فلکه باز میشه و اب جاری میشه ینی الان ما میخواین برنامه ای بنویسیم که با فشار دادن کلید LED مون روشن شه
        کدهای برنامه بدین شکل هست :

        const int LED = 13;
        const int BUTTON = 7;
        int val = 0;

        void setup() {
        pinMode(LED, OUTPUT);
        pinMode(BUTTON,INPUT);

        }

        void loop() {
        val = digitalRead(BUTTON);

        if (val == HIGH) {
        digitalWrite(LED,HIGH);
        } else {
        digitalWrite(LED, LOW);

        }
        }

        سه خط اول تعریف پایه و متغیرهای مورد استفاده در برنامه به بردمون هست
        برای تعریف یک متغیر عددی از int استفاده میکنیم .
        عبارت const در اول int بدین معنی است که مقدار متغیرمون تا اخر برنامه ثابت میمونه و مقدارش رو تغییر نمیدیم .
        در تابع SETUP نوع ورودی و خروجی پایه ها رو مشخص میکنیم که
        پایه 13 رو خروجی
        و پایه 7 رو ورودی در نظر گرفتیم
        میرسیم به تابع LOOP که هسته اصلی برنامه مونه :
        روال کلی این برنامه و در حقیقت اون چیزی که ما میخوایم این هستش
        ما میخوایم متغیرمون پایه ورودی رو چک کنه و هر وخت ورودی مون 1 شد (HIGH) ینی هر وخت کلید رو فشار دادیم خروجی مون LED رو برامون روشن کنه و در غیر این صورت LED خاموش باشه ....
        برای این کار از تابع digitalRead استفاده میکنیم (این تابع ورودی مون رو میخونه تا ببینه ایا کلید فشرده شده یا نه !!)
        از if هم برای روشن و خاموش کردن led استفاده میشه بدین صورت که میگیم اگه کلیدمون فشرده شد led رو روشن کن اگه فشرده نشد ledمون رو خاموش نگه دار ...
        با بستن این مدار و اجرای برنامه با فشاردادن کلید led مون روشن میشه و وقتی فشار نمیدیم خاموش هستش .
        جدیدترین ویرایش توسط علی چمانی; ۱۲:۰۳ ۱۳۹۶/۰۴/۱۰.

        دیدگاه


          #5
          پاسخ : من یک تازه کار با برد آردوینو UNO هستم !!

          ;کنترل نور LED با PWM
          در ابتدا یه معرفی کوچیکی داشته باشیم از PWM یا همون مدولاسیون پهنای پالس


          میخوایم یه LEDرو با استفاده از این روش کنترل کنیم تو پستای قبل چشمک زن و همچنین کنترل LED با PUSHBUTTON رو بررسی کردیم
          در دو مبحث قبلی LED مون رو یا صفر میکردیم یا 1 ولی الان در واقع میخوایم نور LED رو کم و زیاد کنیم ینی به وسیله PWM ولتاژ بین 0 و یک تغییر میکنه ، به زبان ساده تر ولتاژ روی LED رو تغییر میدیم ...یک (HIGH)منطقی ینی 5 ولت و صفر منطقی (LOW) ینی صفر ولت
          الان ولتاژ رو بین 0 و 5 ولت تغییر میدیم ، جالبه بدونین در این حالت LED روشن و خاموش میشه ولی این روشن و خاموش شدن یه قدری سریع اتفاق میوفته که چشم انسان نمیتونه تشخیص بده و فقط کم و زیاد شدن نور رو میبینه...
          برگردیم به آردوینو همون طور که میدونید UNO دارای 13 پایه دیجیتال هست برای استفاده از PWM ما فقط میتونیم از پایه های 3و5و6و9و10و11 استفاده کنیم که روی برد هم مشخص شده (بغل این پایه ها دارای علامت هستش)
          دستور لازم برای PWM تابع analogWrite() میباشد
          دارا ی دوتا پارامتر ورودی هستش که پاراکتر اول برای مشخص کردن شماره پایه ای هست که میخوایم نور led رو باهاش کنترل کنیم و پارامتر دوم باید عددی بین 0 و 255 باشه 0 ینی اینکه پایه خروجیمون صفر منطقی یا خاموش باشه و 255 ینی پایمون 1 منطقی باشه در واقع اگه دقت کرده باشین برای اینکه نور رو کنترل کنیم مقدار این پارمتر باید بین 0 و 255 تغییر کنه
          به عنوان مثال اگه پارامتر اول 9 و پارامتر دوم 128 باشه ینی اینکه خروجی ما 50% ماکزیمم نور LED رو نمایش خواهد داد

          analogWrite(9, 128);

          مدار زیر رو میبندیم :

          کد کلی برنامه رو مینویسیم :



          const int LED = 9;
          int i = 0 ;

          void setup() {
          pinMode(LED,OUTPUT);
          }

          void loop() {
          for (i=0;i<255;i++){
          analogWrite(LED, i);
          delay(10);
          }
          for (i = 255; i>0;i--){
          analogWrite(LED,i);
          delay(10);
          }
          }


          دو خط اول برنامه تعریف پایه 9 به عنوان LED و تعریف متغیرمون هست
          در تابع SETUP پایه 9 رو به عنوان خروجی تعریف کردیم
          تابع LOOP
          دو تا حلقه FOR داریم همون طور که میدونین حلقه FOR دارای سه تا پارامتره
          پارامتر اول نام متغیر هست که اینجا متغیرمون i هستش
          پارامتر دوم شرط متغیر هست که اینجا گفتیم تا 255 خواهد بود درصورت درست بودن شرط حلقه ادامه خواهد داشت ینی در اینجا اگه به 256 رسید حلقه تموم شده و برنامه از حلقه خارج میشه
          پارامتر سوم هم نحوه اجرای حلقه خواهد بود که در اینجا i++ بوده ینی تو هر بار تکرار به مقدار متغیر اضافه میشه
          خوب تو حلقه اول با توجه به پارمتراش ما میگیم که ولتاژمون از صفر منطقی شروع بشه تا یک منطقی (255)
          و در حلقه دوم برعکس حلقه اول ینی ولتاژمون از یک منطقی (255) شروع میشه تا 0
          بدین صورت تغییر نور یا همون کنترل نورLED با PWM رو انجام دادیم ...
          فیلمی از نتیجه کار رو از لینک زیر میتونین مشاهده کنین :



          جدیدترین ویرایش توسط علی چمانی; ۱۰:۴۳ ۱۳۹۶/۰۶/۲۸.

          دیدگاه


            #6
            پاسخ : من یک تازه کار با برد آردوینو UNO هستم !!

            کنترل نورLED با فتوسل(LDR)
            سلام ما از بحث این led کی خلاص میشیم خدا میداند
            امروز میخوام کنترل نور led با فتوسل رو اجرایی کنم و مدارو کداشو بذارم ...
            اول از همه باید بدونیم اصلا فتوسل یا همون ldr چیه که من خودم توی تاپیک زیر اطلاعات کاملی از فتوسل و اجزای داخلی ،نحوه کارکرد و انواع کاربرد و... نوشتم :

            اگه مطالعه کرده باشین تاپیک رو این سنسور سنسوری انالوگ هستش

            این سنسور هم به صورت ورودی عمل میکنه قبلا از کلید به عنوان ورودی استفاده کردیم با این تفاوت که که از پایه های دیجیتال استفاده کردیم الان با توجه به سنسورمون باید از پایه های آنالوگ اردوینو استفاده کنیم ... برای ورودی های دیجیتال از دستور digtalRead استفاده میکردیم کاربرد ما بدین صورت هستش که میخوایم بدونیم که به فلان پایه ایا ولتاژی اعمال شده یا نه ؟؟
            تو کلید ما با فشردن کلید در واقع ولتاژ در پایه رو اعمال میکنیم ینی به صورت کاملا دستی
            ولی اینجا ما سنسوری داریم که با توجه به تکنولوژی خودش نسبت به نور محیط به پایه مورد نظرمون ولتاژ اعمال میکنه در واقع ما باید محدوده روشنایی هم مشخص کنیم ....برای ورودی های آنالوگ از دستور analogRead استفاده میکنیم !
            بر روی برد آردوینو 6 پایه وجود داره که با نام “Analog In” مشخص شده ( پایه های A0 تا A5).
            و ما اینجا از پایه A0 استفاده میکنیم...
            بریم سر اصل مطلب
            هدفمون از این پروژه اینه که وختی هوا روشنه LED مون خاموش بشه و وختی هوا تاریک شد LED مون خاموش شه دقیقا کار چراغ های خیابون
            مدار رو طبق عکس زیر میبندیم :



            برای استفاده از فتوسل نیاز داریم که محدود روشنایی محیط کار خودمون رو بدونیم تا تو برنامه ازشون استفاده کنیم برای این کار یه برنامه رو مینویسیم به شکل زیر و با استفاده از کنسول اردوینو و تست فتوسل محدوده رو مشخص میکنیم :
            کد برنامه بدین شکل هشتش:



            [LEFT]int sensorpin = A0;


            void setup() {
            pinMode(sensorpin,OUTPUT);
            Serial.begin(9600);
            }

            void loop() {
            int sensorpin = analogRead(sensorpin);
            Serial.println(sensorpin);
            delay(1000);

            }
            [/LEFT]

            کنسول اردوینو رو باز میکنیم

            عدد نمایش داده شده در حالت عالی برای من 168 هستش دستم رو روی فتوسل میگیرم عددی که نمایش میده حدود 79 هست بدین صورت ینی محدوده روشنایی فضای من حدودا 50 تا 170 هست خوب کد اصلی برنامه رو به صورت زیر مینویسیم:



            const int LED = 13;
            int sensorval = 0;


            void setup() {
            pinMode(LED,OUTPUT);

            }

            void loop() {
            sensorval = analogRead(0);
            if (sensorval < 85)
            digitalWrite(LED ,HIGH);
            if (sensorval < 170)
            digitalWrite(LED ,LOW);


            }


            خوب تو خط اول برنامه پایه led مون و متغیرمون رو تعریف کردیم
            در تابع setup
            میگیم که led مون به عنوان خروجی خواهد بود
            در تابع loop
            تو خط اول میگیم که بره و فتوسل رو بررسی کنی که تو کدوم محدود روشنایی قرار داره
            حالا دو تا شرط if تعریف میکنیم
            شرط اول این هست که اگه ورودی ldr کمتر از 85 بود ledمون روشن بشه و در شرط دوم برعکسشو گفتیم ینی اگه کمتر از 170 بود led مون باید خاموش باشه
            نتیجه رو میتونین تو لینک زیر مشاهده کنین:

            دیدگاه


              #7
              پاسخ : من یک تازه کار با برد آردوینو UNO هستم !!

              به صورت کلی پروژه های ساده با اردوینو تا دلتون بخواد هست و این مباحث به نظرم به اندازه کافی در سطح انجمن موجوده! ایا بهتر نیست پروژه های قوی تری رو پوشش بدین و شروع به اموزش اونها کنید؟
              چرا ناراحتی پاتریک!
              + امروز ی بچه دیدم سرچهارراه گل میفروخت
              - از دیدنش ناراحت شدی؟
              + نه
              پس چی ناراحتت کرده
              + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
              ------------------------------------------------------------------------------------------------------
              تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
              ------------------------------------------------------------------------------------------------------
              محصولات

              دیدگاه


                #8
                پاسخ : من یک تازه کار با برد آردوینو UNO هستم !!

                نوشته اصلی توسط سوران آراسته نمایش پست ها
                به صورت کلی پروژه های ساده با اردوینو تا دلتون بخواد هست و این مباحث به نظرم به اندازه کافی در سطح انجمن موجوده! ایا بهتر نیست پروژه های قوی تری رو پوشش بدین و شروع به اموزش اونها کنید؟
                سلام
                صددرصد که هست ولی مهندس جان این تاپیک با عنوان تازه کار ، شروع از صفر آردوینو رو پوشش میده و انشاا... روز به روز و مرحله به مرحله پروژه ها قوی تر کار خواهد شد البته با کمک دوستانی مثل شما ...
                جدیدترین ویرایش توسط علی چمانی; ۱۲:۲۵ ۱۳۹۶/۰۴/۱۴.

                دیدگاه


                  #9
                  پاسخ : من یک تازه کار با برد آردوینو UNO هستم !!

                  سلام
                  بالاخره مبحث LED رو تموم میکنم و میرسیم به راه اندازی موتور ....
                  میخوام یکم توضیحات رو کم کنم اگه مشکلی بود پیام بدین حل کنیم ...
                  بنا به اطلاعاتی که من دارم ما نمیتونیم موتور رو به طور مستقیم به آردوینو وصل کنیم چرا ؟
                  چون هر پایه آردوینو حداکثر 5 ولت و 40 میلی آمپر میکشه ینی چند وات ؟
                  P=V.I ینی حدود 200 میلی وات !!!
                  اگه حالا شما بخواید یه موتور 10 واتی رو راه اندازی کنین اگه مستقیم وصل کنین برد کلا میترکه !!
                  برا حل این مشکل از واسط (ای سی یا ماژول) به عنوان درایور موتورمون باید استفاده کنیم
                  من از ماژول L298 به عنوان درایورم استفاده کردم که طبق دیتاشیتش شما میتونین تا حدود 200 وات موتور راه اندازی کنین از لینک زیر هم اطلاعات کاملشو ببینین :

                  دیتاشیت این ماژول :


                  با استفاده از این ماژول ما میتونیم دو موتور تا 2 آمپر رو راه اندازی کنیم ...ولتاژ ورودی این ماژول 5 تا 12 ولت هستش که روی ورودی ماژول مشخص شده نحوه اتصالش ...

                  خوب مدارمون رو طبق عکس زیر میبندیم :




                  به این نقطه توجه کنین که باید GND ماژول و برد آردوینومون مشترک باشه !!!
                  کد های برنامه :




                  int motorpin1 = 4 ;
                  int motorpin2 = 5 ;

                  void setup() {

                  pinMode(motorpin1,OUTPUT);
                  pinMode(motorpin2,OUTPUT);


                  }

                  void loop() {
                  analogWrite(motorpin1,0);
                  analogWrite(motorpin2,255);


                  }


                  راستشو بخواین الان من این برنامه رو نوشتم ولی تو عمل کار نمیکنه اصلا و جالبه LED روی اردوینو روشن میشه !!!؟؟؟
                  یک استعداد به خرج دادم توی برنامه LED آردوینو که همون پایه 13 هستش رو تعریف کردم و خاموش کردمش و موتور به راه افتاد دوستان کسی میتونه دلیل این اتفاق رو بگه ؟؟؟
                  کد برنامه ای که کار کرد :

                  int motorpin1 = 4 ;
                  int motorpin2 = 5 ;
                  int LED = 13;
                  void setup() {

                  pinMode(motorpin1,OUTPUT);
                  pinMode(motorpin2,OUTPUT);
                  pinMode(LED,OUTPUT);

                  }

                  void loop() {
                  analogWrite(motorpin1,0);
                  analogWrite(motorpin2,255);
                  digitalWrite(13,LOW);

                  }

                  حالا بگذریم یکم توضیح در مورد برنامه :
                  در حالت کلی برای اینکه یه موتور رو راه اندازی کنیم باید بین ورودی های موتوری اختلاف ولتاژ به وجود بیاریم البته باید توجه به ولتاژ ورودی موتور بکنین چون اگه ولتاژ بیشتری بدین بهش صددرصد سوخته پس توجه داشته باشین!
                  جهت ولتاژ دادن به موتور از دو پین دیجیتال استفاده میکنیم که اینجا من از پایه های 4 و 5 بهره بردم دستور لازم برای راه اندازی موتور دستور analogWrite هستش ینی ما باید به کمک این دستور اختلاف ولتاژ بین پایه های مورد نظرمون ایجاد کنیم ینی باید دو تا دستور پست سر هم داشته باشیم :

                  analogWrite(motorpin1,0);
                  analogWrite(motorpin2,255);
                  مبحث pwm اگه یادتون باشه موتور هم از این قانون استفاده میکنه بدین صورت که ما میتونیم بین 0 و 5 ولت ولتاژ بدیم به پایه های مورد نظرمون
                  دستور analogWrite دارای دو پارامتر هستش که پارامتر اول شماره پین پایه مورد و پارامتر دوم مقدار ولتاژ اعمالی به پایه رو نشون میده
                  که عددی بین 0 تا 255 خواهد بود ...
                  در اینجا ما به پایه اول 0 و به پایه دوم 255 (5ولت ) رو دادیم و اختلاف ولتاژ بین پایه ها ایجاد شد و موتورمون به راه افتاد ...


                  فیلم نتیجه کارمون:
                  جدیدترین ویرایش توسط علی چمانی; ۱۲:۲۵ ۱۳۹۶/۰۴/۱۴.

                  دیدگاه


                    #10
                    پاسخ : من یک تازه کار با برد آردوینو UNO هستم !!

                    سلام از دوستان کسی دلیل عمل نکردن کد زیر رو که تو پست قبلی گفتم عمل نکرد و موتور رو راه اندازی نکرد رو میدونه ؟
                    با این برنامه LED خود اردوینو روشن میشه و من تو برنامه این LED رو خاموش میکنم موتورم شروع به کار میکنه !!!



                    int motorpin1 = 4 ;
                    int motorpin2 = 5 ;

                    void setup() {


                    pinMode(motorpin1,OUTPUT);
                    pinMode(motorpin2,OUTPUT);



                    }

                    void loop() {
                    analogWrite(motorpin1,0);

                    analogWrite(motorpin2,255);




                    }


                    دیدگاه


                      #11
                      پاسخ : من یک تازه کار با برد آردوینو UNO هستم !!

                      من با اردوینو زیاد کار نکردم و حقیقتا زیاد مورد پسندم نیست اما اطلاعات جزئی دارم شاید به درد بخوره.

                      باید قبل از کار دقت کنید پین هایی که می تونید به صورت خروجی PWM قرار بگیرند با علامت ~ مشخص شده اند که این حالت شامل پین شماره 4 که شما قرار دادین نمیشه!
                      در مورد اتصالات موتور و درایور نمی دونم چیکار کردید ولی قبل از اتصال برد اردوینو به درایور خروجی هارو به یک LED سری شده با مقاومت متصل کنید و با یک تاخیر مشخص مقدار دیوتی سایکل رو تغییر بدین تا نتیجه تغییرات رو ببینید. اگر نور LED تغییر کرد اون وقت در مورد درایور موتور عرض می کنم که چی به چیه.

                      دیتاشیت L298 رو بررسی کنید- شماتیکتون به کل اشتباهه. در L298 دو پین جهت تغییر گردش موتور و یک پین جهت اعمال PWM هستش.

                      موفق باشید
                      جدیدترین ویرایش توسط سوران آراسته; ۱۷:۰۱ ۱۳۹۶/۰۴/۱۵.
                      چرا ناراحتی پاتریک!
                      + امروز ی بچه دیدم سرچهارراه گل میفروخت
                      - از دیدنش ناراحت شدی؟
                      + نه
                      پس چی ناراحتت کرده
                      + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                      ------------------------------------------------------------------------------------------------------
                      تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                      ------------------------------------------------------------------------------------------------------
                      محصولات

                      دیدگاه


                        #12
                        پاسخ : من یک تازه کار با برد آردوینو UNO هستم !!

                        راه اندازی lcd 2x16 کاراکتری با شیلد مخصوص وآردوینو UNO
                        سلام میخواستم در ادامه کار با UNO یدونه LCD کاراکتری رو راه اندازی کنم که دوستان راهنمایی کردند و استفاده از شیلد آردوینو رو پیشنهاد دادند که دیگه نیازی به سیم کشی و ... نباشه انصافا این شیلد خیلی باحال و کاربردی فک کنم به کار خیلیا بیاد منظورم این شیلده :
                        شیلد LCD کاراکتری 2x16

                        این شیلد رو میتونید تو همه اردوینو ها استفاده کنید ولی برای آردوینو UNO کاملا جفت میشه و با شکلش مطابقت داره !
                        دیتاشیتی از پایه های این شیلد رو تو عکس زیر میتونین ببینین


                        کد برنامه پیش فرض برای راه اندازی این شیلد به شکل زیر است :
                        #include <LiquidCrystal.h>

                        LiquidCrystal lcd(8,9,4,5,6,7);

                        void setup()
                        {
                        lcd.begin(16,2);
                        lcd.clear();
                        lcd.setCursor(2,0);
                        lcd.print("Hi Engineer");
                        lcd.setCursor(3,1);
                        lcd.print("www.ECA.ir");
                        }
                        void loop()
                        {

                        }
                        تو خط اول کتابخانه lcd کاراکتری رو اضافه کردیم
                        تو خط دوم با استفاده از تابع LiquidCrystal lcd پایه های lcd که به شیلد وصل شدن و من از دیتاشیت خود شیلد برداشتم رو تعریف میکنیم
                        این برنامه اولین برنامه ای هست که میخوایم استفاده کنیم و در واقع شروع کنیم کار با lcd کاراکتری رو ....
                        تو این برنامه از تابع loop استفاده نمیکنیم چون تکراری در کار نخواهد بود و میخوایم یه بار برنامه برامون اجرا شه !!
                        ینی چی ؟ ینی فقط از تابع setup استفاده میکنیم
                        تو تابع setup
                        خط اول نوع lcd مون رو مشخص میکنیم با دستور lcd.begin که دارای دو پارامتره پارامتر اول تعداد ستون(16) و دوم تعداد ردیف (2)!
                        چون ما از نوع 2x16 استفاده میکنیم پس دستورمون به صورت lcd.begin(16,2); خواهد بود .
                        تو سطر دوم میایم lcd رو کامل پاک میکنیم
                        سطر سوم دستور lcd.setCursor
                        این دستور جهت مشخص کردن موقعیت متنمون هست ینی میگیم متن ما تو کجای نمایشگر باید قرار بگیره این دستورم دارای دو پارامتره که پارامتر اول شماره ستون lcd و پارامتر دوم شماره سطر یا ردیف مورد نظر هست که تو اینجا یا 1 خواهد بود یا 0 ! 0 در واقع ردیف بالای lcd هست و 1 ردیف پایین !!
                        دستور lcd.setCursor(2,0); ینی ما میخوایم تو ردیف بالا (0) و ستون 2 متن اولمونو بنویسیم
                        خوب این از مکان متن میرسیم به خود متن
                        با استفاده از دستور lcd.print("Hi Engineer"); این کار انجام میشه که متن مورد نظر ما Hi engineer هستش
                        سطر دیگه برنامه هم دقیقا بدین صورت هستش


                        دیدگاه


                          #13
                          پاسخ : من یک تازه کار با برد آردوینو UNO هستم !!

                          نوشته اصلی توسط علی چمانی نمایش پست ها
                          راه اندازی lcd 2x16 کاراکتری با شیلد مخصوص وآردوینو UNO
                          چقدر رسوم تغییر کرده!
                          صرفا جهت اطلاع و اشنایی دوستان میگم در خط دوم یک شی یا object با نام lcd تعریف شده و LiquidCrystal lcd تابع نیست!
                          بسیاری از توابع آردوینو با استفاده از زبان سی پلاس پلاس و خاصیت شی گرایی نوشته شده.

                          باشد که رستگار شویم
                          چرا ناراحتی پاتریک!
                          + امروز ی بچه دیدم سرچهارراه گل میفروخت
                          - از دیدنش ناراحت شدی؟
                          + نه
                          پس چی ناراحتت کرده
                          + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                          ------------------------------------------------------------------------------------------------------
                          تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                          ------------------------------------------------------------------------------------------------------
                          محصولات

                          دیدگاه


                            #14
                            پاسخ : من یک تازه کار با برد آردوینو UNO هستم !!

                            نوشته اصلی توسط سوران آراسته نمایش پست ها
                            چقدر رسوم تغییر کرده!
                            صرفا جهت اطلاع و اشنایی دوستان میگم در خط دوم یک شی یا object با نام lcd تعریف شده و LiquidCrystal lcd تابع نیست!
                            بسیاری از توابع آردوینو با استفاده از زبان سی پلاس پلاس و خاصیت شی گرایی نوشته شده.

                            باشد که رستگار شویم
                            رستگارم میشیم مهندس

                            دیدگاه


                              #15
                              پاسخ : من یک تازه کار با برد آردوینو UNO هستم !!

                              در ادامه بحثمون راجب LCD کاراکتری چند نمونه از دستورات LCD رو بررسی میکنیم و یک برنامه هم در این رابطه نوشته و اجرا میکنیم تا قابل فهم تر بشه!
                              [LEFT]lcd.begin(column, rows);
                              [/LEFT]



                              جهت تعریف LCD مون از این تعریف استفاده میکنیم column تعداد ستون و rows تعداد ردیف خواهد بود .
                              [LEFT]lcd.clear();
                              [/LEFT]



                              جهت پاک کردن کامل صفحه نمایش مورد استفاده قرار میگیرد.
                              [LEFT]lcd.setCursor(column, row);
                              [/LEFT]


                              جهت مشخص کردن موقعیت متنمون به اصطلاح موقعیت مکان نما از این دستور استفاده میشود .(توجه کنیم که شماره ستون و ردیف از صفر شروع میشه)
                              [LEFT]lcd.print(data);
                              [/LEFT]

                              جهت نمایش کاراکتر مورد استفاده قرار میگیرد در صورتی مه بخواهیم از عدد استفاده کنیم باید از دستور زیر استفاده کنیم :
                              [LEFT]lcd.print(data, BASE);
                              [/LEFT]

                              که پارامتر دوم فرمت نمایش(مبنا) عدد رو نشون میده

                              lcd.cursor();
                              lcd.noCursor();

                              جهت نمایش و عدم نمایش زیر خط از این دستور استفاده میشود .


                              lcd.blink();
                              lcd.noBlink();


                              جهت نمایش مکان نما به صورت یک مربع چشمک زن بر روی LCD
                              خط دوم هم جهت عدم نمایش مکان نما مورد استفاده قرار میگیرد.

                              lcd.display();
                              lcd.noDisplay();

                              جهت روشن خاموش کردن موقت صفحه نمایش (میشه گفت چشمک زن )مورد استفاده قرار میگیرد.
                              [LEFT]

                              lcd.scrollDisplayRight();


                              [/LEFT]


                              با استفاده از این تابع تمام اطلاعات بر روی صفحه نمایش یک واحد ( یک ستون) به سمت راست منتقل می*شود.

                              [LEFT]lcd.scrollDisplayleft();
                              [/LEFT]


                              با استفاده از این تابع تمام اطلاعات بر روی صفحه نمایش یک واحد ( یک ستون) به سمت چپ منتقل می*شود.
                              برخی از دستورات LCD رو مرور کردیم به عنوان نمونه من برنامه زیر رو نوشتم تا قابل درک تر بشه این دستورات:
                              #include <LiquidCrystal.h>

                              LiquidCrystal lcd(8,9,4,5,6,7);

                              void setup()
                              {
                              lcd.begin(16,2);

                              }
                              void loop()
                              {
                              lcd.setCursor(2,0);
                              lcd.print("Hi Engineers");
                              lcd.setCursor(3,1);
                              lcd.print("www.ECA.ir");
                              lcd.noDisplay();
                              delay(3000);
                              lcd.display();
                              delay(3000);
                              lcd.noDisplay();
                              delay(3000);
                              lcd.display();
                              delay(3000);

                              for (int positionCounter = 0; positionCounter < 13; positionCounter++) {
                              lcd.scrollDisplayLeft();
                              delay(300);
                              }

                              for (int positionCounter = 0; positionCounter < 29; positionCounter++) {
                              lcd.scrollDisplayRight();
                              delay(300);
                              }

                              for (int positionCounter = 0; positionCounter < 16; positionCounter++) {

                              lcd.scrollDisplayLeft();
                              delay(300);
                              }
                              delay(1000);
                              lcd.clear();
                              lcd.setCursor(2,0);
                              lcd.print("Ali Chamaani");
                              lcd.noDisplay();
                              delay(2000);
                              lcd.display();
                              delay(2000);
                              lcd.noDisplay();
                              delay(2000);
                              lcd.display();
                              delay(2000);


                              lcd.clear();


                              }


                              خط اول جهت فراخوانی کتابخونمونه
                              خط دوم جهت معرفی پایه ها به برد
                              در SETUP نوع LCD کاراکتری مون که 2X16 هستش رو معرفی کردیم
                              در LOOP بدنه اصلی برنامون قرار داره که مدام تکرار خواهد شد:
                              هدف کلی برنامه مون این هستش که ما میخوایم متنمون اول دو بار چشمک بزنه بعد به سمت چپ و راست شیفت پیدا کنه (جهت چپ و راست شدن متنمون از سه تا حلقه for استفاده شده )
                              سپس متنمون عوض میشه و دو بار چشمک میزنه و متن پاک و به اول loop برمیگرده و هی تکرار میشه این روال...
                              جهت مشاهده نتیجه برنامه به صورت فیلم روی لینک زیر کلیک کنین :

                              دیدگاه

                              لطفا صبر کنید...
                              X