İçeriğe Geç

#8 PicoBricks ile Zamanlayıcı Projem

22 Nov 2023
#8 My Timer Project With PicoBricks

Zamanı ölçmek günlük hayatımızda farkında olmadan yaptığımız basit ama önemli bir iştir. Ameliyathanedeki bir cerrah, bir toplantıya yetişmeye çalışan bir iş adamı, kazanmaya çalışan bir sporcu, bir sınavı veya satranç maçını bitirmeye çalışan bir öğrenci… Zamanı ölçmek için akıllı kol saatleri, telefonlar ve hatta profesyonel kronometreler kullanılıyor. Zaman elektronik sistemlerde çok doğru kullanılması gereken bir değişkendir. Örneğin bir çamaşır makinesi; tamburun saat yönünde ne kadar döneceği, saat yönünün tersine ne kadar döneceği, deterjanın çözünmesi için suyun kaç saniye akması gerektiği zaman ölçülerek yapılan işlerdir. Zamanın önemli olduğu projeler geliştirmek için onu nasıl kullanacağınızı bilmeniz gerekir. 

Bu projede PicoBricks, OLED ekran, buton ve butonları kullanarak kendi zaman ölçüm cihazınızı yapacaksınız. potansiyometre modüller. Bir Zamanlayıcı…

Ayrıntılar ve Algoritma

Picobricks başladığında ekrana projeyi tanıtan ve talimatları içeren bir açıklama koyalım. Kullanıcı potansiyometreyi çevirdikçe 0-60 dakika aralığında bir süre ayarlayacaktır. Kullanıcı potansiyometre ile süreye karar verdikten sonra Picobricks butonuna bastığında ekranda dakika ve saniye olarak geri saymaya başlayacaktır. Eğer düğme Süre geriye doğru çalışırken tuşuna basıldığında Zamanlayıcı duracak ve kalan süreyi ekranda gösterecektir. Butona basmadan dakika, saniye ve saniye değeri sıfıra ulaşırsa ekranda sürenin dolduğuna dair bildirim görüntülenecek ve program durdurulacaktır.

Bileşenler

1X PicoBrick

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.

PicoBricks'in MicroBlock Kodları

Projenin Microblocks kodlarına görseli Microblocks Run sekmesine sürükleyerek veya butona tıklayarak ulaşabilirsiniz:

 

Mikroblok Çalıştırma Sekmesi

PicoBricks'in MicroPython Kodları

 


makine içe aktarımından Pin,I2C,ADC, Zamanlayıcı #donanım picobricklerine erişmek için
picobricks importSSD1306_I2C #oled kütüphanesinden
utime #time kitaplığını içe aktar

GENİŞLİK=128YÜKSEK=64
#genişlik ve yükseklik değerlerini tanımlayın

sda=machine.Pin(4)
scl=machine.Pin(5)
#yollar arası iletişim için sda ve scl pinlerini tanımlıyoruz
i2c=machine.I2C(0,sda=sda, scl=scl, freq=1000000)#frekans değerlerini belirleyin

oled =SSD1306_I2C(128,64, i2c)
kap =ADC(Pin(26))
düğme =Pin(10,Pin.IN,Pin.PULL_DOWN)
#giriş ve çıkış pinlerimizi belirleyin

oled.fill(0)
oled.show()
#OLED'de göster

zaman=Zamanlayıcı()
zaman2=Zamanlayıcı()
time3=Zamanlayıcı()
#zamanlayıcıları tanımla

def dakika(zamanlayıcı):
    global setTimer
    setZamanlayıcı -=1

def saniye(zamanlayıcı):
    küresel saniye
    sn-=1if sn==-1:
        sn=59

def msaniye(zamanlayıcı):
    küresel msn
    msec-=1if msec==-1:
        msn=99
#Dakika-saniye ve milisaniye değerlerinin artışlarını belirliyoruz.
sn=59
msn=99

global setTimer

while butonu.değer()==0:
    setTimer=int((pot.read_u16()*60)/65536)+1
    oled.text("Zamanlayıcıyı ayarla:"+str(setTimer)+" min",0,12)
    oled.show()
    utime.sleep(0.1)
    oled.fill(0)
    oled.show()
#Buton basılmadığı takdirde potansiyometrenin belirlediği değer
OLED ekrana yazdırılır.

setTimer-=1

time.init(mode=Timer.PERIODIC,periyot=60000, geri arama=dakika)
time2.init(mode=Timer.PERIODIC,periyod=1000, geri çağırma=saniye)
time3.init(mode=Timer.PERIODIC,periyod=10, geri çağırma=msaniye)
#Dakika, saniye ve milisaniye periyotlarını biz belirliyoruz.
utime.sleep(0,2)#wait for0,2 saniye

