İçindekiler:

Elektrikli Su Terazisi Yaratın: 15 Adım
Elektrikli Su Terazisi Yaratın: 15 Adım

Video: Elektrikli Su Terazisi Yaratın: 15 Adım

Video: Elektrikli Su Terazisi Yaratın: 15 Adım
Video: hortum terazisi ile yükseklik ölçme #inşaat#ölçmek#su terazisi#bilgi#işçilik 2024, Temmuz
Anonim
Elektrikli Bir Su Terazisi Yaratın
Elektrikli Bir Su Terazisi Yaratın

Takılı herhangi bir nesnenin eğimini hızlı ve kolay bir şekilde görüntülemek için bu su terazisini kullanın!

Raffles Institution'dan Kaitlyn tarafından düzenlendi.

1. Adım: Hedefler

micro:bit'in yerleşik ivmeölçeriyle eğimi okumayı öğrenin.

micro:bit'in 5x5 LED Ekranıyla çalışmayı öğrenin!

Adım 2: Malzemeler

1 x BBC mikro:bit

1 x Mikro USB kablosu

2 x AA Pil

1 x Çift AA Pil Paketi

Adım 3: Ön Kodlama: Micro:Bit'inizi Bağlayın

  1. Bir mikro USB kablosu kullanarak BBC micro:bit'i bilgisayarınıza bağlayın.
  2. makecode.microbit.org adresinden micro:bit için javascript düzenleyicisine erişin.

Adım 4: Adım 0: Kod Akışı

Kodu yazmaya başlamadan önce, programla neyi başarmak istediğimize ve her bileşenin hangi sırayla çalışması gerektiğine karar vermemiz gerekiyor.

Elektrikli su terazisi için her döngü için kodda atacağımız adımlar şunlardır:

  • İvmeölçerden eğim okumalarını okuyun.
  • LED matrisinde görüntülenecek eğim okumalarını eğim seviyelerine dönüştürün.
  • Önceki döngüden eğim seviyesi okumalarında değişiklik olup olmadığını kontrol edin.
  • Farklı eğim durumları ve yönleri için LED koordinatları dizisi oluşturun.
  • LED koordinatlarını mikro:bit LED matrisi üzerine çizin.

Eklememiz gereken birkaç ek işlev şunlardır:

  • İlk eğim konumu için kalibrasyon.
  • Varsayılan eğim kalibrasyonuna geri dönülüyor.

Adım 5: Adım 1: Değişkenleri Tanımlama

Gereken değişkenleri gösterildiği gibi tanımlayarak başlıyoruz. Birkaç değişkenin dökümü:

  • tiltList: 0-4 değerlerinden eğimin kapsamını [Sol, Sağ, İleri, Geri] sırayla depolayan dizi
  • tiltBoundary: İlk eğim seviyesinin 0 (eğim yok) ile 1 (hafif eğim) arasındaki sınırı
  • prevState: Bir önceki döngüden micro:bit'in tilt değerlerini tiltList ile aynı formatta saklayan dizi, yinelemeler arasında eğimde bir değişiklik olup olmadığını kontrol etmek için kullanılır
  • ledPlotList: Led koordinat dizilerini (x,y) şeklinde çizin. Bir diziyi tanımlamak için, tür: sayı türündeki iç içe geçmiş bir değişken dizisini belirtmek için sayı türünü kullanırız.

Adım 6: Adım 2: Eğim Değerlerini Düzeylere Dönüştürün

5x5 LED matrisi ancak bu kadar bilgi görüntüleyebildiğinden, gerçek eğim değerleri görüntüleme için kullanışlı olmayacaktır.

Bunun yerine, tiltExtent() işlevi, ivmeölçerden gelen eğim değerini ifade eden parametre num'unu alır ve bu eğim değerlerini (sayı) 0'dan 4'e kadar olan eğim seviyelerine dönüştürür.

0, verilen yönde eğim olmadığını ve 4 çok büyük eğimi belirtirken, bir hata olduğunda -1 döndürülür.

Burada tiltBoundary ve tiltSensitivity, tilt seviyeleri arasındaki sınır değerleri olarak kullanılır.

Adım 7: Adım 3: Eğim Düzeylerini Derleyin

checkRoll() ve checkPitch() işlevleri, tiltExtent() işlevinden elde edilen tilt seviyelerini sırasıyla rulo (sol-sağ) ve eğim (ileri-geri) eksenleri için tiltList'e yazar.

Tilt değerlerini kullanmadan önce, daha sonra yazılan bir kalibrasyon fonksiyonundan elde edilen hem pitch (zeroPitch) hem de roll (zeroRoll) için sıfırlanmış bir değer kullanarak bunları kalibre ediyoruz.

İvmeölçer okumaları hem sola hem de ileriye eğim için negatif olduğundan, bu iki yön için bir parametre olarak tiltExtent() işlevine verilecek negatif değerin modülünü elde etmek için Math.abs() işlevini kullanmamız gerekir.

