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:
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ı