اموزش برنامه نویسی آردوینو Arduino (جلسه هشتم) :
بعد از اشنایی با برنامه نویسی c که با عنوان ” برنامه نویسی میکروکنترلر و اردوینو (جلسه 1 تا 6) ” اموزش داده شد, برای شروع کار با اردوینو شما باید با یک سری دستورات خاص که در نرم افزار اردوینو استفاده می شود اشنا شوید. در پایین مهم ترین این دستورات به طور کامل و با ذکر مثال معرفی شده اند :
ثابت ها :
| توضیحات | دستور |
| به عنوان صفر تلقی می شود | false |
| دارای تعریف بزرگتری است به این صورت که هر داده ای از نوع integer که صفر نباشد true است | true |
| به معنی یک منطقی | HIGH |
| به معنی صفر منطقی | LOW |
| اگر پینی به عنوان ورودی تنظیم شود و به این پین یک کلید وصل شود ، در حالتی که کلید باز است ، ورودی را نمیتوان پیشبینی کرد مگر اینکه این پین را pull-up یا pull-down کرد. در این صورت زمانی که کلید فشار داده شود حالت ورودی تغییر میکند و وضعیت پین تعیین میشود.
مقاومتی که برای این استفاده میشود 10کیلو است.
|
INPUT |
| میکروکنترلر Atmega در بوردآردوینو دارای مقاومت pull-up داخلی است که میتوان به جای pull-up خارجی از آن استفاده کرد برای این کار کافی است که در تابع ()pinMode از عبارتINPUT_PULLUP استفاده کرد. | INPUT_PULLUP |
| زمانی که پینی به عنوان خروجی تنظیم شود آنگاه Atmega میتواند تا 40mA جریان خروجی برای دستگاهها یا مدارات خارجی فراهم کند و این جریان برای تغذیه یک LED مناسب است چون LED معمولی کمتر از 40mA جریان استفاده میکند و در صورتی به جریان بیشتر از 40mA نیاز باشد باید از ترانزیستور یا مدارات دیگر استفاده کرد. | OUTPUT |
توابع ورودی/خروجی دیجیتال :
دستور ()pinMode
تابع pinMode برای تعیین ورودی و خروجی یک پین به کار می رود.
| طریقه نوشتن | مثال |
| (pinMode(pin,mode | ;(pinMode(13, OUTPUT |
Pin : شماره پین در این قسمت قرار می گیرد.
mode : یکی از حالت های INPUT ، OUTPUT ، INPUT_PULLUP می تواند باشد.
دستور digitalWrite
این تابع بر روی پین های دیجیتال مقادیر LOW یا HIGH ایجاد می کند
| طریقه نوشتن | مثال |
| (digitalWrite(pin,value | ;(digitalWrite(13, HIGH |
pin: شماره پینی که روی آن نوشته می شود.
value: یکی از مقادیر HIGH یا LOW می باشد.
دستور digitalRead
تابع digitalRead از روی پین های دیجیتال مقادیر LOW یا HIGH را می خواند
| طریقه نوشتن | مثال |
| (digitalRead(pin | ;(digitalRead(7 |
pin: شماره پینی که از روی آن خوانده می شود.
توابع ورودی/خروجی آنالوگ :
| توضیحات | دستور |
| ولتاژ مبنا یا reference را برای کار با ورودی انالوگ مشخص میکند
Type : یکی از گزینه های پایین
|
(analogReference(type |
| در صورتی که خروجی یک سنسور آنالوگ به پایه های آنالوگ آردوینو وصل شود (برای هر سنسور یک پایه کافی است) ، آردوینو این ولتاژ را به دیجیتال از نوع 10 بیت تبدیل می کند یعنی مقدار صفر تا ولتاژ پایه(Reference) را به صفر تا 1023 قسمت تبدیل می کند
pin : شماره یکی از پینهای آنالوگ است. خروجی عددی بین 0 تا 1023 می باشد. |
(analogRead(pin |
| ایجاد ولتاژ انالوگ (موج (PWM روی پین .
Pin : پین مورد نظر ( این پین باید قابلیت سخت افزاری تولید موج pwm را داشته باشد) Value : دیوتی سایکل موج شما می باشد که باید عددی بین 0 تا 255 باشد. |
(analogWrite(pin, value |
دستور (delay(ms :
این دستور باعث تاخیر زمانی بر حسب میلی ثانیه در برنامه می شود.
ms : مقدار تاخیر زمانی ( عددی هست بر حسب میلی ثانیه )
بجز دستوراتی که در بالا معرفی کردم, دستورات دیگه ای هم وجود داره ولی مهم ترینش همینا هستن که با یادگیریشون میتونید شروع به برنامه نویسی کنید. در پست های بعدی هم در مورد محیط برنامه نویسی اردوینو و نحوه نصب و … توضیح خواهم داد.
نظر یادتون نره …
اموزش برنامه نویسی آردوینو Arduino :
- جلسه 1 : برنامه نویسی میکروکنترلر و اردوینو: انواع متغیر در زبان C
- جلسه 2 : برنامه نویسی میکروکنترلر و اردوینو: عملگرها بخش ۱
- جلسه 3 : برنامه نویسی میکروکنترلر و اردوینو: عملگرها بخش ۲
- جلسه 4 : برنامه نویسی میکروکنترلر و اردوینو: عملگرها بخش ۳
- جلسه 5 : برنامه نویسی میکروکنترلر و اردوینو: حلقه های تکرار
- جلسه 6 : برنامه نویسی میکروکنترلر و اردوینو: جملات شرطی
- جلسه 7 : آردوینو (Arduino) چیست ؟
- جلسه 9 : اشنایی با محیط برنامه نویسی آردوینو ARDUINO
- جلسه 10(اخر) : اموزش اردوینو : اجرای مثال Blink (اموزش پروگرام کردن)
- انواع برد اردوینو Arduino





سلام یه سئوال داشتم
من یه کد ساده نوشتم و دو عدد را در هم ضرب می کنم، ولی نتیجه درستی نمی دهد چرا؟
مشکل برد است؟ یا آردوینو؟
کدش اینه:
long a=99999999;
long b=100;
double c=a*b;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println(c);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println(c);
}
مشکل از برد نیست. یک اشکال در کد شما وجود دارد. در خط
double c=a*b;, a و b هر دو int پشت سر هم قرار گرفته اند، که باعث می شود این یک آدرس حافظه در آردوینو باشد. به همین دلیل c یک دهم در میلیون به جای ۱۰۰ هزار می شود. برای حل این مشکل می توانید این خط را به شرح زیر تغییر دهید:long a=99999999;
long b=100;
long c=a*b;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println(c);
}
این باعث می شود که c به جایdouble ,long شود.
یا اگر به درستی متوجه نشدی میتونم اینجوری بگم که
نخست اینکه شما هر دو متغیر a و b را در نوع اعداد صحیح (integer) تعریف کردهید، اما در خط c=ab از نوع دابر (double) برای متغیر c استفاده کردهاید. برای حل این مشکل میتوانید در خط c=ab از نوع long برای c استفاده کنید:
دوم اینکه در خط double c=ab; به جای c=ab از سرراهی (c = cb;) استفاده کردهاید. برای حل این مشکل، میتوانید از سرراهی (a=ab;) برای پیشرفت از int به long استفاده کنید:
long a=99999999;
long b=100;
long c;
void setup() {
// put your Setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
c = a;
c *= b;
Serial.println(c);
}
بسیار واضع روشن وکاربردیست. سپاس بیکران تورا استاد گل
سلام
عالی
با تشکر
بسیار ساده و روان،ممنون از شما.
واقعا دمت گرم عالی بود
خیلی مرتب و کامل بود و آدم گیج نمیشه
ممنون
عالی
سلام
عالی بود
سلام آموزش تکمیل تر و جامع دستورات و مثال ها رو چطور میتونم ازتون بگیرم؟؟
سلام, پروژه های اردوینو موجود در سایت را بررسی کنید و بصورت عملی انجام دهید
با سلام
خواستم تشکر کنم بابت وقتی که گذاشتید
واقعا روان و واضح بود توضیحاتتون
اجرکم عندالله
سلام
من میخوام یه چراغ رو(led)با پین های آنالوگ روشن کنم و نه دیجیتال
اما نمیدونم چرا هم از دستور digitalwrite و هم از analogwrite استفاده کردماما برقی روی پین های آنالوگ نمیاد.
درضمن بلدم ساختار اینها رو و ایراد از ساختار دستورم نیست
سلام, از دستور digitalWrite باید استفاده کنید و به عنوان مثال برای پین انالوگ A0 باید به این صورت
digitalWrite(A0, HIGH)وارد کنیدسلام
عالی
فقط اون ولتاژ زفرنسو نفهمیدم چطوری تعیین کنم
سلام, پست “راه اندازی ADC در آردوینو” را مطالعه کنید. میتونه مفید باشه
سلام جناب مهندس , خسته نباشید. مطالب بسیار عالی وکاربردی است.
بسیار عالی بود ممنون.