Beyin Ekranına İkinci Bir Buton Ekleme - Python
Öğretmen Araç Kutusu
-
Bu Etkinliğin Amacı
Öğrenciler artık beynin ekranını tek büyük bir düğme gibi ele alma konusunda deneyim kazandıklarından, ekranı iki düğmeye dönüştürebilirler. Bu etkinlik, öğrencilere koşullu ifadeleri daha iyi yönetmek için iç içe geçmiş if-else ifadelerini kullanmayı ve bunu yapmanın altında yatan mantığı tanıtacaktır. Öğrencilere öncelikle robotun ekrana basıldığında sola veya sağa dönmesini sağlayacak projenin yapımı konusunda rehberlik edilir. Ancak daha sonra robotun sola dönmesini sağlayan düğmelerin sağa dönmesini, sola dönmesini sağlayan düğmelerin robotu sola döndürmesini sağlayacak şekilde değiştirilmesi isteniyor.
Bu etkinlikte kullanılan if ve if-else ifadeleri veya diğer ifadeler hakkında daha fazla bilgi için VEXcode V5 içindeki yardım bilgilerini inceleyin. Bu yerleşik yardım aracı hakkında daha fazla bilgi için bu makaleyi görüntüleyin.
Aşağıda öğrencilerinizin bu etkinlikte neler yapacaklarının bir özeti yer almaktadır:
- StopOrDrive projesinin ve beynin ekran düzeninin piksel cinsinden incelenmesi.
- Programlama mantığının rehberliğinde yeni bir LeftOrRight projesi inşa etmek.
- Ekrandaki butonların ters yönde çalışması için projeyi revize ediyorum.
- Öğrenmenizi Genişletin: Ekranı iki düğmeye bölün ve basıldığında robotu sola veya sağa döndürün.
Gerekli donanıma, mühendislik defterinize ve VEXcode V5 'e sahip olduğunuzdan emin olun.
| Adet | Gerekli Malzemeler |
|---|---|
| 1 |
VEX V5 Sınıf Başlangıç Kiti (güncel ürün yazılımı ile) |
| 1 |
VEXcode V5 (en son sürüm, Windows, macOS) |
| 1 |
Mühendislik Defteri |
| 1 |
Önceki Oynat sayfasından StopOrDrive projesi |
Öğretmen Araç Kutusu
Bu bölüm için öğretim stratejilerine ilişkin öneriler için Yapılacaklar veya Yapılmayacaklar Tempo Rehberi'nin Sunum sütununu inceleyin! (Google Doküman / .docx / .pdf)
Beyninizin ekranında birden fazla düğme bulunabilir.
Bu etkinlik, robotun beynin ekranının hangi tarafına basıldığına bağlı olarak ileri gitmesini ve sola veya sağa dönmesini programlamanızı sağlayacaktır.
Bu etkinlik sırasında ihtiyaç duyacağınız üç ek komut türü şunlardır:
- drivetrain.turn(SAĞ)
- < 50 numara
- brain.screen.x_position()
Talimatları öğrenmek için VEXcode V5'in içindeki Help bilgisini kullanabilirsiniz.

1. Adım: StopOrDrive projesini gözden geçirerek başlayalım.
StopOrDrive projesini gözden geçirerek başlayalım.
StopOrDrive projesinde Clawbot ekrana basıldığında duruyor, basılmadığı takdirde ileri gidiyordu.
Tüm ekran büyük bir düğmeydi, ancak bir sonraki projede ekranın yarısının bir düğme, diğer yarısının da diğer düğme olmasını istiyoruz.
# Proje kodunu Doğru
iken başlat
: brain.screen.pressing ():
drivetrain.stop ()
while brain.screen.pressing ():
wait(5, MSN) else:drivetrain.drive
(
FORWARD)
wait(5, MSN)Ekranı iki düğmeye bölmek için ekranın düzeni hakkında daha fazla bilgi sahibi olmamız gerekir.

