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

برنامه ای برای نوشتن اسکچ آردوینو. آردوینو: نمونه هایی از کارهایی که می توان انجام داد

روز بخیر، هابر. من در حال راه اندازی یک سری مقاله هستم که به شما کمک می کند تا با آردوینو آشنا شوید. اما این بدان معنا نیست که اگر در این تجارت تازه کار نیستید، چیز جالبی برای خود پیدا نمی کنید.

معرفی

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

شروع کنید

ایجاد یک پروژه در آردوینو شامل 3 مرحله اصلی است: نوشتن کد، نمونه سازی (breadboarding) و سیستم عامل. برای نوشتن کد و سپس فلش کردن برد، به یک محیط توسعه نیاز داریم. در واقع تعداد کمی از آنها وجود دارد، اما ما در محیط اصلی - Arduino IDE برنامه ریزی خواهیم کرد. ما خود کد را در C++ که برای آردوینو اقتباس شده است می نویسیم. می توانید آن را در وب سایت رسمی دانلود کنید. اسکچ برنامه ای است که روی آردوینو نوشته می شود. بیایید به ساختار کد نگاه کنیم:


main())( void setup())() void loop())())

لازم به ذکر است که پردازنده آردوینو تابع main() را ایجاد می کند که در C++ مورد نیاز است. و نتیجه چیزی که برنامه نویس می بیند این است:


void setup() () void loop() ()

بیایید به دو تابع مورد نیاز نگاه کنیم. تابع setup() تنها یکبار در هنگام راه اندازی میکروکنترلر فراخوانی می شود. این اوست که تمام تنظیمات اولیه را تنظیم می کند. تابع حلقه () چرخه ای است. در کل زمان کارکرد میکروکنترلر در یک حلقه بی پایان فراخوانی می شود.

برنامه اول

برای درک بهتر اصل عملکرد پلت فرم، اجازه دهید اولین برنامه را بنویسیم. ما این ساده ترین برنامه (Blink) را در دو نسخه اجرا خواهیم کرد. تنها تفاوت آنها در مونتاژ است.


int LED = 13; // متغیر Led را روی پایه 13 اعلام کنید (خروجی) void setup() (pinMode(Led, OUTPUT); // متغیر را تعریف کنید) void loop() ( digitalWrite(Led, HIGH)؛ // اعمال ولتاژ به تاخیر پایه 13 (1000)؛ // 1 ثانیه صبر کنید DigitalWrite (Led، LOW)؛ // ولتاژ را به تاخیر پین 13 اعمال نکنید (1000)؛ // 1 ثانیه صبر کنید)

اصل کار این برنامه بسیار ساده است: LED برای 1 ثانیه روشن می شود و برای 1 ثانیه خاموش می شود. برای گزینه اول، ما نیازی به مونتاژ طرح نداریم. از آنجایی که پلتفرم آردوینو دارای یک LED داخلی است که به پین ​​13 متصل است.

سیستم عامل آردوینو

برای آپلود یک طرح در آردوینو، ابتدا باید آن را به سادگی ذخیره کنیم. در مرحله بعد، برای جلوگیری از بروز مشکل در هنگام بارگذاری، باید تنظیمات برنامه نویس را بررسی کنید. برای انجام این کار، تب "ابزار" را در پانل بالا انتخاب کنید. در بخش «پرداخت»، پرداخت خود را انتخاب کنید. این می تواند Arduino Uno، Arduino Nano، Arduino Mega، Arduino Leonardo یا دیگران باشد. همچنین در بخش "پورت" باید پورت اتصال خود را انتخاب کنید (پورتی که پلتفرم خود را به آن متصل کرده اید). بعد از این مراحل می توانید طرح را آپلود کنید. برای انجام این کار، روی فلش کلیک کنید یا "دانلود" را در برگه "Sketch" انتخاب کنید (همچنین می توانید از میانبر صفحه کلید "Ctrl + U" استفاده کنید). سیستم عامل برد با موفقیت تکمیل شد.

نمونه سازی/طراحی

برای مونتاژ تخته نان به عناصر زیر نیاز داریم: LED، مقاومت، سیم کشی (پرش)، تخته نان. برای اینکه چیزی نسوزند و برای اینکه همه چیز با موفقیت کار کند، باید با LED مقابله کنید. دو "پا" دارد. کوتاه یک منهای است، بلند یک مزیت است. زمین (GND) و یک مقاومت را به مقاومت کوتاه وصل می کنیم (برای اینکه جریان عرضه شده به LED را کاهش دهیم تا آن را نسوزند) و به طول (به پایه 13 متصل شوید) برق می دهیم. پس از اتصال، اگر قبلاً این کار را نکرده‌اید، طرح را روی برد آپلود کنید. کد ثابت می ماند.


این پایان قسمت اول است. با تشکر از توجه شما.

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

برای برنامه نویسی به زبان C به AVR GCC Toolchain نیاز داریم.

همچنین به Arduino IDE نصب شده نیاز داریم، زیرا... این شامل ابزار avrdude است که برای دانلود سیستم عامل در کنترلر مورد نیاز است. کراس پک نیز حاوی avrdude است، اما نسخه ای که همراه آن است با آردوینو کار نمی کند.

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

