🥤 ماموریت ۹۸: دستگاه فروش خودکار
کیپد ردیفها D9–D6 و ستونها D5–D2، LCD I2C روی A4/A5، سروو D10. کد را با getKey جمع کن، با * تأیید کن و سروو جنس را بندازه.
سطح: چالشی ⭐⭐⭐ · مود: آردوینو — با کد
هدفها
- ☐ یه آردوینو روی صحنه باشه
- ☐ یه کیپد
- ☐ یه LCD
- ☐ یه سروو
- ☐ کلید خونده بشه
- ☐ پیام روی LCD
- ☐ شبیهسازی در حال اجرا
قطعههای لازم
- Arduino Uno
- Keypad 4×4
- LCD 16×2 I2C
- سروو موتور
💡 گیر کردی؟ داخل شبیهساز راهنما را ببین، و اگر باز هم نشد دکمهی «برام حلش کن» مدار را برایت میچیند تا ببینی چطور کار میکند.
جواب کامل
اول خودت امتحان کن! بعد جواب را ببین 👀
سیمکشی
- Arduino Uno (D9) ⟷ Keypad 4×4 (R1)
- Arduino Uno (D8) ⟷ Keypad 4×4 (R2)
- Arduino Uno (D7) ⟷ Keypad 4×4 (R3)
- Arduino Uno (D6) ⟷ Keypad 4×4 (R4)
- Arduino Uno (D5) ⟷ Keypad 4×4 (C1)
- Arduino Uno (D4) ⟷ Keypad 4×4 (C2)
- Arduino Uno (D3) ⟷ Keypad 4×4 (C3)
- Arduino Uno (D2) ⟷ Keypad 4×4 (C4)
- Arduino Uno (VCC5) ⟷ LCD 16×2 I2C (VCC)
- LCD 16×2 I2C (GND) ⟷ Arduino Uno (GND1)
- Arduino Uno (A4) ⟷ LCD 16×2 I2C (SDA)
- Arduino Uno (A5) ⟷ LCD 16×2 I2C (SCL)
- Arduino Uno (VCC5) ⟷ سروو موتور (VCC)
- سروو موتور (GND) ⟷ Arduino Uno (GND2)
- Arduino Uno (D10) ⟷ سروو موتور (SIG)
کد
// Vending machine: type a code (A1, A2, B1), pay with *, servo drops the item
#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad pad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x27, 16, 2);
Servo drop;
String code = "";
void show(String top, String bottom) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(top);
lcd.setCursor(0, 1);
lcd.print(bottom);
}
void setup() {
lcd.init();
lcd.backlight();
drop.attach(10);
drop.write(0);
show("Choose: A1 A2 B1", "then press *");
}
void loop() {
char k = pad.getKey();
if (!k) return;
if (k == '#') { code = ""; show("Cleared", ""); return; }
if (k != '*') { code += k; show("Code:", code); return; }
if (code == "A1" || code == "A2" || code == "B1") {
show("Here you go!", code);
drop.write(90);
delay(1000);
drop.write(0);
} else {
show("Wrong code", code);
}
code = "";
delay(1500);
show("Choose: A1 A2 B1", "then press *");
}
ماموریتهای مشابه
🛗
ماموریت ۹۷: آسانسور با ماشین حالت
🐍
ماموریت ۹۹: بازی مار روی ماتریس
🌞
ماموریت ۹۶: ردیاب خورشید
🗂️
ماموریت ۱۰۰: ثبت دما روی کارت SD
📚 برای یاد گرفتن پایهها سری به دورهی آموزش آردوینو بزن · 🎯 همهی ماموریتها