Bilgisayarların 0 ve 1'lerle çalıştığı tabirini mutlaka duymuşsunuzdur. 0 elektriğin yokluğunu, 1 ise varlığını temsil eder. 0 ve 1'ler birleşerek anlamlı veriler oluşturur. Elektronik sistemlerde sistemi doğrudan kontrol etmek için 0'lar ve 1'ler kullanılabilir. Kapı kapalı mı kapalı mı? Işık açık mı kapalı mı? Sulama sistemi açık mı, değil mi? Bu tür bilgileri elde etmek için durum kontrolü yapılır.
Bu projemizde elektronik ortamda dikkat ve konsantrasyon geliştirici Buzz Wire Game'i yapacağız. Bir iletken tel kullanacak, zil, ve PicoBricks'li LED modülü. Bu projeyi hazırlarken, bir giriş tekniği olmayan bir giriş tekniğini öğreneceksiniz. düğme ancak bir düğme gibi kullanılacaktır.
Ayrıntılar ve Algoritma
Oyunun amacı, başka bir kablonun etrafına dolanmış bir kabloyu ona dokunmadan hareket ettirmektir.
Kabloların iletkenliği nedeniyle birbirlerine değdiklerinde devreyi kapatarak ses çıkmasına neden olurlar.
Oyuncunun oyunu başlatmak için düğmeye basması istenecektir. Kullanıcı butona bastıktan sonra zamanlayıcıyı sıfırlıyoruz.
Daha sonra GPIO1 pinine bağlı olan iletken teli HIGH durumuna ayarlayacağız. Oyuncunun tuttuğu kablonun bir ucu PicoBricks üzerindeki GND pinine bağlanacaktır. Oyuncu elindeki jumper kablosunu iletken tele dokundurursa GPIO1 pini topraklanacak ve LOW durumuna düşecektir. PicoBricks bunu tespit ederek sesli ve yazılı uyarı verecektir.
Daha sonra oyunun bittiği anons edilecek ve ışıklı, yazılı ve sesli geri bildirim yapılacaktır. Geçen süre ekranda gösterilecektir. OLED ekran milisaniye cinsinden. 5 saniye sonra oynatıcıdan yeniden başlatmak için düğmeye basması istenecektir.
Bileşenler
1X PicoBrick
1X 15-20 cm 0,8 mm kalınlığında iletken tel
2X Erkek-Erkek Jumper 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ı
PicoBricks temel kitiyle birlikte,
1: 2 adet 20 cm erkek-erkek jumper kablosu. GND'ye bağlanacak kablonun bir ucu 4-5 cm sıyrılıp halka haline getirilecek.
2: 15-20 cm kalınlığında 0,8 mm iletken tel. Malzemelerinizi hazırlayın.
İletken teli bükün protokol dilediğiniz gibi deliklerden geçirin, bir ucunu geçmeden önce halka haline getirdiğiniz kablonun diğer ucunu PicoBoard üzerindeki GND pinine bağlanan erkek ucunu geçirmelisiniz.
3: İletken Tel
4: Bir ucu bilgisayara bağlı aktarma kablosu GND ilmekli uçlu pin.
5: Her iki ucu erkek olan jumper kablosunun bir ucunu, protokol üzerine yerleştirdiğiniz iletken telin ucunun hemen yanındaki deliğe sokun.
6: Jumper telinin ucunu ve iletken telin ucunu protokol kartının altında birlikte bükün.
7: Protokol üzerine yerleştirilen iletken telin diğer ucunu dışarı çıkmayacak şekilde bükün.
8: Adım 6'da iletken telin ucuna sardığınız jumper kablosunun diğer erkek ucunu 1 no'lu pine bağlayın. Picoboard'da GPIO1
Kurulumu tamamladıysanız kodu yükledikten sonra oyuna başlayabilirsiniz. İyi eğlenceler.
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ı
Pikodaki donanıma erişmek için makine içe aktarma Pininden, I2C, Timer #'dan
picobricks'ten importSSD1306_I2C #OLED Ekran Kitaplığı
utime'dan uyku # zaman kütüphanesini içe aktar
#OLED Ekran Ayarları
GENİŞLİK=128YÜKSEK=64
sda=machine.Pin(4)#initialize dijital pin 4 ve 5'i OLED İletişimi için bir ÇIKIŞ olarak kullanın
scl=machine.Pin(5)
i2c=machine.I2C(0,sda=sda, scl=scl, freq=1000000)
oled =SSD1306_I2C(GENİŞLİK, YÜKSEKLİK, i2c)
wire=Pin(1,Pin.OUT)#dijital pin 1'i ÇIKIŞ olarak başlat
led =Pin(7,Pin.OUT)#dijital pin 7 ve 5'i LED için bir ÇIKIŞ olarak başlat
buzzer=Pin(20, Pin.OUT)#dijital pin 20'yi Buzzer için ÇIKIŞ olarak başlat
düğme=Pin(10,Pin.IN,Pin.PULL_DOWN)#dijital pin 10'u düğme için bir INPUT olarak başlat
bitiş zamanı=0while Doğru:
led.düşük()
oled.fill(0)
oled.show()
oled.text("",0,0)
oled.text("Düğmeye basın",0,17)
oled.text("Başlamak İçin!",25,35)
oled.show()
#Düğme '0' olduğunda, OLED 'OYUN BAŞLADI' diyor, düğme.value()==0:print("düğmeye basın")
oled.fill(0)
oled.show()
oled.text("OYUN",25,35)
oled.text("BAŞLANDI",25,45)
oled.show()
tel.yüksek()
timer_start=utime.ticks_ms()
#Wire '1' olduğunda, OLED 'OYUN BİTTİ' diyor, wire.value()==1:print("Başladı")
endtime=utime.ticks_diff(utime.ticks_ms(), timer_start)print(bitişzamanı)
oled.fill(0)
oled.show()
oled.text("OYUN BİTTİ!",25,35)
oled.text(bitiş zamanı +"ms",25,45)
oled.show()
led.high()#LED Açık
buzzer.high()#Buzzer Açık
uyku(5)#Gecikme
PicoBricks'in Arduino C Kodları
#katmak
#include "ACROBOTIC_SSD1306.h"
int Zaman=0;
unsigned long Old_Time=0;voidsetup(){// bir kez çalıştırmak için kurulum kodunuzu buraya koyun:pinMode(20,OUTPUT);pinMode(7,OUTPUT);pinMode(1,OUTPUT);pinMode(10,INPUT);
Wire.begin();
oled.init();
oled.clearDisplay();
#iftanımlanmaktadır(__AVR_ATtiny85__)&&(F_CPU==16000000)clock_prescale_set(clock_div_1);
#endif
}voidloop(){// tekrar tekrar çalışacak şekilde ana kodunuzu buraya koyun:digitalWrite(7,LOW);
oled.setTextXY(2,1);
oled.putString("BUZZ TEL OYUNU");
oled.setTextXY(4,2);
oled.putString("Düğmeye Basın");
oled.setTextXY(5,3);
oled.putString("BAŞLAMAK İÇİN!");while(!(digitalRead(10)==1)){}
oled.clearDisplay();
oled.setTextXY(3,6);
oled.putString("OYUN");
oled.setTextXY(5,4);
oled.putString("BAŞLANDI");digitalWrite(1,YÜKSEK);
Old_Time=millis();while(!(digitalRead(1)==0)){
Time=millis()-Old_Time;}String(String_Time)=String(Time);
oled.clearDisplay();
oled.setTextXY(3,4);
oled.putString("OYUN BİTTİ");
oled.setTextXY(5,4);
oled.putString(String_Time);
oled.setTextXY(5,10);
oled.putString("ms");digitalWrite(7, YÜKSEK);digitalWrite(20,YÜKSEK);delay(500);digitalWrite(20,LOW);delay(5000);
Zaman=0;
Eski_Zaman=0;
oled.clearDisplay();}