Uzunluğu ölçmek için birçok alet kullanılır. İlk akla gelenlerden biri cetvellerdir. Ölçü aletimiz ölçülecek yer ve boyuta göre farklılık göstermektedir. İnşaat ve mimaride şerit metreler, milimetrik hassasiyet gerektiren küçük nesneler için kumpaslar kullanılır. Ayrıca hem büyük hem de hassas ölçüm gerektiren bir alanın ölçülmesi isteniyorsa lazer ve kızılötesi sistemlerle çalışan mesafe ölçerler kullanılır. Sağlık sektöründe kullanılan ultrasonografi cihazları da aynı mantıkla çalışır ancak ölçümlerini görsele dönüştürür.
Projemizde PicoBricks ve ultrasonik sensör kullanarak mesafe değerini ekran üzerinde gösterecek dijital cetvel hazırlayacağız. OLED ekran düğmeye basıldığında. Ultrasonik sensörler yaydıkları ses dalgalarının geri dönüş sürelerine göre mesafeyi tespit ederler.
Ayrıntılar ve Algoritma
Program başladığında OLED ekranında talimatlar görüntülenir. Kullanıcı tuşuna bastıktan sonra düğme, bir ölçüm alınır. Kırmızı LED ölçüm sırasında yanık kalır ve ardından söner. Ölçülen değer, sensörün ucundan kutunun arkasına kadar olan mesafeye eklenir. Hesaplanan son değer OLED ekranda görüntülenir.
Bileşenler
1X PicoBrick
1X HC-SR04 Ultrasonik Sensör
Atlama Kabloları
Kolay Bağlantı Kabloları
Bağlantı şeması
Picobricks modüllerini kablolama olmadan kodlayabilir ve çalıştırabilirsiniz. Modülleri panodan ayırarak kullanacaksanız modül bağlantılarını grove kablolarla yapmalısınız.
Projenin İnşaat Aşamaları
Projeyi hazırlamak için çift taraflı köpük bant, maket bıçağı, yaklaşık 15x10x5 cm ebatlarında atık karton kutuya ihtiyacınız var.
1) Ultrasonik sensör, OLED ekran, düğme LED modülü için delikleri kesin, zil, akü kutusunun kablolarını maket bıçağıyla geçirmek için.
2) Tüm kabloları kutunun içine asın ve modüllerin arkasını çift taraflı köpük bantla kutuya yapıştırın. Bağlan tetik ultrasonik sensörün pimini GPIO14 pin ve Eko pinlemek GPIO15 toplu iğne. VCC pinini VBUS Picoboard'a sabitleyin.
3) Tüm modüllerin kablo bağlantılarını tamamladıktan sonra 2'li pil kutusunu Picoboard'un power girişine takıp anahtarı açabilirsiniz. Dijital cetvel projesi için bu kadar!
PicoBricks'in MicroBlock Kodları
Mikrobloklar Çalıştır sekmesine görseli sürükleyerek veya butonuna tıklayarak projenin Mikroblok kodlarına ulaşabilirsiniz.
PicoBricks'in MicroPython Kodları
makineden içe aktarma Pin, PWM, I2C
utime içe aktarma uykusundan
picobricks'ten SSD1306_I2C'yi içe aktar
kullanım süresini içe aktar
# Kütüphaneleri tanımlayın
redLed = Pin(7, Pin.OUT)
düğmesi = Pin(10, Pin.IN, Pin.PULL_DOWN)
buzzer = PWM(Pin(20, Pin.OUT))
buzzer.freq(392)
tetikleyici = Pin(15, Pin.OUT)
echo = Pin(14, Pin.IN)
# Giriş ve çıkış pinlerini tanımlayın
GENİŞLİK = 128
YÜKSEKLİK = 64
# OLED ekran ayarları
sda = makine.Pin(4)
scl = makine.Pin(5)
i2c = makine.I2C(0, sda=sda, scl=scl, frek=1000000)
# OLED iletişimi için dijital pin 4 ve 5'i ÇIKIŞ olarak başlatın
oled = SSD1306_I2C(128, 64, i2c)
ölçü = 0
sonMesafe = 0
def getDistance():
tetikleyici.düşük()
utime.sleep_us(2)
tetikleyici.yüksek()
utime.sleep_us(5)
tetikleyici.düşük()
while echo.value() == 0:
signaloff = utime.ticks_us()
while echo.value() == 1:
signalon = utime.ticks_us()
geçen süre = sinyal açık - sinyal kapalı
mesafe = (geçen süre * 0,0343) / 2
dönüş mesafesi
# Mesafeyi hesapla
def getMeasure(pin):
küresel ölçü
küresel finalMesafe
redLed.value(1)
(20) aralığındaki i için:
ölçü += getDistance()
uyku(0,05)
kırmızıLed.value(0)
finalDistance = (ölçü/20) + 1
oled.fill(0)
oled.show()
oled.text(">Dijital Cetvel<", 2, 5)
oled.text("Mesafe " + str(round(finalDistance)) + " cm", 0, 32)
oled.show()
# Belirtilen mesafeyi belirtilen x ve y koordinatlarına OLED ekranında yazdırın
yazdır(sonMesafe)
buzzer.duty_u16(4000)
uyku(0,05)
buzzer.duty_u16(0)
ölçü = 0
sonMesafe = 0
# Zili çal
Button.irq(trigger=machine.Pin.IRQ_RISING, işleyici=getMeasure)
PicoBricks'in Arduino C Kodları
#include
#include "ACROBOTIC_SSD1306.h"
#include
//Kütüphaneleri tanımlayalım
#define TRIGGER_PIN 15
#define ECHO_PIN 14
#define MAX_DISTANCE 400
YeniPing sonarı(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
#tanımla T_B 493
int mesafe = 0;
int toplam = 0;
geçersiz kurulum() {
pinMode(7, ÇIKIŞ);
pinMode(20, ÇIKIŞ);
pinMode(10, INPUT);
// Giriş ve çıkış pinlerini tanımlıyoruz
Wire.begin();
oled.init();
oled.clearDisplay();
}
geçersiz döngü () {
gecikme(50);
if(digitalRead(10) == 1) {
int ölçü = 0;
digitalWrite(7, YÜKSEK);
tone(20, T_B);
gecikme(500);
ton yok(20);
for (int i = 0; i < 20; i++) {
ölçü = sonar.ping_cm();
toplam = toplam + ölçü;
gecikme(50);
}
mesafe = toplam / 20 + 6; // Mesafeyi hesapla
digitalWrite(7, DÜŞÜK);
gecikme(1000);
oled.clearDisplay();
oled.setTextXY(2, 1);
oled.putString(">Dijital Cetvel<");
oled.setTextXY(5, 1);
oled.putString("Mesafe: ");
oled.setTextXY(5, 10);
String string_distance = String(mesafe);
oled.putString(string_distance);
oled.setTextXY(5, 12);
oled.putString("cm"); // Hesaplanan mesafeyi OLED ekrana yazdırıyoruz
ölçü = 0;
mesafe = 0;
toplam = 0;
}
}
GitHub Proje Sayfası