⚖️ میکروپایتون یا C++ آردوینو؟ مقایسه‌ی کامل برای انتخاب زبان میکروکنترلر

✍️ تیم ووکوی فارسی ·

هر کس رزبری پای پیکو یا ESP32 می‌خرد، زود به این سؤال می‌رسد: میکروپایتون یا آردوینو؟ یعنی برنامه را با پایتونِ مخصوص میکروکنترلرها بنویسم یا با C++ آردوینو؟ هر دو زبان روی یک برد اجرا می‌شوند، هر دو رایگان‌اند و هر دو طرفدار زیاد دارند. در این مقاله این دو را بی‌طرفانه مقایسه می‌کنیم، یک برنامه‌ی یکسان را به هر دو زبان می‌نویسیم و در آخر بر اساس هدفت پیشنهاد می‌دهیم. بهترین قسمت ماجرا این است که می‌توانی هر دو را در یک شبیه‌ساز، شبیه آنچه در Wokwi دیده‌ای، کنار هم امتحان کنی و بعد تصمیم بگیری.

دو زبان در یک جمله

جدول مقایسه

معیارمیکروپایتونC++ آردوینو
سرعت اجراکندتر؛ در حلقه‌های تنگ چند ده برابرسریع؛ نزدیک به حداکثر توان پردازنده
چرخه‌ی «بنویس و ببین»چند ثانیه؛ بدون کامپایل، با REPLکامپایل و آپلود، از چند ثانیه تا یک دقیقه
یادگیری برای تازه‌کارساده‌تر؛ بدون نقطه‌ویرگول، نوع متغیر و آکولادکمی سخت‌تر؛ ولی آموزش فارسی خیلی زیاد
پیام خطاواضح، با شماره‌ی خط، موقع اجراخطای کامپایل گاهی گیج‌کننده؛ خطای زمان اجرا معمولاً بی‌صدا
مصرف حافظهخود مفسر بخشی از فلش و RAM را می‌گیردبهینه؛ حتی روی ۲ کیلوبایت RAM اونو کار می‌کند
دقت زمان‌بندیبرای بیشتر کارها کافی؛ جمع‌آوری زباله گاهی مکث کوتاه می‌اندازددقیق تا حد میکروثانیه
کتابخانه‌هاکمتر، ولی برای ماژول‌های رایج هستبسیار زیاد، تقریباً برای هر ماژولی
بردهاپیکو، ESP32، ESP8266 و چند برد دیگر؛ نه اونو و نانوتقریباً همه، از اونو تا پیکو و ESP32

یک برنامه، دو زبان

برای این‌که فرق را با چشم ببینی، یک دیمر ساده را روی رزبری پای پیکو به هر دو زبان می‌نویسیم: پتانسیومتر روی GP26 نور LED روی GP15 را تنظیم می‌کند و عدد خوانده‌شده در سریال مانیتور چاپ می‌شود. اول میکروپایتون:

from machine import Pin, ADC, PWM
import time

pot = ADC(26)              # GP26 = ADC0
led = PWM(Pin(15))
led.freq(1000)

while True:
    raw = pot.read_u16()   # 0..65535
    led.duty_u16(raw)      # 0..65535
    print(raw)
    time.sleep_ms(50)

و همین برنامه با C++ آردوینو (هسته‌ی arduino-pico):

const int LED_PIN = 15;    // GP15

void setup() {
  Serial.begin(115200);
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  int raw = analogRead(A0);       // GP26, 0..1023
  analogWrite(LED_PIN, raw / 4);  // 0..255
  Serial.println(raw);
  delay(50);
}

چند فرق که به چشم می‌آید:

هر دو مدار در تینکرکد فارسی آماده‌اند: دیمر LED با MicroPython روی پیکو و دیمر LED با رزبری پای پیکو به زبان C++. هر دو را باز کن و کدها را کنار هم بخوان.

کِی میکروپایتون بهتر است؟

کِی C++ آردوینو بهتر است؟

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

پیشنهاد ما بر اساس هدف

اگر…شروع کن با
تازه‌کار کامل هستی و هنوز برد نداریC++ آردوینو روی Uno در شبیه‌ساز، که رایگان است
پایتون بلدی و رزبری پای پیکو داریمیکروپایتون
پروژه‌ی اینترنت اشیا با ESP32 می‌سازیC++ آردوینو؛ آموزش و کتابخانه‌ی وب و MQTT بیشتری دارد
پروژه‌ی سرعت‌بالا یا رباتیک رقابتی داریC++ آردوینو
معلمی و دانش‌آموزانت پایتون می‌خوانندمیکروپایتون روی پیکو

هر دو را در شبیه‌ساز امتحان کن

در تینکرکد فارسی رزبری پای پیکو را هم با میکروپایتون (فرم‌ور واقعی میکروپایتون که در مرورگر اجرا می‌شود) و هم با C++ به سبک arduino-pico می‌توانی اجرا کنی؛ کافی است کد را عوض کنی، خود شبیه‌ساز تشخیص می‌دهد کدام زبان است. آردوینو Uno و Nano با زبان C++ و همه‌ی درس‌ها برای همیشه رایگان‌اند. پیکو، میکروپایتون و ESP32 جزو اشتراک پلاس‌اند: مثال‌های آماده رایگان باز می‌شوند و برای اجرا پلاس لازم است. مقاله‌ی میکروپایتون روی رزبری پای پیکو در تینکرکد فارسی هم مقدمه‌ی خوبی است.

اشتباه‌های رایج در انتخاب

برای قدم بعد: اگر میکروپایتون را انتخاب کردی، آموزش میکروپایتون از صفر و نصب میکروپایتون روی پیکو را بخوان. اگر C++ را انتخاب کردی، برنامه‌نویسی پیکو با زبان آردوینو منتظرت است. مقایسه‌ی خود بردها هم در پیکو، ESP32 یا آردوینو؟ آمده، و صفحه‌های میکروپایتون و آردوینو نمای کلی هر کدام را دارند.

هر دو زبان را روی پیکو امتحان کن ⚖️

سؤال‌های رایج

میکروپایتون روی آردوینو Uno اجرا می‌شود؟

نه. Uno فقط ۲ کیلوبایت RAM و ۳۲ کیلوبایت فلش دارد که برای مفسر میکروپایتون خیلی کم است. برای میکروپایتون به بردهایی مثل رزبری پای پیکو، ESP32 یا ESP8266 نیاز داری.

میکروپایتون چقدر از C++ کندتر است؟

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

اگر میکروپایتون یاد بگیرم، بعداً رفتن به آردوینو سخت است؟

نه. مفهوم‌ها (پایه، ورودی و خروجی، PWM، ADC، وقفه، تایمر) یکی‌اند و فقط شکل نوشتن عوض می‌شود. خیلی‌ها با یکی شروع می‌کنند و هر دو را یاد می‌گیرند.

مقاله‌های مرتبط

🍓

اولین برنامه‌ی میکروپایتون روی رزبری پای پیکو: چشمک‌زن با machine.Pin

🔘

دکمه و وقفه (IRQ) با میکروپایتون روی رزبری پای پیکو

🌈

نمایشگر OLED و نئوپیکسل با میکروپایتون روی رزبری پای پیکو

⚙️

استپر موتور 28BYJ-48 با درایور ULN2003 و آردوینو: چرخش دقیق به درجه

همه‌ی آموزش‌های رزبری پای پیکو و میکروپایتون ← · همه‌ی مقاله‌ها