#کنترل بر روی برد نصب شده است. ممکن است متفاوت باشد، برای مثال atmega328 DEVICE = atmega168 #فرکانس ساعت 16 مگاهرتز CLOCK = 16000000 #دستور راه اندازی Avrdude. باید از Arduino IDE کپی شود. AVRDUDE = /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.con. -carduino -P/dev/tty.usbserial-A600dAAQ -b19200 -D -p atmega168 OBJECTS = main.o COMPILE = avr-gcc -Wall -Os -DF_CPU=$(CLOCK) -mmcu=$(DEVICE) همه: اصلی .hex .c.o: $(COMPILE) -c $< -o $@ .S.o: $(COMPILE) -x assembler-with-cpp -c $< -o $@ .c.s: $(COMPILE) -S $< -o $@ flash: all $(AVRDUDE) -U flash:w:main.hex:i clean: rm -f main.hex main.elf $(OBJECTS) main.elf: $(OBJECTS) $(COMPILE) -o main.elf $(OBJECTS) main.hex: main.elf rm -f main.hex avr-objcopy -j .text -j .data -O ihex main.elf main.hex avr-size --format=avr --mcu=$(DEVICE) main.elf

در این فایل باید دستور خود را برای راه اندازی avrdude وارد کنیم. در سیستم های مختلف متفاوت به نظر می رسد. برای پیدا کردن گزینه خود، Arduino IDE را راه اندازی کنید و کادر "نمایش خروجی کامل هنگام آپلود" را در تنظیمات علامت بزنید.

اکنون هر طرحی را در آردوینو بارگذاری می کنیم و به پیام های نمایش داده شده در پایین پنجره نگاه می کنیم. ما فراخوانی avrdude را در آنجا پیدا می کنیم، همه چیز را به جز پارامتر -Uflash کپی می کنیم و آن را بعد از "AVRDUDE =" در Makefile قرار می دهیم.


یک نکته سریع: تمام تورفتگی در Makefile با کاراکترهای تب (کلید Tab) انجام می شود. اگر ویرایشگر متن شما این کاراکترها را با فاصله جایگزین کند، دستور make از ساخت پروژه خودداری می کند.

حالا بیایید یک فایل بسازیم main.c- متن واقعی برنامه ما، که در آن به طور سنتی LED را چشمک می زنیم.

#عبارتند از #عبارتند از #define LED_PIN 5 int main() (DDRB |= 1<< LED_PIN; while(1) { PORTB |= 1 << LED_PIN; _delay_ms(1000); PORTB &= ~(1 << LED_PIN); _delay_ms(1000); } return 0; }

پروژه ما آماده است. بیایید کنسول را در دایرکتوری پروژه خود باز کنیم و دستور "make" را وارد کنیم:


همانطور که می بینید، اندازه سیستم عامل به دست آمده تنها 180 بایت است. یک طرح مشابه آردوینو 1116 بایت در حافظه کنترلر اشغال می کند.

حالا بیایید به کنسول برگردیم و "make flash" را وارد کنیم تا فایل کامپایل شده در کنترلر بارگذاری شود:


اگر دانلود بدون خطا انجام شود، LED متصل به پایه 13 برد با خوشحالی چشمک می زند. گاهی اوقات avrdude نمی تواند برد را پیدا کند یا به دلیل وقفه زمانی می افتد - در این مورد، پیچاندن کابل USB می تواند کمک کند. همچنین، برای جلوگیری از تداخل دسترسی به برد، فراموش نکنید که Arduino IDE را قبل از دستور make flash ببندید.

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

در تسلط بر میکروکنترلرها موفق باشید!

آردوینو یک برد کوچک است که برای ساخت دستگاه های مختلف، گجت های جالب و حتی پلتفرم های محاسباتی استفاده می شود. این برد میکروکنترلر نامیده می شود که متن باز بوده و با کاربردهای زیادی قابل استفاده است.

این ساده ترین و ارزان ترین گزینه برای مبتدیان، آماتورها و حرفه ای ها است. فرآیند برنامه نویسی در زبان Processing/Wiring انجام می شود که به سرعت و به راحتی یاد گرفته می شود و بر اساس زبان C++ می باشد و به لطف این امر انجام آن بسیار آسان است. بیایید ببینیم آردوینو چیست، چگونه برای مبتدیان مفید است، قابلیت ها و ویژگی های آن.

آردوینو یک پلت فرم یا برد محاسباتی است که به عنوان مغز دستگاه ها یا ابزارهای جدید شما عمل می کند. بر اساس آن، شما می توانید هر دو دستگاه را با مدارهای ساده و پروژه های پیچیده و کار فشرده، به عنوان مثال، ربات ها یا هواپیماهای بدون سرنشین ایجاد کنید.

اساس طراح، برد ورودی-خروجی (سخت افزار) و همچنین قسمت نرم افزاری است. نرم افزار طراح مبتنی بر آردوینو توسط یک محیط توسعه یکپارچه نشان داده می شود.

از نظر خارجی، خود محیط به شکل زیر است:

نرم افزار آردوینو به گونه ای طراحی شده است که حتی یک کاربر مبتدی و بدون دانش برنامه نویسی نیز می تواند از عهده آن برآید. یک عامل موفقیت اضافی در استفاده از میکروکنترلر، توانایی کار با تخته نان بود، زمانی که قطعات لازم (مقاومت، دیود، ترانزیستور و غیره) بدون نیاز به لحیم کاری به کنترلر متصل می شوند.

اکثر بردهای آردوینو از طریق کابل USB متصل می شوند. چنین اتصالی به شما امکان می دهد برق را به برد و طرح های بارگذاری کنید، یعنی. برنامه های کوچک فرآیند برنامه نویسی نیز بسیار ساده است. ابتدا کاربر از ویرایشگر کد IDE برای ایجاد برنامه مورد نیاز استفاده می کند، سپس با یک کلیک در آردوینو بارگذاری می شود.

چگونه آردوینو بخریم؟

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

شما می توانید آنالوگ را در بازار داخلی خریداری کنید یا مثلاً آن را از چین سفارش دهید. به عنوان مثال، بسیاری از مردم در مورد وب سایت AliExpress می دانند. اما برای کسانی که آشنایی خود را با آردوینو شروع می کنند، بهتر است اولین برد خود را از یک فروشگاه اینترنتی روسی سفارش دهند. با گذشت زمان، می توانید به خرید بردهای مدار و قطعات در چین روی بیاورید. زمان تحویل از این کشور از دو هفته تا یک ماه خواهد بود و به عنوان مثال، هزینه یک کیت بزرگ دیگر نخواهد بود. 60-70 دلار.

کیت های استاندارد معمولا شامل قطعات زیر است:

  • تخته نان;
  • ال ای دی؛
  • مقاومت ها؛
  • باتری های 9 ولت؛
  • تنظیم کننده های ولتاژ؛
  • دکمه ها؛
  • جامپرها;
  • صفحه کلید ماتریسی؛
  • تخته های توسعه؛
  • خازن ها

آیا نیاز به دانستن برنامه نویسی دارید؟

اولین مراحل کار با برد آردوینو با برنامه نویسی برد شروع می شود. برنامه ای که از قبل آماده کار با برد است، Sketch نامیده می شود. نیازی به نگرانی در مورد ندانستن برنامه نویسی نیست. روند ایجاد برنامه ها بسیار ساده است و نمونه های زیادی از طرح ها در اینترنت وجود دارد، زیرا جامعه آردوینو بسیار بزرگ است.

پس از کامپایل شدن برنامه، بر روی برد بارگذاری (فلش) می شود. در این مورد، آردوینو یک مزیت غیرقابل انکار دارد - در بیشتر موارد از کابل USB برای برنامه نویسی استفاده می شود. بلافاصله پس از بارگذاری، برنامه آماده اجرای دستورات مختلف است.

مبتدیان با آردوینو باید دو عملکرد کلیدی را بدانند:

  • برپایی()- یک بار هنگام روشن شدن برد استفاده می شود، برای مقداردهی اولیه تنظیمات استفاده می شود.
  • حلقه ()- استفاده مداوم، مرحله نهایی راه اندازی است.

مثالی از نمادگذاری تابع برپایی():

Void setup() (Serial.begin(9600)؛ // باز کردن یک اتصال سریال pinMode(9، INPUT)؛ // اختصاص دادن پین 9 به عنوان pinMode ورودی (13، OUTPUT)؛ // اختصاص دادن پایه 13 به عنوان خروجی)

تابع برپایی()در همان ابتدا و فقط 1 بار بلافاصله پس از روشن یا راه اندازی مجدد دستگاه شما انجام می شود.

تابع حلقه ()بعد از تابع setup() اجرا می شود. حلقه به عنوان حلقه یا چرخه ترجمه می شود. این تابع بارها و بارها اجرا خواهد شد. بنابراین میکروکنترلر ATmega328 (بیشتر بردهای آردوینو حاوی این هستند) عملکرد حلقه را حدود 10000 بار در ثانیه انجام می دهد.

همچنین با ویژگی های اضافی روبرو خواهید شد:

  • pinMode- حالت ورودی و خروجی اطلاعات؛
  • آنالوگ خواندن- به شما امکان می دهد ولتاژ آنالوگ در حال ظهور را در پین بخوانید.
  • آنالوگ رایت– ثبت ولتاژ آنالوگ به پین ​​خروجی؛
  • digitalRead- به شما امکان می دهد مقدار یک خروجی دیجیتال را بخوانید.
  • دیجیتال رایت- به شما امکان می دهد مقدار خروجی دیجیتال را در سطح پایین یا بالا تنظیم کنید.
  • سریال.چاپ- داده های پروژه را به متنی خوانا ترجمه می کند.

علاوه بر این، مبتدیان آردوینو از این واقعیت خوششان می آید که کتابخانه های زیادی برای بردها وجود دارد، که مجموعه ای از توابع هستند که به شما امکان می دهند برد یا ماژول های اضافی را کنترل کنید. محبوب ترین ها عبارتند از:

  • خواندن و نوشتن در انبار،
  • اتصال اینترنت،
  • خواندن کارت های SD،
  • کنترل موتور پله ای،
  • رندر متن
  • و غیره.

چگونه آردوینو را راه اندازی کنیم؟

یکی از مزایای اصلی طراح ایمنی آن در مورد تنظیمات کاربر است. تنظیمات کلیدی که به طور بالقوه برای آردوینو مضر هستند محافظت می شوند و در دسترس نخواهند بود.

بنابراین، حتی یک برنامه نویس بی تجربه نیز می تواند با خیال راحت گزینه های مختلف را آزمایش کرده و تغییر دهد تا به نتیجه دلخواه برسد. اما در هر صورت، ما به شدت توصیه می کنیم سه مطلب مهم در مورد نحوه آسیب نرساندن به برد را مطالعه کنید:

الگوریتم کلاسیک راه اندازی برنامه آردوینو به شکل زیر است:

  • نصب IDE، که در زیر یا از وب سایت سازنده قابل دانلود است.
  • نصب نرم افزار بر روی کامپیوتری که استفاده می کنید؛
  • راه اندازی فایل آردوینو؛
  • وارد کردن برنامه توسعه یافته به پنجره کد و انتقال آن به برد (با استفاده از کابل USB)؛
  • در بخش IDE باید نوع سازنده مورد استفاده را انتخاب کنید. این را می توان در پنجره "ابزار" - "تخته" انجام داد.
  • کد را بررسی کنید و روی "بعدی" کلیک کنید، پس از آن بارگیری در آردوینو آغاز می شود.
نسخه پنجره ها سیستم عامل مک لینوکس
1.6.5 زیپ
نصاب
نصاب 32 بیت
64 بیت
1.8.2 زیپ
نصاب
نصاب 32 بیت
64 بیت
ARM
1.8.5 زیپ
نصاب
برنامه
نصاب 32 بیت
64 بیت
ARM

دستمان را تربیت کنیم

برای پیاده سازی مطمئن ایده های پیچیده، استفاده از محیط نرم افزار و آردوینو، مبتدیان باید به آن دست پیدا کنند. برای انجام این کار، توصیه می شود ابتدا به وظایف و پروژه های ساده تر تسلط داشته باشید.

ساده ترین پروژه ای که می توانید انجام دهید این است که LED را که روی برد آردوینو روبروی پورت قرار دارد هر ثانیه چشمک بزند.

برای انجام این کار شما نیاز دارید:

  • طراح را به کامپیوتر متصل کنید،
  • برنامه را باز کنید، در بخش "سرویس" به دنبال بلوک "پورت سریال" هستیم
  • فاصله مورد نیاز را انتخاب کنید
  • پس از آن باید کدی را که در Arduino IDE است در بخش "Examples" اضافه کنید.

اولین پروژه های آردوینو برای مبتدیان می تواند به شرح زیر باشد:

  • LED چشمک زن؛
  • اتصال و کنترل سنسور دما؛
  • اتصال و کنترل سنسور حرکت؛
  • اتصال یک مقاومت نوری؛
  • کنترل درایو سروو

پروژه اول

اکنون به اولین پروژه خود رسیده ایم. بیایید آردوینو، LED و دکمه را وصل کنیم. این پروژه برای مبتدیان عالی است.

طرح ما به این صورت خواهد بود:

LED پس از فشار دادن دکمه روشن می شود و پس از فشار بعدی خاموش می شود. طرح یا برنامه برای خود آردوینو به این صورت خواهد بود:

// پین های دستگاه های متصل int switchPin = 8; int ledPin = 11; // متغیرهایی برای ذخیره وضعیت دکمه و LED boolean lastButton = LOW; دکمه جریان بولی = LOW; بولی ledOn = نادرست; void setup() (pinMode(switchPin, INPUT)؛ pinMode(ledPin, OUTPUT)؛ ) // تابعی برای debounse boolean debounse(boolean last) (Bolean current = digitalRead(switchPin); if(last!= current) ( تاخیر ( 5؛ جریان = digitalRead(switchPin)؛ ) جریان برگشتی؛ ) void loop() (currentButton = debounse(lastButton)؛ if(lastButton == LOW && currentButton == HIGH) (ledOn = !ledOn;) lastButton = currentButton; digitalWrite (ledPin، ledOn)؛

ممکن است متوجه تابع debounse شده باشید که هنوز در مورد آن چیزی ننوشته ایم. برای آن مورد نیاز است.

پس از تسلط بر مهارت های اولیه کار با تخته، می توانید شروع به اجرای کارهای پیچیده تر و چند وجهی کنید. طراح به شما اجازه می دهد یک ماشین RC، یک هلیکوپتر قابل کنترل، تلفن خود را ایجاد کنید، یک سیستم و غیره ایجاد کنید.

برای سرعت بخشیدن به توسعه کار با برد آردوینو، توصیه می کنیم از بخش ما شروع به ساخت دستگاه کنید، جایی که مراحل ایجاد جالب ترین دستگاه ها و ابزارها به صورت مرحله به مرحله شرح داده می شود.

این درس حداقل دانش مورد نیاز برای برنامه نویسی سیستم های آردوینو در C را ارائه می دهد. شما فقط می توانید آن را مشاهده کرده و در آینده از آن به عنوان اطلاعات مرجع استفاده کنید. برای کسانی که در سیستم های دیگر به زبان C برنامه نویسی کرده اند، می توانند از این مقاله صرف نظر کنند.

تکرار می کنم که این اطلاعات حداقلی است. شرح اشاره گرها، کلاس ها، متغیرهای رشته و غیره. در درس های بعدی ارائه خواهد شد. اگر چیزی نامشخص است، نگران نباشید. در درس های آینده مثال ها و توضیحات زیادی ارائه خواهد شد.

ساختار برنامه آردوینو

ساختار برنامه آردوینو بسیار ساده است و در شکل حداقلی خود از دو بخش setup() و loop() تشکیل شده است.

void setup() (

حلقه خالی() (

تابع setup() یکبار اجرا می شود، زمانی که کنترلر روشن یا تنظیم مجدد شود. معمولاً تنظیمات اولیه متغیرها و رجیسترها در آن صورت می گیرد. تابع باید در برنامه وجود داشته باشد، حتی اگر چیزی در آن وجود نداشته باشد.

پس از اتمام setup() کنترل به تابع loop() منتقل می شود. دستورات نوشته شده در بدنه خود (بین پرانتزهای فرفری) را در یک حلقه بی پایان اجرا می کند. در واقع این دستورات تمام اعمال الگوریتمی کنترلر را انجام می دهند.

قوانین اصلی نحو زبان C.

; نقطه ویرگولعبارات می توانند به تعداد دلخواه دارای فاصله و خط شکاف باشند. انتهای یک عبارت با علامت نقطه ویرگول نشان داده می شود.

z = x + y;
z=x
+ y ;

( ) آکولادبلوکی از توابع یا عبارات را تعریف کنید. به عنوان مثال، در توابع setup() و loop().

/* … */ بلوک نظرات، حتما ببندید

/* این یک بلوک نظر است */

// نظر یک خطی، بدون نیاز به بستن، تا پایان خط اعتبار دارد.

// این یک خط نظر است

متغیرها و انواع داده ها

متغیر یک سلول RAM است که اطلاعات در آن ذخیره می شود. این برنامه از متغیرها برای ذخیره داده های محاسباتی میانی استفاده می کند. برای محاسبات می توان از داده هایی با فرمت های مختلف و عمق بیت های مختلف استفاده کرد، بنابراین متغیرها در زبان C دارای انواع زیر هستند.

نوع داده عمق، بیت محدوده اعداد
بولی 8 درست غلط
کاراکتر 8 -128 … 127
کاراکتر بدون امضا 8 0 … 255
بایت 8 0 … 255
بین المللی 16 -32768 … 32767
بدون امضا 16 0 … 65535
کلمه 16 0 … 65535
طولانی 32 -2147483648 … 2147483647
طولانی بدون امضا 32 0 … 4294967295
کوتاه 16 -32768 … 32767
شناور 32 -3.4028235+38 … 3.4028235+38
دو برابر 32 -3.4028235+38 … 3.4028235+38

انواع داده ها بر اساس دقت محاسباتی مورد نیاز، فرمت داده ها و غیره انتخاب می شوند. برای مثال، برای شمارنده‌ای که تا 100 می‌شود، نباید نوع بلند را انتخاب کنید. کار می کند، اما این عملیات داده ها و حافظه برنامه بیشتری را اشغال می کند و زمان بیشتری را می گیرد.

اعلام متغیرها

نوع داده مشخص شده و به دنبال آن نام متغیر آمده است.

int x; // اعلان متغیری به نام x از نوع int
float widthBox; // اعلان متغیری به نام widthBox از نوع float

همه متغیرها باید قبل از استفاده اعلان شوند.

یک متغیر را می توان در هر جایی از یک برنامه اعلان کرد، اما این تعیین می کند که کدام بلوک های برنامه می توانند از آن استفاده کنند. آن ها متغیرها دارای دامنه هستند.

  • متغیرهای اعلام شده در ابتدای برنامه، قبل از تابع ()void setup، سراسری در نظر گرفته می شوند و در هر نقطه از برنامه در دسترس هستند.
  • متغیرهای محلی در داخل توابع یا بلوک‌هایی مانند حلقه for اعلام می‌شوند و فقط می‌توانند در بلوک‌های اعلام‌شده استفاده شوند. ممکن است چندین متغیر با نام یکسان اما دامنه های متفاوت داشته باشید.

حالت int; // متغیر برای همه توابع موجود است

void setup() (
// بلوک خالی، بدون نیاز به تنظیمات اولیه
}

حلقه خالی() (

شمارش طولانی؛ // متغیر count فقط در تابع loop() موجود است

برای (int i=0; i< 10;) // переменная i доступна только внутри цикла
{
i++;
}
}

هنگام اعلان یک متغیر، می توانید مقدار اولیه آن را تنظیم کنید (initialize).

int x = 0; // متغیر x با مقدار اولیه 0 اعلام می شود
char d = 'a'; // متغیر d با مقدار اولیه برابر با کد کاراکتر "a" اعلام می شود.

هنگام انجام عملیات حسابی با انواع داده های مختلف، تبدیل خودکار انواع داده ها اتفاق می افتد. اما همیشه بهتر است از یک تبدیل صریح استفاده کنید.

int x; // متغیر int
char y; // متغیر char
int z; // متغیر int

z = x + (int)y; // متغیر y به صراحت به int تبدیل می شود

عملیات حسابی

عملیات رابطه

عملیات منطقی

عملیات روی اشاره گرها

عملیات بیت

& و
| یا
^ انحصاری یا
~ وارونگی
<< SHIFT LEFT
>> SHIFT RIGHT

عملیات انتساب مختلط

انتخاب گزینه ها، مدیریت برنامه.

اپراتور IFشرط داخل پرانتز را آزمایش می کند و اگر شرط درست باشد عبارت یا بلوک بعدی را در پرانتزهای فرفری اجرا می کند.

اگر (x == 5) // اگر x=5، آنگاه z=0 اجرا می شود
z=0;

if (x > 5) // if x >
(z=0؛ y=8؛ )

اگر دیگریبه شما امکان می دهد بین دو گزینه یکی را انتخاب کنید.

اگر (x > 5) // اگر x > 5، بلوک اجرا می شود z=0، y=8.
{
z=0;
y=8;
}

{
z=0;
y=0;
}

ELSE IF- به شما امکان می دهد چندین انتخاب انجام دهید

اگر (x > 5) // اگر x > 5، بلوک اجرا می شود z=0، y=8.
{
z=0;
y=8;
}

در غیر این صورت اگر (x > 20) // اگر x > 20 باشد، این بلوک اجرا می شود
{
}

else // در غیر این صورت این بلوک اجرا می شود
{
z=0;
y=0;
}

کیس سوئیچ- چند گزینه ای. به شما امکان می دهد یک متغیر (در مثال x است) با چندین ثابت (در مثال 5 و 10) مقایسه کنید و بلوکی را اجرا کنید که در آن متغیر برابر با ثابت است.

سوئیچ (x) (

مورد 5:
کد // اگر x = 5 اجرا می شود
زنگ تفريح؛

مورد 10:
کد // اگر x = 10 اجرا می شود
زنگ تفريح؛

پیش فرض:
کد // در صورتی اجرا می شود که هیچ یک از مقادیر قبلی مطابقت نداشته باشد
زنگ تفريح؛
}

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

برای (اقدام قبل از شروع حلقه؛
شرط ادامه حلقه؛
عمل در پایان هر تکرار) (

// کد بدنه حلقه

مثالی از یک حلقه 100 تکراری.

برای (i=0; i< 100; i++) // начальное значение 0, конечное 99, шаг 1

{
مجموع = جمع + I;
}

حلقه WHILE. اپراتور به شما امکان می دهد حلقه ها را با ساختار سازماندهی کنید:

در حالی که (بیان)
{
// کد بدنه حلقه
}

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

x = 0;
در حالی که (x< 10)
{
// کد بدنه حلقه
x++;
}

انجام در حالی که- یک حلقه با یک شرط در خروجی.

انجام دادن
{
// کد بدنه حلقه
) while (بیان);

حلقه تا زمانی اجرا می شود که عبارت درست باشد.
زنگ تفريح- اپراتور خروجی حلقه برای قطع اجرای حلقه های for، while، do while استفاده می شود.

x = 0;
در حالی که (x< 10)
{
اگر (z > 20) شکسته شود. // اگر z > 20 باشد، از حلقه خارج شوید
// کد بدنه حلقه
x++;
}

رفتن به- عملگر انتقال بدون قید و شرط

gotometka1; // به metka1 بروید
………………
متکا1:

ادامه هید- پرش از عبارات تا پایان بدنه حلقه.

x = 0;
در حالی که (x< 10)
{
// کد بدنه حلقه
اگر (z > 20) ادامه یابد. // اگر z > 20 باشد، به ابتدای بدنه حلقه برگردید
// کد بدنه حلقه
x++;
}

آرایه ها

آرایه یک ناحیه حافظه است که در آن چندین متغیر به صورت متوالی ذخیره می شوند.

یک آرایه به این صورت اعلام می شود:

بین سنین // آرایه ای از 10 متغیر int

وزن شناور // آرایه ای از 100 متغیر شناور

وقتی اعلان شد، آرایه ها را می توان مقدار دهی اولیه کرد:

بین سنین = ( 23، 54، 34، 24، 45، 56، 23، 23، 27، 28)؛

دسترسی به متغیرهای آرایه به صورت زیر است:

x = سن // x مقداری از عنصر پنجم آرایه به آن اختصاص داده شده است.
سن = 32; // عنصر نهم آرایه روی 32 تنظیم شده است

شماره گذاری عناصر آرایه همیشه از صفر است.

کارکرد.

توابع به شما این امکان را می دهند که اقدامات مشابهی را با داده های مختلف انجام دهید. تابع دارای:

  • نامی که او را با آن صدا می کنند؛
  • آرگومان ها - داده هایی که تابع برای محاسبه استفاده می کند.
  • نوع داده ای که توسط تابع برگردانده می شود.

یک تابع تعریف شده توسط کاربر خارج از توابع setup() و loop() را توصیف می کند.

void setup() (
کد // یک بار با شروع برنامه اجرا می شود
}

حلقه خالی() (
// کد اصلی، در یک حلقه اجرا می شود
}

// اعلان یک تابع سفارشی به نام functionName
تابع نام را تایپ کنید (تایپ argument1، نوع argument1، ...، نوع آرگومان)
{
// بدن عملکرد
برگشت()؛
}

مثالی از تابعی که مجموع مربع های دو آرگومان را محاسبه می کند.

int sumQwadr(int x, int y)
{
بازگشت (x* x + y*y)؛
}

فراخوانی تابع به این صورت است:

d= 2; b= 3;
z= sumQwadr(d, b); // z مجموع مربع های متغیرهای d و b خواهد بود

توابع می توانند داخلی، سفارشی یا پلاگین باشند.

بسیار کوتاه است، اما این داده ها باید برای شروع نوشتن برنامه های C برای سیستم های آردوینو کافی باشد.

آخرین چیزی که می خواهم در این درس به شما بگویم این است که چگونه مرسوم است که برنامه ها را به زبان C فرمت کنید. فکر می کنم اگر برای اولین بار است که این درس را می خوانید، باید از این بخش صرف نظر کنید و بعداً زمانی که دارید به آن بازگردید. چیزی برای قالب بندی

هدف اصلی طراحی خارجی برنامه ها بهبود خوانایی برنامه ها و کاهش تعداد خطاهای رسمی است. بنابراین، برای رسیدن به این هدف، می توانید با خیال راحت تمام توصیه ها را نقض کنید.

نام ها در زبان C

نام هایی که نشان دهنده انواع داده ها هستند باید با حروف مختلط نوشته شوند. حرف اول نام باید با حروف بزرگ باشد.

سیگنال، شمارش زمان

متغیرها باید با حروف مختلط و با حرف اول کوچک (کوچک) نوشته شوند.

دسته بندی: . می توانید آن را نشانه گذاری کنید.

اولین کاری که برای تسلط بر آردوینو باید انجام دهید خرید یک برد رفع اشکال است (خرید فوری برد مدار و غیره ایده خوبی خواهد بود). قبلاً توضیح داده ام که چه نوع بردهای آردوینو در بازار وجود دارد. اگر هنوز مقاله را نخوانده اید، توصیه می کنم آن را بخوانید. برای یادگیری اصول اولیه، ما یک برد استاندارد Arduino Uno (اصل یا یک کپی چینی خوب - بستگی به شما دارد) انتخاب می کنیم. هنگام اتصال تخته اصلی برای اولین بار، نباید هیچ مشکلی وجود داشته باشد، اما در مورد "چینی" باید کمی عمیق تر حفاری کنید (نگران نباشید - من همه چیز را نشان می دهم و به شما می گویم).

آردوینو را با کابل USB به کامپیوتر وصل می کنیم. LED روی برد باید روشن شود بر". یک دستگاه جدید در مدیر دستگاه ظاهر می شود " دستگاه ناشناس". باید درایور را نصب کنید. در اینجا من یک مورد کوچک اضافه می کنم گنگ(گربه حواسش پرت شد - یادم نیست کدام راننده تصمیم گرفت " مشکل دستگاه ناشناخته».

ابتدا محیط نرم افزار آردوینو را دانلود و از حالت بسته خارج کنید ( arduino-1.6.6-windows). بعد این یکی رو دانلود کردم خود استخراجی است. فایل را راه اندازی کرد CH341SER.EXE. انتخاب شد نصب (نصب). پس از نصب، یک پیام ظاهر شد، روی "کلیک کنید" خوب(وقتی برای خواندن آن نداشتم).

سپس به ویژگی های دستگاه هنوز ناشناخته رفتم و دکمه "Update Driver" را انتخاب کردم. من گزینه "نصب از یک مکان مشخص" را انتخاب کردم - پوشه ای را با محیط نرم افزار آردوینو زیپ نشده نشان داد. و ببینید، همه چیز با موفقیت کار کرد ...

ما برنامه آردوینو را راه اندازی می کنیم (در مورد من 1.6.6) و اجازه دسترسی را می دهیم.

تمام پروژه ها (برنامه ها) برای آردوینو از دو بخش تشکیل شده است: تنظیم خالیو حلقه خالی. تنظیم خالیفقط یک بار انجام می شود و حلقه خالیبارها و بارها انجام می شود.

قبل از ادامه، دو عملیات اجباری وجود دارد که باید تکمیل شوند:

- در محیط نرم افزار آردوینو مشخص کنید که از کدام برد استفاده می کنید. Tool->board->Arduino Uno. اگر علامت از قبل روی تابلوی مورد نیاز شما وجود دارد، خوب است، اگر نه، علامت بگذارید.

- در محیط نرم افزار مشخص کنید که از کدام پورت سریال برای ارتباط با برد استفاده می کنید. ابزار-> پورت-> COM3. اگر علامت از قبل روی پورت است، خوب است، اگر نه، علامت بگذارید. اگر بیش از یک پورت در قسمت پورت ها ذکر شده است، چگونه می توانید بفهمید که کدام یک برای اتصال به برد استفاده می شود؟ تخته را می گیریم و سیم را از آن جدا می کنیم. دوباره به پورت ها می رویم و می بینیم کدام یک ناپدید شده است. در مورد من، تب "پورت ها" اصلا غیر فعال شد.

کابل USB را دوباره وصل کنید.

برنامه اول به هیچ ماژول اضافی نیاز ندارد. ما LED را که قبلاً روی برد نصب شده است (در پایه 13 میکروکنترلر) روشن می کنیم.

ابتدا، اجازه دهید پین 13 (ورودی یا خروجی) را پیکربندی کنیم.

برای انجام این کار، وارد بلوک شوید " تنظیم خالی» تیم pinMode ، پارامترها را در پرانتز نشان می دهیم (13، خروجی) (کدام پین درگیر است، حالت عملیاتی). محیط نرم افزار کلمات / دستورات را با رنگ فونت مناسب برجسته می کند.

برو به بلوک " حلقه خالی"و دستور را وارد کنید دیجیتال رایت با پارامترها (13، بالا) .


اولین برنامه آماده است، اکنون تنها چیزی که باقی مانده است بارگذاری آن در میکروکنترلر است. روی دکمه UPLOAD کلیک کنید.

LED روشن شد. اما در مورد سادگی برنامه اول آنقدر شک نکنید. شما به تازگی بر اولین فرمان کنترل مسلط شده اید. به جای یک LED، می توانید هر بار را وصل کنید (چه نور در یک اتاق یا یک درایو سروو که منبع آب را قطع می کند)، اما بعداً در مورد همه اینها صحبت خواهیم کرد ...

ما LED را روشن کردیم، کمی درخشید، وقت آن است که آن را خاموش کنیم. برای این کار برنامه ای که نوشتیم را اصلاح می کنیم. بجای " بالا "بیا بنویسیم" کم ».


روی دکمه UPLOAD کلیک کنید. LED خاموش شد.

ما قبلاً با مفهوم "" آشنا شده ایم، وقت آن است که از آن استفاده کنیم. برنامه های بعدی بیشتر و بیشتر حجیم تر و پیچیده تر می شوند و اگر به نوشتن کد به این شکل ادامه دهیم، کار روی تغییر آنها زمان بیشتری خواهد برد.

ما به برنامه نگاه می کنیم (ال ای دی را دوباره روشن کنید). بیایید شماره پین ​​میکروکنترلر را به عنوان یک عدد تنظیم کنیم 13 ، اما متغیری است که مقدار خروجی مربوطه به آن اختصاص داده می شود (در مورد ما، 13). در آینده، تغییر مقادیر متغیرها در ابتدای برنامه بسیار راحت خواهد بود، به جای جستجوی کد در جستجوی مکان هایی که لازم است مقادیر را تغییر دهید.

یک متغیر سراسری ایجاد کنید int LED_pin = 13; (نوع متغیر، نام متغیر، مقداری که به آن اختصاص داده شده است).


روی دکمه UPLOAD کلیک کنید. LED روشن می شود. همه چیز عالی کار می کند.

در این درس علاوه بر روشن/خاموش کردن LED، نحوه پلک زدن آن را نیز یاد خواهیم گرفت.

برای انجام این کار، دستور دوم را وارد کنید. دیجیتال رایت» با پارامترها (LED_pin، LOW).


روی دکمه UPLOAD کلیک کنید. و ما چه می بینیم؟ LED "به حداکثر میزان" می درخشد. دلیل آن در این واقعیت نهفته است که زمان تعویض دو حالت ( بالا و کم ) ناچیز است و چشم انسان نمی تواند این سوئیچ ها را تشخیص دهد. لازم است مدت زمان باقی ماندن LED در یکی از حالت ها افزایش یابد. برای این کار دستور را می نویسیم تاخیر انداختن با پارامتر (1000 ) . تاخیر در میلی ثانیه: 1000 میلی ثانیه - 1 ثانیه. الگوریتم برنامه به شرح زیر است: LED را روشن کنید - 1 ثانیه صبر کنید، LED را خاموش کنید - 1 ثانیه صبر کنید و غیره.


روی دکمه UPLOAD کلیک کنید. LED شروع به سوسو زدن کرد. همه چیز کار می کند.

بیایید برنامه را با ایجاد یک متغیر نهایی کنیم که به آن مقداری که مسئول مدت زمان تاخیر است اختصاص داده می شود.


روی دکمه UPLOAD کلیک کنید. LED مثل قبل سوسو می زند.

برنامه ای که نوشتیم را نهایی کنیم. وظایف به شرح زیر است:

  • LED به مدت 0.2 ثانیه روشن و برای 0.8 ثانیه خاموش می شود.
  • LED به مدت 0.7 ثانیه روشن و 0.3 ثانیه خاموش می شود.

این برنامه 2 متغیر ایجاد کرد که مسئول تاخیر زمانی هستند. یکی زمان روشن بودن LED را تعیین می کند و دومی زمان کارکرد LED خاموش را تعیین می کند.

با تشکر از توجه شما. به زودی میبینمت!

بهترین مقالات در این زمینه