İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bu stand, odadaki ışık seviyesine göre bir perdeyi otomatik olarak kontrol etmek için tasarlanmış Arduino kontrollü step motoru barındırmak için kullanılır. Işık seviyesini yazdırmak için bir LCD ekran da ekleyebilirsiniz. 3D donanım sadece tanıtım amaçlıdır, perde gibi pratik uygulamalar için gerçek bir donanıma ihtiyaç duyulabilir ve aynı zamanda aklınıza gelebilecek herhangi bir başka uygulama da gerekebilir.
Adım 1: Malzemeler
Bu projeye başlamak için ihtiyacınız olacak;
- 2 Arduino chip-set- Arduino motor shield- Arduino LCD Ekran- 1 Breadboard- 1 bi-polar Step Motor- 1 D pil- 1 Işık Bağımlı Direnç - 1 10k Ω Direnç- 10 Erkek-erkek kablo- 6 Erkek- dişi teller - 3D yazıcıya erişim
Adım 2: Arduino'nun İnşası
İlk önce motor kalkanını Arduino pinleriyle hizalayın ve sıraya girdikten sonra sıkıca yerleştirin. Ardından step motorun kablolarını motor blendajının 8, 9, 10 ve 11 numaralı pinlerine takın. Bundan sonra, D pilini şemada gösterildiği gibi yuvalara bağlayın. Ardından, 6 kabloyu (erkekten dişiye) almak isteyeceksiniz. LDR'yi devre şemasında gösterildiği gibi diğer Arduino ünitesine takın. Daha sonra LDR'yi yukarıda gösterildiği gibi direnç negatif sıraya bağlayarak kurun. LDR'yi eklerken direncin olduğu tarafa ekleyin A0 bağlantıları ve karşı tarafta, kullandığınız her kart için 1 5V giriş ekleyin, bu nedenle 2 kart kullanıyorsanız, her birinin LDR'ye giden bir 5V ve A0 pinine sahip olmasını isteyeceksiniz.
Tüm kabloları şemadaki gibi olacak şekilde bağlayın - LDR'ye 2 Giriş - LDR'den 2 Çıkış ve toprağa bağlanan bir direnç - LCD'ye 8 kablo, 1 5V, 1 Toprak ve 6 giriş - 4 kablo ağa bağlanır stepper- aküye 2 bağlantı- Breadboard topraklaması bağlanmalıdır
Adım 3: Arduino'yu Kodlamak
LDR'ye göre vitesin durumunu değiştirmek için bazı örnek kodlar
Bu, projenin bir perdeyi otomatik olarak kontrol etmesini sağlayacak koddur. Yukarıdaki fotoğraf, perdenin yukarı, aşağı veya olduğu yerde kalması açısından iç içe IF ifadelerinde farklı yolları açıklamaktadır. (biçimlendirme sorunları olduğu için tam olarak görmek için resmin üzerine tıklayın)
#defineLDRA0//"LDR" değişkenini A0 pinine tanımlar#include
constintstepsPerRevolution=200;//Adım motor etkinleştirildiğinde, tam dönüşü 200 adıma eşittir
SteppermyStepper(stepsPerRevolution, 8, 9, 10, 11);//stepper'a girişi pin 8, 9, 10, 11 olarak tanımlar
voidsetup(){myStepper.setSpeed(60);//Motorun bir rotasyonpinMode(LDR, INPUT) ne kadar hızlı yapacağını ayarlar;//"LDR" değişkenini bir giriş olarak tanımlar Serial.begin(9600);//Seri okumayı başlatır }
voidloop(){intlightlevel=analogRead(LDR);//"LDR"Serial.print("Light Level: ");Serial.println(lightlevel);// değerini okuyan bir eylem olarak "lightlevel" değişkenini tanımlar Yukarıdaki başlık ile "lightlevel" değerini yazdırır
/* Artık yolun her noktasında ışık seviyesini algılayan bir döngü var * 3 seçenek mevcut, yukarı git, aşağı git, aynı pozisyonda kal* Işık seviyesi aynı kalırsa, ışık seviyesi aynı kalacak şekilde tasarlanmıştır. aynı kal yoksa değişir* yani 950 ise 952'ye gider bir şey olmaz ama 950'den 600'e çıksa perdeyi çeker tam tersi * Her adım bir harfle belirtilir adımın önünde, seri monitör aracılığıyla döngüde nerede olduğunu izlemek için */
if(lightlevel>=900){Serial.println("A");// loopmyStepper.step(3*stepsPerRevolution);//Adım 3 ileri devir yapar. Negatif ise, geri giderdelay(30000);// 5 dakika orada bırakır intlightlevel=analogRead(LDR);// "lightlevel" değişkenini LDRSerial.print("Işık Düzeyi: ")'den alınan en son okuma olarak tanımlar.;//Metni Serial.println(lightlevel) değişkeninin önüne yazdırır// Işık seviyesinin değerini yazdırır
if(lightlevel>=900){Serial.println("B");myStepper.step(0);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println (ışık seviyesi);
if(lightlevel>=900){Serial.println("C");myStepper.step(3*-stepsPerRevolution);delay(500);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: "); Serial.println(ışık seviyesi);}
else{Serial.println("D");myStepper.step(3*-stepsPerRevolution);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println(ışık seviyesi);}}
else{Serial.println("E");myStepper.step(3*-stepsPerRevolution);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println(ışık seviyesi);
if(lightlevel>=900){Serial.println("F");myStepper.step(0);delay(500);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println (ışık seviyesi);}
else{Serial.println("G");myStepper.step(0);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println(lightlevel);}}
}
else{Serial.println("H");myStepper.step(0);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println(ışık seviyesi);
if(lightlevel>=900){Serial.println("I");myStepper.step(3*stepsPerRevolution);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Seri.println(ışık seviyesi);
if(lightlevel>=900){Serial.println("J");myStepper.step(3*-stepsPerRevolution);delay(500);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: "); Serial.println(ışık seviyesi);}
else{Serial.println("K");myStepper.step(3*-stepsPerRevolution);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println(ışık seviyesi);
}}
else{Serial.println("L");myStepper.step(0);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println(ışık seviyesi);
if(lightlevel>=900){Serial.println("M");myStepper.step(0);delay(500);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println (ışık seviyesi);}
else{Serial.println("N");myStepper.step(0);delay(10000);intlightlevel=analogRead(LDR);Serial.print("Işık Seviyesi: ");Serial.println(ışık seviyesi);
}}
}
}
Adım 4: İsteğe bağlı: LCD Ekran
Bu, LDR tarafından algılanan ışık seviyesini LCD ekrana yazdırır.
#Dahil etmek
-
//Ek kodla likit kristal kitaplığını ekler#define ldr A0 //"ldr" değişkenini A0 pinine tanımlar
LiquidCrystal lcd (8, 9, 4, 5, 6, 7); // kütüphaneyi arayüz pinlerinin numaralarıyla başlat
voidsetup() { //startlcd.begin(16, 2); // LCD'nin sütun ve satır sayısını sırasıyla ayarlayınpinMode(ldr, INPUT); // ldr'yi pinSerial.begin(9600) girişi olarak tanımlar; // Seri monitör ile iletişimi başlatır
}
voidloop() { //sürekli tekrarlanacak kodSerial.println(analogRead(ldr)); // ldr'nin aldığı okumayı (0-1023 arasında bir sayı) seri monitorlcd.setCursor(6, 0); // imleci sütun 6, satır 0lcd.print(analogRead(ldr)); // Bu okumayı LCD ekran gecikmesine yazdırır(1000); // Sonraki komutu bir saniye geciktirir
}
Adım 5: Basılı Parçalar
Standı ve donanımı yazdırmak için aşağıdaki dosyaları kullanın. Donanımı kendi amaçlarınız için özelleştirebilir ve braketi duvara veya ekran olarak monte etmek için kullanabilirsiniz. 3D dişli zayıf olduğundan, kontrol edeceği perdeye uyduğu sürece onun yerine gerçek bir dişli kullanılabilir.
3D baskılı dişli kullanılacaksa dişlinin dişlerinden biri sökülerek ayar vidası ile motora sabitlenebilir.
Duvara monte edilecekse, duvar braketinin ön 2 ayağı da çıkarılabilir. Sadece biz test ederken ayağa kalkması için eklendiler.
6. Adım: Yerleştirme
Artık tüm parçalar hazır olduğuna göre, son yerleştirmeye başlama zamanı.
Öncelikle step motorunu stand üzerinde verilen kutuya yerleştirin ve dişliyi dingilin üzerine yerleştirinSonra, telleri standın arkasına geçecek şekilde hareket ettirinSon olarak arduino ve pili standın arkasına yerleştirin
Tahtanız şimdi yukarıdaki resimdeki gibi görünmelidir.
Tebrikler!
Vites, otomatik perdeler veya LDR tarafından kontrol edilmesini istediğiniz herhangi bir şey için kullanılabilir.
Bitirdiniz. Yeni yaratımınızın keyfini çıkarın.