while Button.value()==0:#burda hata var0>>>>1 çalıştıramadığım için denemedim.
    oled.text("min:"+str(setTimer),50,10)
    oled.text("sn:"+str(sn),50,20)
    oled.text("ms:"+str(msn),50,30)
    oled.show()
    utime.sleep(0,01)
    oled.fill(0)
    oled.show()if(setTimer==0 ve sec==0 ve msec==99):
        utime.sleep(0.1)
        msn=0break;
#Buton basıldığında min-sn-ms değerlerini yazdırır
Belirlenen x ve y koordinatlarında OLED ekrana.

oled.text(str(setTimer),60,10)
oled.text(str(sn),60,20)
oled.text(str(msec),60,30)
oled.text("Zaman Bitti!",10,48)
oled.show()
#Dakika, saniye, milisaniye ve "Süre Bitti" değerlerini yazdır
OLED ekranında belirlenen X ve Y koordinatlarına.

PicoBricks'in Arduino C Kodları

 


#katmak
#include "ACROBOTIC_SSD1306.h"

int dakika;
int saniye =59;
int milisaniye =9;
int setTimer;voidsetup(){// bir kez çalıştırmak için kurulum kodunuzu buraya koyun:pinMode(10,INPUT);pinMode(26,INPUT);

  Wire.begin();
  oled.init();
  oled.clearDisplay();}voidloop(){// tekrar tekrar çalışacak şekilde ana kodunuzu buraya koyun:
  oled.setTextXY(1,2);
  oled.putString("<>");
  oled.setTextXY(3,1);
  oled.putString("Lütfen kullanın");
  oled.setTextXY(4,1);
  oled.putString("Potansiyometre");
  oled.setTextXY(5,0);
  oled.putString("Zamanlayıcıyı ayarlamak için");delay(3000);
  oled.clearDisplay();while(!(digitalRead(10)==1)){
    setTimer =(analogRead(26)*60)/1023;
    oled.setTextXY(3,1);
    oled.putString("buna ayarla:");
    oled.setTextXY(3,8);
    oled.putString(String(setTimer));
    oled.setTextXY(3,11);
    oled.putString("min.");}
    oled.clearDisplay();
    oled.setTextXY(1,1);
    oled.putString("Geri Sayım");
    oled.setTextXY(2,3);
    oled.putString("başladı!");while(!(digitalRead(10)==1)){
    milisaniye =9-(millis()%100)/10;
    saniye =59-(millis()%60000)/1000;
    dakika =(setTimer-1)-((millis()%360000)/60000);

    oled.setTextXY(5,3);
    oled.putString(String(dakika));
    oled.setTextXY(5,8);
    oled.putString(String(saniye));
    oled.setTextXY(5,13);
    oled.putString(String(milisaniye));
    oled.setTextXY(5,6);
    oled.putString(":");
    oled.setTextXY(5,11);
    oled.putString(":");}
    oled.setTextXY(5,3);
    oled.putString(String(dakika));
    oled.setTextXY(5,8);
    oled.putString(String(saniye));
    oled.setTextXY(5,13);
    oled.putString(String(milisaniye));
    oled.setTextXY(5,6);
    oled.putString(":");
    oled.setTextXY(5,11);
    oled.putString(":");delay(10000);if(dakika==0& saniye==0& milisaniye==0){

    oled.setTextXY(5,3);
    oled.putString(String(dakika));
    oled.setTextXY(5,8);
    oled.putString(String(saniye));
    oled.setTextXY(5,13);
    oled.putString(String(milisaniye));
    oled.setTextXY(5,6);
    oled.putString(":");
    oled.setTextXY(5,11);
    oled.putString(":");
    oled.putString("-bitmiş-");
    oled.setTextXY(7,5);delay(10000);}}
GitHub Proje Sayfası
Önceki Gönderi
Sıradaki Gönderi

Abone olduğun için teşekkürler!

Bu e-posta kaydedildi!

Görünümü satın alın
Seçenekleri Seçin

Seçeneği Düzenle

Stok Bildirimi

Karşılaştır

Ürün Stok KoduDeğerlendirmeAçıklama Kategori Uygunluk Ürün Tipi Diğer Detaylar
this is just a warning
Giriş Yap
Alışveriş Sepeti
0 Ürünler
Same Day Shipping No Extra Costs
Easy Returns Guarantee Return with Ease
Secure Checkout Secure Payment