🛠️ ساخت مدار در ووکوی (Wokwi) قدمبهقدم: از انتخاب برد و سیمکشی تا اجرای شبیهسازی، با دو مدار کامل
یک ایدهی مدار در ذهنت داری و میخواهی قبل از خرید قطعه ببینی کار میکند یا نه. ساخت مدار در ووکوی (Wokwi) دقیقاً برای همین است: برد را انتخاب میکنی، قطعهها را روی صفحه میچینی، با کلیک روی پایهها سیم میکشی، کد را مینویسی و دکمهی اجرا را میزنی. در این راهنما همهی این قدمها را با جزئیات میگوییم: دکمهی + و فهرست قطعهها، چیدن و چرخاندن قطعه، رنگ و خم سیم، ویژگی قطعهها، فایلهای diagram.json، sketch.ino و libraries.txt، اجرای شبیهسازی و سریال مانیتور. بعد دو مدار کامل را از صفر میسازیم: مدار چراغ راهنمایی (Traffic Light) و مدار سنسور پارک (Parking Sensor). در آخر همین مدارها را در شبیهساز فارسی هم میسازیم و اشتباههای رایج سیمکشی را مرور میکنیم.
اگر اولین بار است که ووکوی را باز میکنی و فقط میخواهی یک LED چشمک بزند، اول آموزش ووکوی قدمبهقدم را ببین؛ این صفحه یک قدم جلوتر است و روی خود کار ساختن مدار تمرکز دارد.
یک پروژهی ووکوی از چه ساخته شده؟
قبل از اینکه دست به ماوس ببری، خوب است بدانی هر کاری که روی صفحه میکنی کجا ذخیره میشود. هر پروژه در wokwi.com چند فایل دارد که بالای ویرایشگر به شکل تب دیده میشوند:
| فایل | چه چیزی در آن است | چه کسی آن را مینویسد |
|---|---|---|
sketch.ino | کد آردوینو (C++) | خودت |
diagram.json | قطعهها، جای هر قطعه، ویژگیها و همهی سیمها | ویرایشگر مدار، وقتی قطعه میچینی و سیم میکشی؛ دستی هم میشود ویرایشش کرد |
libraries.txt | فهرست کتابخانههایی که کد لازم دارد | Library Manager، وقتی کتابخانه اضافه میکنی |
نکتهی مهم این است که مدار و کد دو فایل جدا هستند. ویرایشگر گرافیکی فقط یک نمای دیدنی از diagram.json است؛ هر قطعهای که میگذاری یک خط در بخش parts و هر سیمی که میکشی یک خط در بخش connections میشود. اگر با ساختار این فایل آشنا نیستی، diagram.json در ووکوی چیست؟ را بخوان. در مثال اول یک diagram.json کامل هم مینویسیم.
قدم ۱: پروژهی تازه بساز و برد را انتخاب کن
به wokwi.com برو و از بخش شروع پروژهی جدید، برد را انتخاب کن: Arduino Uno، Arduino Nano، Arduino Mega، ESP32 یا Raspberry Pi Pico. برای این آموزش Arduino Uno را بردار. ووکوی یک پروژهی خالی باز میکند: یک طرف ویرایشگر کد با setup و loop خالی، طرف دیگر صفحهی مدار با یک برد اونو.
- برد را بعداً هم میشود عوض کرد، ولی سیمهایی که به پایههای برد قبلی وصل بودهاند باید دوباره کشیده شوند؛ پس از اول برد درست را انتخاب کن.
- اگر پروژهات ESP32 یا پیکو است، شمارهی پینها و ولتاژ کاری ۳٫۳ ولت فرق دارد؛ پین اوت ESP32 را دم دست نگه دار.
- تا وقتی پروژه را ذخیره نکردهای، فقط در همین صفحه است. ذخیره را در قدم ۸ میگوییم.
قدم ۲: قطعه اضافه کن (دکمهی +)
بالای صفحهی مدار یک دکمهی + هست. با زدنش فهرست قطعهها باز میشود که یک کادر جستجو دارد. اسم انگلیسی قطعه را تایپ کن، مثلاً LED، resistor، button، buzzer، HC-SR04 یا LCD، و روی قطعه بزن تا روی صفحه ظاهر شود.
چند قطعه که زیاد لازمت میشود، با اسمی که جستجو میکنی و شناسهای که در diagram.json میبینی:
| قطعه | English | شناسه در diagram.json |
|---|---|---|
| LED | LED | wokwi-led |
| مقاومت | Resistor | wokwi-resistor |
| کلید فشاری | Pushbutton | wokwi-pushbutton |
| پتانسیومتر (ولوم) | Potentiometer | wokwi-potentiometer |
| بازر | Buzzer | wokwi-buzzer |
| سنسور فاصلهی اولتراسونیک | HC-SR04 Ultrasonic | wokwi-hc-sr04 |
| سروو موتور | Servo | wokwi-servo |
| نمایشگر LCD ۱۶×۲ | LCD 1602 | wokwi-lcd1602 |
| سنسور دما و رطوبت | DHT22 | wokwi-dht22 |
اگر قطعهای را پیدا نکردی، با اسم دیگرش جستجو کن؛ مثلاً photoresistor بهجای LDR. فهرست بلندتر شناسهها را کنار ۴۰ مدار آماده در مقالهی «۴۰ مدار آردوینو برای ووکوی» آوردهایم که آخر همین صفحه لینکش هست.
قدم ۳: قطعهها را بچین، جابهجا کن و بچرخان
- جابهجا کردن: قطعه را بگیر و بکش. سیمهایی که به آن وصلاند همراهش کشیده میشوند.
- چرخاندن: قطعه را انتخاب کن و کلید R را بزن؛ هر بار ۹۰ درجه میچرخد. مقاومتها را معمولاً عمودی میگذاریم تا بین پین برد و LED جا شوند. چرخش در
diagram.jsonبا کلیدrotateذخیره میشود. - پاک کردن: قطعه را انتخاب کن و کلید Delete را بزن.
- چند قطعهی همشکل: برای سه LED، سه بار از فهرست قطعهها LED بیاور و هر کدام را جدا رنگ کن (قدم ۵).
- نمای صفحه: برای مدارهای بزرگ زوم کن و صفحه را جابهجا کن تا همهی قطعهها جا شوند.
یک عادت خوب: قطعهها را همان شکلی بچین که روی میز واقعی میچینی؛ ورودیها یک طرف، خروجیها طرف دیگر و GNDها نزدیک هم. مدار مرتب هم راحتتر سیمکشی میشود و هم وقتی کار نکرد، عیبش زودتر پیدا میشود.
قدم ۴: سیمکشی؛ کلیک روی پایه، خم و رنگ سیم
سیمکشی در ووکوی با کلیک انجام میشود، نه با کشیدن و رها کردن:
- نشانگر را روی پایهی یک قطعه ببر؛ اسم پایه ظاهر میشود. مثلاً
AوCبرای آند و کاتد LED، یا13وGNDروی برد. - روی پایه کلیک کن تا سیم شروع شود.
- اگر میخواهی سیم از مسیر خاصی برود، در جای خالی صفحه کلیک کن؛ هر کلیک یک خم (گوشه) میسازد.
- روی پایهی مقصد کلیک کن تا سیم تمام شود.
بعد از کشیدن، با انتخاب سیم میتوانی رنگش را عوض کنی یا پاکش کنی. رنگ سیم هیچ اثری روی کار مدار ندارد، ولی خواندن مدار را خیلی راحت میکند. قراردادی که در مثالهای این سایت رعایت میکنیم:
| رنگ سیم | برای |
|---|---|
| قرمز | تغذیه: ۵ ولت یا ۳٫۳ ولت (VCC) |
| سیاه | زمین (GND) |
| سبز، آبی، نارنجی | سیگنالها: پینهای دیجیتال و آنالوگ |
| زرد و بنفش | خطوط ارتباطی، مثل SDA و SCL در I2C |
در diagram.json هر سیم یک آرایه است: پایهی اول، پایهی دوم، رنگ و فهرست نقطههای مسیر (همان خمها). پس اگر ده سیم را اشتباه رنگ کردهای، میتوانی مستقیم در فایل اصلاحشان کنی.
قدم ۵: ویژگی قطعهها (رنگ LED، مقدار مقاومت و…)
خیلی از قطعهها ویژگی دارند: LED رنگ دارد، مقاومت مقدار و دکمه رنگ کلاهک. قطعه را انتخاب کن؛ برای قطعههایی که ویژگی قابل تنظیم دارند، تنظیماتش نمایش داده میشود. همهی اینها در بخش attrs هر قطعه در diagram.json نوشته میشوند و اگر ویرایشگر گزینهای را نشان نداد، میتوانی همانجا دستی بنویسی:
| قطعه | ویژگی | مثال در attrs |
|---|---|---|
| LED | رنگ | "color": "red" |
| مقاومت | مقدار به اهم | "value": "220" |
| کلید فشاری | رنگ کلاهک | "color": "green" |
| LCD ۱۶×۲ | اتصال I2C بهجای ۱۶ پایه | "pins": "i2c" |
| حلقهی نئوپیکسل | تعداد LED | "pixels": "16" |
یک نکتهی مهم: ووکوی تمرکزش روی اجرای کد است و جریان هر شاخهی مدار را مثل یک شبیهساز آنالوگ حساب نمیکند؛ برای همین عوض کردن مقدار مقاومت معمولاً تفاوت چشمگیری در نور LED نشان نمیدهد. مقدار مقاومت را برای درست بودن مدار واقعی بنویس، نه برای شبیهساز. چراییاش را در شبیهسازی مدار در ووکوی: چه چیزی شبیهسازی میشود؟ توضیح دادهایم، و مقدار درست را با ماشینحساب مقاومت LED حساب کن.
قدم ۶: کد در sketch.ino، کتابخانه در libraries.txt
کد را در تب sketch.ino بنویس، دقیقاً مثل Arduino IDE. اگر کدت کتابخانهی بیرونی لازم دارد (مثلاً #include <LiquidCrystal_I2C.h> یا #include <DHT.h>)، از تب Library Manager اسمش را جستجو کن و اضافهاش کن؛ ووکوی اسمش را در libraries.txt مینویسد و موقع کامپایل نصبش میکند. کتابخانههایی که همراه خود هستهی آردوینو هستند، مثل Wire و SPI، لازم نیست اضافه شوند. جزئیات کامل در کتابخانه در ووکوی و شبیهساز فارسی.
یک ترتیب کاری خوب: اول مدار را کامل بچین، بعد بالای کد برای هر قطعه یک ثابت با اسم معنیدار تعریف کن (const int RED = 12;) و کنارش در کامنت بنویس به کجا وصل است. اینطوری کد و diagram.json همیشه با هم میخوانند و اگر کسی فقط کد را ببیند، میتواند مدار را از رویش دوباره بسازد.
قدم ۷: اجرای شبیهسازی، توقف و سریال مانیتور
- اجرا: دکمهی سبز پخش (▶) بالای صفحهی مدار را بزن. ووکوی اول کد را کامپایل میکند و بعد برنامه روی تراشهی شبیهسازیشده اجرا میشود. اگر خطای کامپایل داشته باشی، پیغامش زیر ویرایشگر میآید؛ معنی رایجترینها در ارورهای رایج آردوینو و معنیشان آمده است.
- توقف: همان دکمه در حین اجرا به دکمهی توقف تبدیل میشود. قبل از تغییر سیمکشی شبیهسازی را متوقف کن و بعد دوباره اجرا کن تا مدار از نو خوانده شود.
- سریال مانیتور: وقتی کدت
Serial.beginدارد، پنجرهی سریال مانیتور زیر مدار باز میشود؛ هم خروجی را میبینی و هم میتوانی متن بفرستی. نمودار سریال هم هست: سریال مانیتور و نمودار سریال آردوینو. - تعامل با قطعهها در حین اجرا: روی دکمه کلیک کن تا فشرده شود، پیچ پتانسیومتر را بچرخان و روی سنسورهایی مثل HC-SR04، DHT22 یا PIR کلیک کن تا کنترل تغییر مقدارشان (فاصله، دما و رطوبت، حرکت) ظاهر شود. همین امکان است که شبیهسازی را از دیدن عکس یک مدار جدا میکند.
قدم ۸: ذخیره و اشتراکگذاری
دکمهی Save را بزن؛ اگر وارد حساب نشده باشی، اول صفحهی ورود باز میشود. بعد از ذخیره، آدرس صفحه به شکل wokwi.com/projects/... درمیآید و همین آدرس لینک پروژه است. در طرح رایگان ووکوی پروژهها عمومیاند، پس رمز وایفای و توکن واقعی در کد نگذار. دانلود فایل پشتیبان، کپی کردن پروژهی دیگران و آوردن پروژه به شبیهساز فارسی در ذخیره و اشتراکگذاری پروژه در ووکوی آمده است.
مثال کامل ۱: مدار چراغ راهنمایی (Traffic Light)
حالا همهی قدمها را روی یک مدار واقعی امتحان میکنیم. مدار چراغ راهنمایی (Traffic Light) سه LED دارد که به ترتیب سبز، زرد و قرمز روشن میشوند. ساده است، ولی همهی مهارتهای ساخت مدار را تمرین میدهد: چند قطعهی همشکل، ویژگی رنگ، مقاومت عمودی، سیمهای رنگی و GND مشترک.
قطعهها
- یک آردوینو اونو (
wokwi-arduino-uno) - سه LED قرمز، زرد و سبز (
wokwi-ledباcolorمتفاوت) - سه مقاومت ۲۲۰ اهم (
wokwi-resistor)
جدول سیمکشی
| از | به | رنگ سیم |
|---|---|---|
| پین ۱۲ آردوینو | مقاومت ۱، و سر دیگرش به آند LED قرمز | آبی |
| پین ۱۱ آردوینو | مقاومت ۲، و سر دیگرش به آند LED زرد | نارنجی |
| پین ۱۰ آردوینو | مقاومت ۳، و سر دیگرش به آند LED سبز | سبز |
| کاتد هر سه LED | GND آردوینو | سیاه |
LED دو پایه دارد: A (آند، پایهی بلند، مثبت) و C (کاتد، منفی). اگر نشانگر را روی پایه نگه داری، ووکوی اسمش را نشان میدهد. این diagram.json کامل همین مدار است؛ میتوانی آن را در تب diagram.json یک پروژهی تازهی اونو بچسبانی:
{
"version": 1,
"parts": [
{ "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0, "attrs": {} },
{ "type": "wokwi-led", "id": "ledRed", "top": -150, "left": 140, "attrs": { "color": "red" } },
{ "type": "wokwi-led", "id": "ledYellow", "top": -150, "left": 190, "attrs": { "color": "yellow" } },
{ "type": "wokwi-led", "id": "ledGreen", "top": -150, "left": 240, "attrs": { "color": "green" } },
{ "type": "wokwi-resistor", "id": "r1", "top": -70, "left": 125, "rotate": 90, "attrs": { "value": "220" } },
{ "type": "wokwi-resistor", "id": "r2", "top": -70, "left": 175, "rotate": 90, "attrs": { "value": "220" } },
{ "type": "wokwi-resistor", "id": "r3", "top": -70, "left": 225, "rotate": 90, "attrs": { "value": "220" } }
],
"connections": [
[ "uno:12", "r1:2", "blue", [] ],
[ "r1:1", "ledRed:A", "blue", [] ],
[ "ledRed:C", "uno:GND.1", "black", [] ],
[ "uno:11", "r2:2", "orange", [] ],
[ "r2:1", "ledYellow:A", "orange", [] ],
[ "ledYellow:C", "uno:GND.1", "black", [] ],
[ "uno:10", "r3:2", "green", [] ],
[ "r3:1", "ledGreen:A", "green", [] ],
[ "ledGreen:C", "uno:GND.1", "black", [] ]
]
}
- اعداد
topوleftفقط جای قطعه روی صفحهاند؛ وقتی قطعه را بکشی، ویرایشگر خودش عوضشان میکند. "rotate": 90مقاومتها را عمودی میکند. مقاومت جهت ندارد، پس فرقی نمیکند کدام سرش به پین برسد.- هر سه کاتد به یک پایهی GND رفتهاند. چند سیم روی یک پایه کاملاً مجاز است؛ در مدار واقعی همین کار را با ردیف منفی بردبورد میکنی.
- آرایهی خالی
[]آخر هر سیم یعنی سیم خم ندارد. وقتی در ویرایشگر خم بسازی، اینجا پر میشود.
کد
// Traffic light on an Arduino Uno
// Wiring: pin 12 -> 220 ohm -> red LED, pin 11 -> 220 ohm -> yellow LED,
// pin 10 -> 220 ohm -> green LED, all cathodes -> GND
const int RED = 12;
const int YELLOW = 11;
const int GREEN = 10;
const unsigned long GREEN_MS = 4000;
const unsigned long YELLOW_MS = 1000;
const unsigned long RED_MS = 4000;
void setLights(bool r, bool y, bool g) {
digitalWrite(RED, r ? HIGH : LOW);
digitalWrite(YELLOW, y ? HIGH : LOW);
digitalWrite(GREEN, g ? HIGH : LOW);
}
void setup() {
pinMode(RED, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(GREEN, OUTPUT);
Serial.begin(9600);
Serial.println("Traffic light ready");
}
void loop() {
setLights(false, false, true);
Serial.println("GREEN");
delay(GREEN_MS);
setLights(false, true, false);
Serial.println("YELLOW");
delay(YELLOW_MS);
setLights(true, false, false);
Serial.println("RED");
delay(RED_MS);
}
- تابع
setLightsهر سه چراغ را با یک خط تنظیم میکند؛ اینطوری هیچوقت یادت نمیرود چراغ قبلی را خاموش کنی. - زمان هر چراغ یک ثابت با اسم است. اگر خواستی چراغ قرمز طولانیتر باشد، فقط
RED_MSرا عوض کن. - چاپ اسم چراغ در سریال مانیتور به تو میگوید برنامه کجاست. اگر سریال «GREEN» میگوید ولی LED سبز خاموش است، مشکل در سیمکشی است، نه در کد.
اجرا را بزن: سبز ۴ ثانیه، زرد ۱ ثانیه، قرمز ۴ ثانیه. تمرین بعدی: یک کلید فشاری برای عابر پیاده اضافه کن که با فشار دادنش چراغ زودتر قرمز شود. نسخهی کاملش پروژهی چراغ عابر پیاده (Pedestrian Crossing) است و درس چراغ راهنمایی همین مدار را با تمرین قدمبهقدم یاد میدهد.
مثال کامل ۲: مدار سنسور پارک با HC-SR04 (Parking Sensor)
مدار دوم یک سنسور دارد، پس با مهمترین فرق شبیهساز با عکس مدار آشنا میشوی: عوض کردن ورودی در حین اجرا. مدار سنسور پارک (Parking Sensor) فاصله را با سنسور اولتراسونیک HC-SR04 میخواند و هر چه مانع نزدیکتر باشد، بازر تندتر بوق میزند و LED تندتر چشمک میزند؛ درست مثل سنسور عقب ماشین.
قطعهها و سیمکشی
یک آردوینو اونو، یک wokwi-hc-sr04، یک wokwi-buzzer، یک LED قرمز و یک مقاومت ۲۲۰ اهم بردار:
| پایهی قطعه | به آردوینو | رنگ سیم |
|---|---|---|
| HC-SR04: VCC | 5V | قرمز |
| HC-SR04: GND | GND | سیاه |
| HC-SR04: TRIG | پین ۹ | سبز |
| HC-SR04: ECHO | پین ۱۰ | آبی |
| بازر: پایهی مثبت | پین ۸ | نارنجی |
| بازر: پایهی منفی | GND | سیاه |
| LED: آند (از راه مقاومت ۲۲۰ اهم) | پین ۷ | سبز |
| LED: کاتد | GND | سیاه |
کد
// Parking sensor: HC-SR04 + buzzer + LED on an Arduino Uno
const int TRIG = 9;
const int ECHO = 10;
const int BUZZER = 8;
const int LED = 7;
const long WARN_CM = 100; // start beeping below this distance
void setup() {
Serial.begin(9600);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(BUZZER, OUTPUT);
pinMode(LED, OUTPUT);
}
long readDistanceCm() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH); // 10 microsecond trigger pulse
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long duration = pulseIn(ECHO, HIGH, 30000UL); // give up after 30 ms
if (duration == 0) return -1; // no echo
return duration / 58; // microseconds -> cm
}
void loop() {
long cm = readDistanceCm();
Serial.print("Distance: ");
Serial.print(cm);
Serial.println(" cm");
if (cm > 0 && cm < WARN_CM) {
int pause = map(cm, 0, WARN_CM, 40, 600); // closer = faster beeps
tone(BUZZER, 1000);
digitalWrite(LED, HIGH);
delay(80);
noTone(BUZZER);
digitalWrite(LED, LOW);
delay(pause);
} else {
noTone(BUZZER);
digitalWrite(LED, LOW);
delay(200);
}
}
اجرا را بزن و روی سنسور HC-SR04 کلیک کن تا کنترل فاصله ظاهر شود. فاصله را کم کن: زیر ۱۰۰ سانتیمتر بوق شروع میشود و هر چه نزدیکتر، تندتر. در سریال مانیتور هم عدد فاصله را میبینی. طرز کار سنسور و اینکه چرا زمان رفتوبرگشت صدا را بر ۵۸ تقسیم میکنیم، در فاصلهسنج اولتراسونیک HC-SR04 با آردوینو آمده است.
pulseIn (اینجا ۳۰ میلیثانیه) مهلت انتظار است. بدون آن، اگر پژواکی برنگردد، برنامه تا یک ثانیه منتظر میماند و بوقها نامنظم میشوند. اگر سیم ECHO را عمداً جدا کنی، در سریال عدد ۱- را میبینی؛ یعنی کد این حالت را هم درست مدیریت میکند.برای نسخهی بزرگتر این مدار، با دو سنسور، راهبند سروو و نمایشگر LCD، پارکینگ هوشمند با آردوینو را ببین.
همین مدارها در شبیهساز فارسی (تینکرکد فارسی)
شبیه ساز مدار تینکرکد فارسی دو مود دارد و هر دو مثال بالا را میشود در آن ساخت. همهچیزش فارسی است، روی اینترنت ملی هم باز میشود و برای ساختن مدار لازم نیست JSON ببینی؛ قطعه را میکشی، روی یک پایه و بعد روی پایهی مقصد میزنی تا سیم کشیده شود. اگر مدار را در فضای واقعی میخواهی ببندی، راهنمای ساخت مدار قدمبهقدم هم کنار این صفحه به کارت میآید.
مود ساده (دوبعدی، بدون کد)
اگر هنوز کد بلد نیستی یا با بچههای کوچکتر کار میکنی، چراغ راهنمایی را بدون آردوینو بساز: مدار چراغ راهنمایی دستی (Hand-worked Traffic Light) که هر چراغ با یک دکمه روشن میشود.
- شبیهساز را باز کن و مود «ساده» را بزن.
- یک باتری ۹ ولت، سه کلید فشاری، سه مقاومت و سه LED روی صفحه بکش. رنگ هر LED و مقدار هر مقاومت را از پنل ویژگیها عوض کن؛ مقاومتها را ۴۷۰ اهم بگذار. کلید R قطعهی انتخابشده را میچرخاند، درست مثل ووکوی.
- سیمکشی: مثبت باتری به یک پایهی هر سه دکمه؛ پایهی دیگر هر دکمه به یک مقاومت؛ سر دیگر هر مقاومت به آند یک LED؛ کاتد هر سه LED به منفی باتری.
- اجرا را بزن و دکمهها را یکییکی فشار بده.
اینجا یک فرق بزرگ با ووکوی میبینی: مود ساده جریان را واقعاً حساب میکند. با باتری ۹ ولت و LED قرمز، مقاومت ۴۷۰ اهم جریان را حدود ۱۵ میلیآمپر نگه میدارد. حالا مقاومت یکی از چراغها را حذف کن و دوباره اجرا کن: جریان از حدود ۴۰ میلیآمپر بالاتر میرود، LED میسوزد و یک هشدار فارسی میبینی. نسخهی آمادهاش پروژهی چراغ راهنمایی دستی است و ماجرای سوختن را در چرا LED بدون مقاومت میسوزد؟ مفصل خواندهایم.
مود آردوینو (با کد)
- مود «آردوینو» را بزن؛ یک اونو و بردبورد آماده است.
- سه LED و سه مقاومت را روی بردبورد بگذار و با همان جدول سیمکشی بالا (پینهای ۱۲، ۱۱ و ۱۰ و GND) وصلشان کن.
- کد چراغ راهنمایی را عیناً در ویرایشگر کد بچسبان و اجرا را بزن. اگر کد بلد نیستی، حالت «بلوک» همین برنامه را با کشیدن بلوکها میسازد.
- برای سنسور پارک، یک سنسور اولتراسونیک، بازر و LED بگذار و کد مثال دوم را بچسبان. در حین اجرا فاصلهی سنسور را از پنل ویژگیهایش عوض کن.
دکمهی «تبدیل» در مود ساده هم مدار دوبعدیات را به مود آردوینو میبرد؛ یعنی میتوانی اول بدون کد بازی کنی و بعد همان مدار را برنامهنویسی کنی. هر دو مدار به شکل پروژهی آماده هم هستند: چراغ راهنمایی با آردوینو و سنسور پارک با آردوینو. آردوینو اونو و نانو در تینکرکد فارسی رایگاناند؛ اگر میخواهی کدت با کامپایلر واقعی و روی تراشهی شبیهسازیشده اجرا شود، «اجرای واقعی» جزو اشتراک Plus تینکرکد فارسی است. مقایسهی کامل دو محیط در ووکوی یا تینکرکد؟ آمده است.
اشتباههای رایج سیمکشی در ووکوی
بیشتر مدارهایی که «کار نمیکنند» یکی از این اشکالها را دارند. قبل از اینکه سراغ کد بروی، این فهرست را مرور کن:
- LED برعکس: آند (A) باید سمت پین باشد و کاتد (C) سمت GND. LED برعکس فقط خاموش میماند و هیچ پیغامی نمیدهد.
- سیمی که به پایه نرسیده: اگر سیم را در جای خالیِ نزدیک پایه کلیک کنی، یک خم ساختهای نه اتصال. وقتی نشانگر روی پایه است و اسم پایه ظاهر شده، کلیک کن. با جابهجا کردن قطعه هم معلوم میشود: سیم وصل همراه قطعه حرکت میکند.
- پین کد با پین مدار یکی نیست: در کد نوشتهای پین ۱۲ ولی سیم روی ۱۳ است. نشانگر را روی سر سیم ببر و اسم پایه را بخوان.
- دو پایهی همطرف دکمه: کلید فشاری چهار پایه دارد و پایههای همشماره همیشه به هم وصلاند. اگر هر دو سیم را به پایههای همشماره بزنی، فشار دادن دکمه هیچ چیزی را عوض نمیکند. یک سیم به پایهای با شمارهی ۱ و سیم دیگر به پایهای با شمارهی ۲ بزن.
- ورودی بدون pull-up: دکمه را بین پین و GND بگذار و در کد
INPUT_PULLUPبنویس. ورودی شناور در برد واقعی نویز میخواند؛ در شبیهساز ممکن است عدد ثابتی ببینی و خیال کنی مدار درست است. - VCC یا GND ماژول جا افتاده: سنسورها و نمایشگرها تغذیه لازم دارند. حتی اگر شبیهساز بدون آن چیزی نشان داد، مدار واقعی کار نمیکند؛ همیشه هر دو را وصل کن تا مدار شبیهسازیشده با مدار واقعی یکی باشد.
- مقاومت LED جا افتاده: در ووکوی LED بدون مقاومت هم روشن دیده میشود، ولی روی برد واقعی LED و حتی پین آردوینو آسیب میبیند. این را با مود سادهی تینکرکد فارسی امتحان کن که سوختن را نشان میدهد.
- پین ۰ و ۱ اونو: این دو پین خطوط سریال (RX و TX) هستند. اگر LED یا دکمه رویشان بگذاری، با سریال مانیتور تداخل دارند.
analogWriteروی پین بدون PWM: در اونو فقط پینهای ۳، ۵، ۶، ۹، ۱۰ و ۱۱ (با علامت ~) PWM دارند. روی بقیه، نور LED فقط روشن یا خاموش است.- شکاف وسط بردبورد: دو نیمهی بردبورد به هم وصل نیستند. اگر دو پایهی یک قطعه در یک ردیف باشند، قطعه اتصال کوتاه شده است.
- ولتاژ ESP32 و پیکو: این بردها با ۳٫۳ ولت کار میکنند. ماژولی که در مدار اونو به 5V وصل بود، اینجا باید به 3V3 برود، مگر اینکه برگهی مشخصاتش ۵ ولت بخواهد.
اگر سیمکشی درست بود و باز هم کار نکرد، سراغ کد آردوینو کار نمیکند؟ ۱۵ علت رایج برو.
مدار بعدی چه باشد؟
- ۴۰ مدار آماده با اسم فارسی و انگلیسی و شناسهی قطعهها: ۴۰ مدار آردوینو برای ووکوی.
- مدارهای پایهی الکترونیک که با آردوینو کامل میشوند: مدارهای پایهی الکترونیک با آردوینو.
- همهی مقالههای مدار و شبیهسازی مدار در یکجا: مدار و شبیهسازی مدار.
سؤالهای رایج
در ووکوی چطور سیم بکشم؟
روی پایهی اول کلیک کن، اگر خم میخواهی در جای خالی صفحه کلیک کن و در آخر روی پایهی مقصد کلیک کن. بعد از کشیدن، با انتخاب سیم میتوانی رنگش را عوض کنی یا پاکش کنی.
قطعه را در ووکوی چطور بچرخانم؟
قطعه را انتخاب کن و کلید R را بزن؛ هر بار ۹۰ درجه میچرخد. چرخش در فایل diagram.json با کلید rotate ذخیره میشود.
چرا LED در ووکوی بدون مقاومت هم روشن میشود؟
چون ووکوی بیشتر کد و منطق دیجیتال را شبیهسازی میکند و جریان را مثل یک شبیهساز آنالوگ حساب نمیکند. در مدار واقعی LED بدون مقاومت ممکن است بسوزد؛ مود سادهی تینکرکد فارسی همین سوختن را نشان میدهد.
مداری که در ووکوی ساختم بدون ثبتنام ذخیره میشود؟
نه. برای ذخیره در wokwi.com باید وارد حساب شوی. اگر حساب نداری، دستکم محتوای sketch.ino و diagram.json را کپی کن و جایی نگه دار. در شبیهساز فارسی مدار بدون ثبتنام روی همان دستگاه ذخیره میشود.