- Sütunların sayısının soldan sağa doğru arttığına dikkat edin. Sütun sayısı 48 ve ekran 480 piksel genişliğindedir.
- Mühendislik defterinize ekrandaki x değerinin soldan sağa ölçülen piksel sayısına eşit olduğunu yazın.
- Ekranın merkezinin x değeri nedir? Bu etkinlik için yalnızca x eksenine odaklanabilirsiniz, çünkü yalnızca bir sol ve sağ düğmeye ihtiyacınız vardır.
Öğretmen Araç Kutusu
-
Cevap
Ekranın ortasındaki x değeri, ekran genişliğinin piksel cinsinden yarısına eşittir. Yani merkez noktasının x değeri 240'tır. Öğrenciler ekranın sola mı yoksa sağa mı basılacağı koşulunu programlamak için bu sayıya ihtiyaç duyacaklar. Bu yüzden hepsinin doğru değere sahip olduğundan emin olun.
İleriye baktığımızda, Rethink bölümündeki Kullanıcı Arayüzü Mücadelesi, öğrencilerin öğrendiklerini ekranda dört düğme oluşturmak için uygulamalarını gerektirecek. Bunun için hem x hem de y değerlerine ihtiyaçları olacak.
Öğretmen İpuçları
Daha fazla yardım için, ek yardım makaleleri içinVEX Kütüphanesibakın.
Adım 2: İki düğme için programlama.
- StopOrDriveLeftOrRightprojesi olarak kaydedin.
- Projeyi aşağıda oluşturun. Ekrana basıldığında, basıldığı tarafa bağlı olarak Clawbot sola veya sağa dönecektir.
# Proje kodunu True
iken başlat:
if brain.screen.pressing ():
if brain.screen.x_position () < 240: drivetrain.turn
(SOLDA)
while brain.screen.pressing ():
wait(5, MSN)
else: drivetrain.turn
(SAĞDA)
while brain.screen.pressing ():
wait(5, MSN)
else: drivetrain.drive
(İLERİ)
wait(5, MSN)- Bu projenin ne işe yaradığını inceleyelim.
Ekrana basılıp basılmadığını sürekli kontrol ediyor. Ekrana basılmamışsa ileri doğru hareket eder, basılmışsa ekranın nereye basıldığını kontrol eder.
Eğer basış sol taraftaysa (240'dan az) sola döner. Yoksa sağa döner. X değerinin 240 'tan büyük olması için başka bir koşula ihtiyacımız yok çünkü 240' tan küçük değilse (sola dönün), daha büyük olmalıdır (sağa dönün). Endişelenmemiz gereken sadece iki buton var.
while ve waitHer turdan sonra gelen kontrol komutları, projenin devam etmeden önce ekrana basılmayı bırakana kadar beklemesini sağlar.

- Artık proje bittiğine göre, nasıl çalıştığını test etmek için indirin ve çalıştırın.

- Düğmelerin Clawbot'un hareketlerini nasıl kontrol ettiği hakkında mühendislik defterinize notlar alın.
Öğretmen İpuçları
Öğrenciler test sırasında Clawbot'un arkasından kullanıldığında Kullanıcı Arayüzünün ters yönde çalıştığını fark etmelidirler. Kullanıcının bakış açısından, Clawbot kullanıcının bastığı taraftan uzaklaşır. Bu, en iyi Kullanıcı Deneyimi değildir.
Adım 3: Daha iyi bir Kullanıcı Deneyimi için projeyi ayarlayın.
Clawbot ilerlerken ekranın düğmelerine arkadan bastığınızda, sola dönmek için ekranın sağ tarafına ve sağa dönmek için ekranın sol tarafına bastınız. Bu iyi bir Kullanıcı Deneyimi değil. Kullanıcı Deneyimi, bir kullanıcının bir bilgisayar sistemini kontrol etmek için bir Kullanıcı Arayüzü ile ne kadar iyi etkileşime girebileceğidir. Bu laboratuvarın Uygula bölümünde Kullanıcı Arayüzleri hakkında daha fazla bilgi bulunmaktadır.
Bu durumda, Kullanıcı Deneyimini iyileştirmek için Kullanıcı Arayüzünü iyileştirmemiz gerekir.
- LeftOrRight projesini gözden geçirin ve revize edin, böylece kullanıcı Clawbot'un arkasından düğmelere bastığında, kullanıcı ekranın sol tarafına bastığında robot sağa döner. Yoksa, Pençe Robotu sola döner.
# Proje kodunu True
iken başlat:
if brain.screen.pressing ():
if brain.screen.x_position () < 240: drivetrain.turn
(SOLDA)
while brain.screen.pressing ():
wait(5, MSN)
else: drivetrain.turn
(SAĞDA)
while brain.screen.pressing ():
wait(5, MSN)
else: drivetrain.drive
(İLERİ)
wait(5, MSN)- Bu projeyi planlayın, test edin ve yineleyin ve projenin Clawbot'u ekranın kullanıcının Clawbot'un arkasından bastığı tarafına doğru döndürmesi için mühendislik defterinizde belgeleyin.
Öğretmen Araç Kutusu
Öğrenciler bu değişiklikleri mühendislik defterlerine kaydederken planlamalı, test etmeli ve projeyi geliştirmelidir. Bireysel mühendislik not defteri değerlendirme ölçütleri için aşağıdaki bağlantılardan birine tıklayın (Google Doc / .docx / .pdf) veya takım not defterleri için aşağıdaki bağlantılardan birine tıklayın (Google Doc / .docx / .pdf). Öğrenciler çalışmaya başlamadan önce puanlamayı onlara açıklamayı unutmayın.
Öğretmen Araç Kutusu
-
Çözümleri
Yukarıda ortaya konulan problemi çözmenin iki olası yolu vardır. Birinci yol, talimatta yazılı olandır: SolVeyaSağ projesini gözden geçir ve kullanıcı Clawbot'un arkasından düğmelere bastığında, kullanıcının ekranın sol tarafına bastığında robotun sağa dönmesini sağlayacak şekilde revize et. Aksi takdirde Pençebot sola döner.
# Proje kodunu başlat
while True:
if brain.screen.pressing():
if brain.screen.x_position() < 240:
drivetrain.turn(RIGHT)
while brain.screen.pressing():
wait(5, MSEC)
else:
drivetrain.turn(LEFT)
while brain.screen.pressing():
wait(5, MSEC)
else:
drivetrain.drive(FORWARD)
wait(5, MSEC)Diğer çözüm ise Operatör talimatını değiştirerek x değeri 240'tan büyük olduğunda Clawbot'un sola dönmesini sağlamaktır.
# Proje kodunu başlat
while True:
if brain.screen.pressing():
if brain.screen.x_position() < 240:
drivetrain.turn(LEFT)
while brain.screen.pressing():
wait(5, MSEC)
else:
drivetrain.turn(RIGHT)
while brain.screen.pressing():
wait(5, MSEC)
else:
drivetrain.drive(FORWARD)
wait(5, MSEC)
Tartışmayı Motive Edin
x değeri 240'tan küçük olduğunda koşullu ifadeyi programladığınızda (ekranın sol tarafı) koordinat düzleminden koordinatları kullanmanız gerekiyordu. Beyin ekranının görsel butonlar çizmesi için koordinatları da kullanmanız gerekir.
V5 Robot Beyin ekranının koordinatlarının gösterildiği 2. Adıma geri dönün.

S:Ekranın sağ kenarındaki x değeri nedir?
C:x değeri sol kenarda 0'dan sağ kenarda 480'e kadar artar.
S:Dolayısıyla x değerinin aralığı 480'dir (0 ila 480). Y değerinin aralığı nedir?
C:Y değerinin aralığı 240'tır (0 ila 240).
S:Bu koordinat düzleminin orijini (0, 0) nerededir?
C:Orijin sol üst taraftadır.
S:Y değeri 0'a eşit olduğunda ekranın en üstündesiniz. Bu neden alışılmadık?
A:Genellikle y değeri yukarı doğru hareket ettikçe artar, ancak V5 ekranında y değeri aşağı doğru hareket ettikçe artar. Ama bunu, ekranın sol üst köşesindeki orijinden (0, 0) uzaklaştıkça y değerinin artması olarak düşünebilirsiniz.
Öğrenmenizi Genişletin
Yeniden Düşünme bölümünün Kullanıcı Arayüzü Mücadelesi'nde öğrencilerden, Pençe Robotu'nun pençesini ve kolunu kontrol etmek için ekranda dört düğme oluşturan bir proje geliştirmeleri istenecek. Bu meydan okuma için, onlardan ekranda gösterilen dört butona da sahip olmaları isteniyor. Önceki sayfadaki gibi, bu Öğrenmenizi Genişletin, öğrencilerin bu zorluğa hazırlanmasına yardımcı olacaktır çünkü zorluğun programlanabilecek dört düğmesi varken, bunda sadece iki düğme var.
Öğrencilerin, proje çalıştığında ekranda iki görünür düğme çizilmesi için programa bir olay eklemelerini sağlayın. Öğrencilere, Etkinlikler hakkında bilgi edinmek için VEXcode V5'teki Yardım özelliğini, özellikle dedikdörtgen çizkomutunun bilgilerini kullanmalarını önerin. Öğrencilere,dikdörtgen çiz komutu kullanıldığında, beynin ekranının piksel sayısına göre bir koordinat sistemine nasıl düzenlendiğini incelemeleri talimatını verin. Bu komut içerisinde parametreleri ayarlayabilmek için bunu anlamaları gerekecektir. Ayrıca etkinliklerin nasıl yayınlanacağını da anlamaları gerekecek. Bu durumda olay, düğme çizmektir.
Öğrenciler, projedeki bu değişiklikleri mühendislik defterlerine kaydederken planlamalı, test etmeli ve iyileştirmelidir. Bireysel mühendislik not defteri değerlendirme ölçütleri için aşağıdaki bağlantılardan birine tıklayın (Google Doc / .docx / .pdf) veya takım not defterleri için aşağıdaki bağlantılardan birine tıklayın (Google Doc / .docx / .pdf).
İşte bir örnek çözüm:
# Proje kodunu başlat
screen_buttons = Event()
def has_screen_buttons():
brain.screen.set_fill_color(Color.GREEN)
brain.screen.draw_rectangle(0, 0, 240, 120)
brain.screen.set_fill_color(Color.MORPLE)
brain.screen.draw_rectangle(240, 0, 480, 120)
brain.screen.set_fill_color(Color.PORTAKAL)
brain.screen.draw_rectangle(0, 120, 240, 240)
brain.screen.set_fill_color(Color.CAMGÖBEĞİ)
brain.screen.draw_rectangle(240, 120, 480, 240)
wait(1, SANİYE)
screen_buttons(has_screen_buttons)
while True:
screen_buttons.broadcast()
if brain.screen.pressing():
if brain.screen.x_position() < 240:
if brain.screen.y_position() < 120:
claw_motor.spin(İLERİ)
while brain.screen.pressing():
wait(5, MSEC)
else:
claw_motor.spin(GERİ)
while brain.screen.pressing():
wait(5, MSEC)
else:
if brain.screen.y_position() < 120:
arm_motor.spin(İLERİ)
while brain.screen.pressing():
wait(5, MSEC)
else:
arm_motor.spin(GERİ)
while brain.screen.pressing():
wait(5, MSEC)
claw_motor.stop()
arm_motor.stop()
wait(5, MSEC)Mesleki açıdan daha gerçekçi bir deneyim için, öğrencilerin iki renk seçimleri konusunda sınıf arkadaşlarından geri bildirim istemelerini sağlayın.
Seçilen renkler arayüzü kullanma isteği uyandırıyor mu, yoksa kullanıcılar olarak hangi renkleri tercih ederler?
Harika bir Kullanıcı Arayüzü geliştirmenin bir parçası, Kullanıcı Deneyimi hakkında, hatta estetik tercihler hakkında veri toplamaktır.