Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
hammaga salom! bu mening DIY kamerasi slayderining loyihasi, men bilan vaqtim qiyin bo'lgan, lekin aminmanki, agar siz tafsilotlarga ko'proq e'tibor bersangiz, u ishlaydi!
nazariy jihatdan, bu to'liq ishlashi kerak
Agar siz buni qilishni tanlasangiz, sizga yoqadi deb umid qilaman!
1 -qadam: Materiallarni yig'ing
Elektron materiallar
- Arduino
- ikkita 360 ta servo
- non taxtasi
- rezistorlar
- tugmalar (yaxshisi 3)
Qurilish materiallari
- ikki bo'lak ko'pikli taxta
- yog'och dublonlar (metall bo'lishi mumkin)
- yog'och oval shaklidagi bo'laklar (kirish rasmidagi rasmga qarang).
2 -qadam: sozlash
bu fotosurat sxemasi
Buni kuzatib boring va sizning loyihangiz ishlaydi!
3 -qadam: Non paneli taxtasi
- birinchi navbatda, musbat va zaminni non paneliga ulang.
- Ikkinchidan, ikkita servo ulang … va ikkita simni erga va musbatga, ikkinchisini siz tanlagan pinga ulang. (E'tibor bering, kodda men tanlagan pinlar bo'ladi).
- keyin tugmalaringizni yig'ing … siz tanlagan pinlarga ulanishni unutmang, lekin agar men tanlagan pinlardan foydalanmasangiz, kod ishlamaydi. tugmachalarni ham erga ulang.
- va 220 rezistordan foydalaning.
- Nihoyat, agar siz LCD monitordan foydalanmoqchi bo'lsangiz, analog kirishga 2 ta pin va musbat terminalga bitta simni ulashingiz kerak bo'ladi.
4 -qadam: Arduino kodi
#qo'shish #qo'shish #qo'shish
LiquidCrystal_I2C lcd (0x27, 16, 2); // 16 ta belgi va 2 qatorli displey uchun LCD manzilni 0x27 ga o'rnating
Chap servo servo; // Chap servo Servo servoRightni belgilang; // To'g'ri servolarni aniqlang
const int startbut = 8; // startbut uchun pin (startbutton) const int forwardbut = 12; // oldinga o'tish uchun pin (oldinga tugma) const int teskari = 13; // teskari burilish uchun pin (teskari tugma) int tim = 500; // kechikish vaqtining qiymati int flag = 0; int soni = 0;
char array1 = "xush kelibsiz"; // LCD -da chop etiladigan satr ("xush kelibsiz") char array2 = "chapga = SOL, o'ng = O'ngga!"; // LCD -da chop etiladigan satr ("chapga = SOL, o'ngga = O'ngga")
void setup () {servoLeft.attach (10); // Chap servo raqamli pin 10 servoRight.attach (9) ga o'rnating; // o'ng servo raqamli pin 9 servoLeft.write (90) ga o'rnating; // servolarni 90 darajaga qo'ying servoRight.write (90); kechikish (100);
// pinni pinMode kirishiga aylantiradi (startbut, INPUT); // startbut (startbutton) ni kirish pinMode (teskari qaytarish, INPUT) sifatida ishga tushirish; // teskari tugmani (teskari tugmachani) kirish pinMode (oldinga, INPUT) sifatida ishga tushirish; // kirish tugmachasini (oldinga tugma) kirish sifatida ishga tushiring
}
void loop () {// Harakat testlaridan o'tish // LCD monitor uchun kod if (flag == 1 && count == 0) {count = 1; lcd.init (); // lcd lcd.backlight () ni ishga tushirish; // orqa yorug'likni oching
lcd.setCursor (15, 0); // kursorni 15 -ustunga, 0 -qatorga qo'ying (int positionCounter1 = 0; positionCounter1 <26; positionCounter1 ++) {lcd.scrollDisplayLeft (); // Displey mazmunini chapga bir bo'sh joyga aylantiradi. lcd.print (qator1 [positionCounter1]); // Xabarni LCD displeyda chop eting. kechikish (vaqt); // 250 mikrosaniyani kuting} lcd.clear (); // LCD displeyni tozalaydi va kursorni chap yuqori burchakka joylashtiradi. lcd.setCursor (15, 1); // kursorni 15 -ustunning 1 -qatoriga qo'ying (int positionCounter = 0; positionCounter <26; positionCounter ++) {lcd.scrollDisplayLeft (); // Displey mazmunini chapga bir bo'sh joyga aylantiradi. lcd.print (qator2 [positionCounter]); // Xabarni LCD displeyda chop eting. kechikish (vaqt); // 250 mikrosaniyani kuting} lcd.clear (); // LCD displeyni tozalaydi va kursorni chap yuqori burchakka joylashtiradi. } //////////////////////////////////////////////////////////////////////////////////////////////////// / //////////////////////////////////////////////////////
/tugmalar bosilganligini tekshiring, agar (digitalRead (startbut) == 1) {flag = 1; // tugmani ishga tushirish uchun bayroq o'zgaruvchisi}
if (flag == 1) {if (digitalRead (teskari) == YUQORI) // teskari bosilsa, servo yoqiladi {teskari (); // teskari tugma uchun teskari o'zgaruvchi} else if if (digitalRead (forwardbut) == HIGH) // forwardbut pressed servo {forward (); // forward tugmasi uchun oldinga o'zgaruvchi} else {stop (); // tugmalar bosilmaganda servolarning harakatini to'xtatish uchun to'xtash o'zgaruvchisi}}
}
// Oldinga, orqaga va bo'sh joyni oldinga siljitish tartiblari () {// oldinga servoLeft.write buyrug'i (0); // servo aylanadigan yo'nalish servoRight.write (180); } void stop () {// stop buyrug'i servoLeft.write (90); // ikkala servo bir joyda to'xtaydi, aks holda ular har xil holatda bo'ladi servoRight.write (90); } void reverse () {// teskari buyruq servoLeft.write (180); // servo qarama -qarshi yo'nalishda faollashadi servoRight.write (0); }
Mana muvaffaqiyat kodi! Arduino -ni o'rnatgandan so'ng, hamma narsa ishlashi kerak! va zavqlaning!
Agar u ishlamasa, bu ko'rsatmaga qarang va hamma narsani tekshiring!