Adım 8: Adım 4: LEDPlotList İşlevlerini Yazın

tiltList'te tilt seviyelerini elde ettikten sonra, artık ortaya çıkabilecek farklı durumlar için ledli çizim fonksiyonlarını yazabiliriz, yani

  • plotSingle(): Parametre olarak verilen yöndeki eğimin kapsamını alarak yalnızca tek bir yönde eğme.
  • plotDiagonal(): Her iki yöndeki eğimin kapsamını parametre olarak alarak aynı büyüklükte iki yönde eğin.
  • plotUnequal(): Her bir yöndeki eğimin kapsamını parametre olarak alarak, farklı büyüklüklerde iki yönde eğin. Önce plotDiagonal()'ı kullanır ve daha sonra ledPlotList dizisine ekler.

Bu çizim işlevleri, daha sonra çizilmek üzere ledPlotList'e bir dizi led koordinatı yazar.

Adım 9: Adım 5: Her Durum için LED Matrisini Çizin

Adım 4'teki üç durumdaki çizim fonksiyonlarını kullanarak, şimdi farklı olası eğim seviyeleri kombinasyonları için gerçek LED matrisini çizebiliriz. 4. adımdaki üç fonksiyon yön ayrımı yapmadığından, LED'leri doğru yönlerde çizmek için LED matrisine iletilen koordinat değerlerini ayarlamamız gerekir.

PlotResult(), eğim türünü kontrol eden ve led.plot(x, y) kullanarak buna göre LED matrisini çizen birden çok if koşulu içerir. Olası eğim kombinasyonları şunlardır:

Tek yön: Yalnızca Sol veya Yalnızca Sağ

Tek yön: Yalnızca İleri veya Yalnızca Geri

İki yön: İleri-sol veya Geri-sol

İki yön: İleri-sağ veya Geri-sağ

Not: İki yönde eğim için, her kombinasyon aynı veya farklı büyüklüğe sahip olabilir (maxX ve maxY karşılaştırılarak kontrol edilir) ve dolayısıyla sırasıyla plotDiagonal() veya plotUnequal() kullanılarak çizilir.

Adım 10: Adım 6: Kalibrasyon Fonksiyonlarını Yazın

Kodun büyük kısmını tamamladıktan sonra, şimdi calibTilt() ve resetTilt() fonksiyonlarını ekliyoruz.

calibTilt(), kullanıcıların micro:bit'in mevcut konumunda eğimi sıfıra kadar dara almalarına olanak tanır

resetTilt(), kartın kalibrasyonunu orijinal durumuna sıfırlar.

Adım 11: Adım 7: Durum İşlevini Yaz

Eğim seviyelerinin önceki bir yinelemeye göre değişip değişmediğini kontrol etmek için basit bir checkState() işlevi ekledik.

Önceki bir yinelemeye göre eğim seviyelerinde herhangi bir değişiklik olmazsa, yani stateChange == 0, doğrudan sonraki yinelemeye geçebilir ve gerekli hesaplamayı azaltarak LED matrisinin çizimini atlayabiliriz.

Adım 12: Adım 8: Hepsini Bir Araya Getirmek Bölüm 1

Artık gerekli tüm fonksiyonları tekrar tekrar çalıştırmak için micro:bit'in sonsuz döngüsüne yerleştirebiliriz.

İlk olarak, input.onButtonPressed()'i kullanarak micro:bit üzerindeki A ve B butonlarını sırasıyla calibTilt() ve resetTilt() işlevlerine ayarladık ve kalibrasyon tamamlandığında LED matrisine bir onay işareti koyduk.

Adım 13: Adım 9: Hepsini Bir Araya Getirmek 2. Kısım

Ardından, Adım 0'daki kod akışımıza göre gerekli işlevleri çalıştırın ve bir durum değişikliği olup olmadığını kontrol edin (son yinelemeden bu yana mikro:bit eğiminde bir değişiklik olduğu anlamına gelir).

Eğim seviyelerinde bir değişiklik varsa, yani stateChange == 1, kod prevState'i yeni eğim seviyelerine güncelleyecek ve bir sonraki yineleme için stateChange'i tekrar 0'a ayarlayacak ve PlotResult() kullanarak LED matrisinde güncellenmiş eğim seviyelerini çizecektir.

Adım 14: Adım 10: Montaj

Tamamlanan kodu micro:bit'inize flashlayın.

Micro:bit'inizi ve pil takımını herhangi bir nesneye güvenli bir şekilde takın ve kullanıma hazır!

Mükemmel

Elektrikli su terazinizle iyi eğlenceler! Ve hazır buradayken, neden eğim sensörünün özelliklerini genişletmeye, hatta onu bir oyuna dönüştürmeye çalışmıyorsunuz?

Bu makale TINKERCADEMY'den alınmıştır.

Adım 15: Kaynak

Bu makale şu adresten alınmıştır:

Herhangi bir sorunuz varsa, [email protected] ile iletişime geçebilirsiniz.

Önerilen: