İçindekiler:

LED'ler ve Yerçekimi ?: 4 Adım
LED'ler ve Yerçekimi ?: 4 Adım

Video: LED'ler ve Yerçekimi ?: 4 Adım

Video: LED'ler ve Yerçekimi ?: 4 Adım
Video: Ay’a Çıkan İlk İnsanın Yıllardır Sakladığı Sır Ortaya Çıktı! 2024, Kasım
Anonim
LED'ler ve Yerçekimi?
LED'ler ve Yerçekimi?

Bu projenin pratik bir kullanımı yoktur, ancak bir Arduino'da C-kodunda yerçekimi ile ilgili fizik formüllerinin uygulanmasında bir alıştırma olarak başlatılmıştır. İşleri görünür kılmak için 74 LED'li bir neopiksel LED şeridi kullanıldı. Yerçekimi ivmesinin bir nesne üzerindeki etkisi, bir MPU-6050 ivmeölçer ve jiroskop çipi kullanılarak gösterilmiştir. Bu çip LED şeridine fiziksel olarak bağlıdır, bu nedenle LED şeridi belirli bir açıda tutulduğunda çip LED şeridinin açısını ölçer ve Arduino bu bilgiyi sanal bir nesnenin konumunu sanki bir sanal nesnenin konumunu güncellemek için kullanır. bir kiriş üzerinde dengelenmiş ve kiriş bir açıyla tutulursa bir taraftan diğerine yuvarlanan bir toptu. Sanal nesnenin konumu, LED şeridinde, yanan tek bir LED olarak gösterilir.

Yerçekimi etkisi altında yere düşen sanal bir cismin konumunu güncellemek için şu formülü kullanırız:

y = y0 + (V0 * t) + (0,5 * bir * t^2)

İle birlikte:

y = metre cinsinden gidilen mesafe y0 = metre cinsinden başlangıç mesafesi v0 = metre/saniye cinsinden başlangıç hızı a = metre/saniye cinsinden ivme (yerçekimi)^2 t = saniye cinsinden süre

Adım 1: Devre

Devre
Devre

Arduino Pro Mini, yerleşik 5V regülatörün çıkışı olan +5V pinine doğrudan +5V besleme besleyerek çalışır. Bu biraz ortodoks görünebilir, ancak Vin açık bırakıldığında, polariteyi tersine çevirmediğiniz sürece bir sorun yaratmaz, çünkü bu kesinlikle Arduino'nuzu kızartır.

MPU6050 ivmeölçer ve jiroskop çipi, düşük güçlü bir 5V - 3V3 dönüştürücü modülü ile çalıştırılır ve bir I2C arayüzü (SDA, SCL) aracılığıyla Arduino ile konuşur. Arduino Pro Mini ile, her ikisi de Arduino Pro Mini PCB üzerinde bulunan SDA, A4'e ve SCL, A5'e bağlanır. Kullandığım Pro Mini versiyonu ile A4 ve A5 PCB'nin (2 delik) içinde bulunuyordu ve PCB'nin yanlarındaki pin başlıklarından erişilebilir değildi. MPU6050'de ayrıca yeni veriler olduğunda Arduino'ya haber vermek için kullanılan bir kesme çıkışı (INT) vardır. 74 LED'li WS2812B neopiksel LED şeridi, doğrudan 5V beslemeden güç alır ve Arduino'nun bir çıkışına bağlı 1 veri hattına (DIN) sahiptir.

2. Adım: Yazılım

Kitaplıkları kullanmak yerine krokinin (.ino) kullandığı tüm sürücüleri kroki ile aynı klasöre koyuyorum. Bunun nedeni, sürücülerin güncellenmesini istemem, hataların gizlice girmesini ve sürücülerde yaptığım değişikliklerin güncellemeler tarafından üzerine yazılmasını önlemek için.

İşte proje dosyalarının bir listesi:

  • Balancing_LED_using_MPU6050gyro.ino: çizim dosyası
  • MPU6050.cpp / MPU6050.h: MPU6050 ivmeölçer ve jiroskop sürücüsü
  • MPU6050_6Axis_MotionApps20.h: MPU6050 DMP (dijital hareket işlemcisi) tanımları ve işlevleri
  • helper_3dmath.h: Kuaterniyonlar ve tamsayı veya kayan vektörler için sınıf tanımları.
  • I2Cdev.cpp / I2Cdev.h: Arduino tel kitaplığını kullanan I2C sürücüsü
  • LEDMotion.cpp / LEDMotion.h: MPU6050 tarafından ölçülen LED şerit ve açı kullanılarak yerçekimi LED dengesinin uygulanması

3. Adım: Resimler

Önerilen: