Toplam 200 ruble basit bir iş için iyi bir temel satın almak. Proje, yabancı meslektaşları Adruino Sanat ile tamamlandı. Uygulanması için robotik, elektronik temel ilkelerini bilmek ve biraz programlama anlamak gerekir. Video klip yazar söyler ve bir sonuç almak gerektiğini göstermektedir. Oyuncak Kit - lambalar ek olarak Grove bir dizi gerekir. Sipariş online fiyat 79,9 $ ile alışveriş yapabilirsiniz. Ana fikir - hareket algılama ile nesnenin statik veya dinamik devletin tanımı. Cevap olumlu ise, o zaman tahrik birini çalıştırın ve önceden kaydedilmiş mesajı oynatma. Aksi takdirde, 2. servo ve farklı bir ses kaydı aktif. Girdi çeşit geçiyor belirlenmesi. Böylece, biz ikili kod 0 veya 1 sonucu almak. Kaydedici harici bir sinyal ile kaydedilen sesi sadece 4 oynatabilirsiniz. (Her 15 sn.) Kaydetmek için, bu «rekor» düğme «oyun» açmak için gereklidir. Geçmelisiniz düğmesine tekrar kaydettikten sonra. Bu kod ile yapılabilir (fonksiyon çalma ()). Servo kablosu 3 "artı", "eksi" ve dijital veriler. İlk 2 anahtarının durumu hakkında ve kod aldığı bilgileri servo (max 7) ve 3 dijital çıkışına bağlanır, yiyecek sağlamak. İlk lamba çözümlü. Biz elektrik bileşenleri ihtiyacımız, ama çok temel çalışması gerekmez. Ayrıca bazı sahne ve destekleyici unsurları gerekir. Bizim tasarım bağlamak için tüp içinde bir delik açın. prototip robot hazır!
Adım 1: Kızdırma LED lamba IKEA OLEBY Kullanma (Gıda güneş enerjili). anahtar, sadece bir sayısal cihaza çalışır ve bu nedenle, mevcut ağ bağlıdır. Biz podsoedynym Öde Seeeduino geçerseniz, dijital çıkış DÜŞÜK ayarlayabilirsiniz, ve sonra geçerli olacak. YÜKSEK koyarak, bu görüntülenir. Hatta lamba içinde ve biz LED korumak için bir direnç takın. Metal tabanı ışık elemanı ayarlayın.
Adım 2: İlke Biz lamba takılı servo dedektörü kontrolü, üçlü eksen ivmeölçer, kaydedici ve 4 farklı sesler oynarlar. aşağıdaki gibi lambanın temel ilkedir:
Bu gürültü (ses) çıkıyor Lamba dahil Skor rekor №3 El Lambası hareketini sağlayan (sol-sağ sol) Servo 90 ° kalır Tamamlanan işlem
Sonra gürültü varsa:
Lamba dahil Lamba hareket Servo sol Skor rekor №2 Pozisyon geri 90 ° Lamp Tamamlanan işlem
Metal kol belli bir (yüksek) konum ulaşırsa, o zaman kayıt №4 oynuyor.
Adım 3: İyileştirme Tasarım çalışmaları düzenli bir döngü IF kullanarak kod yürütülmesine kontrol etmek, bir geçiş ücreti Seeeduino gömme gibi bazı iyileştirmeler yapabilirsiniz. Anahtar açıksa - mod kılavuzu - değilse mod otomatik başlar. Lamba ses yanıt Auto modu standart kodu. Manuel mod eksenleri X ve Y konumunu değiştirerek, bir üçlü eksen ivme ile uzaktan yönetim olanağı sağlar Bunu ayrı bir servo ekleyerek, 360 ° bir dönüş ışıkları yapabilirsiniz. Ben Wi-Fi / Ethernet yoluyla bağlamak için kurulmuş Can. Adım 4: Kod Yazar kodu (MrLdnr) aşağıda bulabilirsiniz. [Spoiler] #include #define buttonPin = 4; // Konum anahtarı int buttonState = 0; // Pozisyon düğmeleri okumak için Değişken // Servo Kurulumu Servo myservo2; Servo myservo; // Servo kontrolü için oluşturur int pos = 0; // Değişken servo konumunu saklamak için int POS2 = 0; // Değişken servo konumunu saklamak için int val1; int val2; // LED AYAR #define ledPin2 = 5; // Ana ışık #define ledPin = 12; // Boru ışık int countlamp2 = 0; // Gürültü Ayarı #define thresholdvalue = 300; // ses yanıtı // Set akseleometra int ystate; int xstate; #include #define MMA766ddr 0x4c #define MMA7660_X 0x00 #define MMA7660_Y 0x01 #define MMA7660_Z 0x02 #define MMA7660_TILT 0x03 #define MMA7660_SRST 0x04 #define MMA7660_SPCNT 0x05 #define MMA7660_INTSU 0x06 #define MMA7660_MODE 0x07 #define MMA7660_SR 0x08 #define MMA7660_PDET 0x09 #define MMA7660_PD 0x0A sınıf Hızlanma { Kamu: karakter x; y ateşinde; Char z; };
Char indeksi; Char kontrol; Char devlet; int audiodelay = 1000; void mma7660_init (void) { Wire.begin (); Wire.beginTransmission (MMA766ddr); Wire.send (MMA7660_MODE); Wire.send (0x00); Wire.endTransmission (); Wire.beginTransmission (MMA766ddr); Wire.send (MMA7660_SR); Wire.send (0x07); // Örnekleri / İkinci Aktif Modu ve Otomatik Uyku Wire.endTransmission (); Wire.beginTransmission (MMA766ddr); Wire.send (MMA7660_MODE); Wire.send (0x01); // aktif mod Wire.endTransmission (); }