Mündəricat:

LEDlər və cazibə qüvvəsi?: 4 addım
LEDlər və cazibə qüvvəsi?: 4 addım

Video: LEDlər və cazibə qüvvəsi?: 4 addım

Video: LEDlər və cazibə qüvvəsi?: 4 addım
Video: Led işıqlar qadağandırmı? | Hansı işıqları quraşdırmaq olmaz? | LED və ksenonlar 2024, Iyul
Anonim
LEDlər və cazibə qüvvəsi?
LEDlər və cazibə qüvvəsi?

Bu layihənin praktik olaraq heç bir faydası yoxdur, ancaq Arduinoda C-kodda cazibə qüvvəsi ilə əlaqəli fizika düsturlarını tətbiq etmək üçün bir məşq olaraq başladı. İşlərin görünməsini təmin etmək üçün 74 LEDli bir neopixel LED şeridi istifadə edildi. Bir cisim üzərində cazibə sürətinin təsiri MPU-6050 sürətölçən və giroskop çipi ilə göstərilir. Bu çip fiziki olaraq LED şeridinə bağlıdır, buna görə də LED zolağı müəyyən bir açıda tutulduqda çip LED şeridinin bucağını ölçür və Arduino bu məlumatdan sanki bir virtual obyektin vəziyyətini yeniləmək üçün istifadə edir. bir şüa üzərində balanslaşdırılmış və şüa bir açıda tutularsa bir tərəfdən digərinə yuvarlanan bir top idi. Virtual obyektin mövqeyi LED şeridində işıqlandırılmış tək bir LED olaraq göstərilir.

Yerin cazibə qüvvəsinin təsiri altında yerə düşən bir virtual obyektin mövqeyini yeniləmək üçün düsturdan istifadə edirik:

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

İlə:

y = metrlə gedilən məsafə y0 = metrlə başlanğıc məsafəsi v0 = metr/saniyədə başlanğıc sürəti a = metr/saniyədə sürətlənmə (çəkisi)^2 t = saniyələrdə vaxt

Addım 1: Dövrə

Dövrə
Dövrə

Arduino Pro Mini, 5V tənzimləyicinin çıxışı olan +5V pininə +5V təchizatı ilə qidalanır. Bu bir az ortodoksal görünə bilər, ancaq Vin açıq qaldıqda, polariteyi geri çevirmədiyiniz müddətcə problem yaratmır, çünki bu, şübhəsiz ki, Arduino -nuzu qızardacaq.

MPU6050 sürətölçən və giroskop çipi aşağı güclü 5V -dən 3V3 -ə qədər çevirici modulu ilə təchiz olunmuşdur və I2C interfeysi (SDA, SCL) vasitəsilə Arduino ilə danışır. Arduino Pro Mini ilə SDA A4 -ə, SCL isə Arduino Pro Mini PCB -də yerləşən A5 -ə qoşulur. İstifadə etdiyim Pro Mini versiyası ilə A4 və A5 PCB içərisində idi (2 deşik) və PCB -nin yan tərəfindəki pin başlıqları ilə əldə edilə bilmədi. MPU6050, yeni məlumatlar olduqda Arduino -ya məlumat vermək üçün istifadə olunan bir kəsmə çıxışına (INT) malikdir. 74 LEDli WS2812B neopixel LED şeridi birbaşa 5V təchizatı ilə təchiz edilmişdir və Arduino çıxışına qoşulmuş 1 məlumat xəttinə (DIN) malikdir.

Addım 2: Proqram təminatı

Eskiz (.ino) tərəfindən istifadə olunan bütün sürücüləri kitabxana istifadə etmək əvəzinə eskizlə eyni qovluğa qoydum. Bunun səbəbi, sürücülərin yenilənməsini, səhvlərin gizlənməsini və sürücülərə etdiyim dəyişikliklərin yeniləmələrin üzərinə yazılmasının qarşısını almaq istəməməyimdir.

İşdə layihə fayllarının siyahısı:

  • Balancing_LED_using_MPU6050gyro.ino: eskiz faylı
  • MPU6050.cpp / MPU6050.h: MPU6050 akselerometr və giroskop sürücüsü
  • MPU6050_6Axis_MotionApps20.h: MPU6050 DMP (rəqəmsal hərəkət prosessoru) tərifləri və funksiyaları
  • helper_3dmath.h: Dördbucaqlılar və tam ədəd və ya üzən vektorlar üçün sinif tərifləri.
  • I2Cdev.cpp / I2Cdev.h: Arduino tel kitabxanasından istifadə edən I2C sürücüsü
  • LEDMotion.cpp / LEDMotion.h: MPU6050 ilə ölçülən LED şeridi və bucağı istifadə edərək çəkisi LED balansının tətbiqi.

Addım 3: Şəkillər

Tövsiyə: