Lompat ke isi utama

Menambahkan Tombol Kedua ke Layar Otak - C++

Ikon Kotak Alat Guru Kotak Alat Guru - Tujuan Kegiatan Ini

Sekarang setelah siswa memiliki pengalaman dalam memperlakukan layar otak seperti satu tombol besar, mereka dapat mengubah layar menjadi dua tombol. Kegiatan ini akan memperkenalkan siswa pada penggunaan pernyataan bersarangjika maka yang lainuntuk mengelola pernyataan kondisional dan logika yang mendasarinya dengan lebih baik. Siswa pertama-tama dipandu dalam membangun proyek untuk menekan layar guna memutar robot ke kiri atau kanan. Namun, mereka kemudian diminta untuk mengganti tombol sehingga tombol yang membelokkan robot ke kiri kini membelokkannya ke kanan, dan sebaliknya.

Untuk informasi lebih lanjut tentangjika makadanjika maka lainnyaatau pernyataan lain yang digunakan dalam aktivitas ini, kunjungi informasi bantuan dalam VEXcode V5. Untuk informasi lebih lanjut tentang alat bantuan bawaan ini, Anda dapat menemukan artikel tentang bantuan diC++.

Berikut ini adalah garis besar apa yang akan dilakukan siswa Anda dalam kegiatan ini:

  • Meninjau proyekStopOrDrivedan tata letak layar otak dalam piksel.

  • Membangun proyekLeftOrRightbaru sambil dipandu melalui penalaran pemrograman.

  • Merevisi proyek sehingga tombol-tombol di layar berfungsi secara berlawanan.

  • Perluas Pembelajaran Anda: Membagi layar menjadi dua tombol yang bila ditekan, akan memutar robot ke kiri atau kanan.

Pastikan Anda memiliki perangkat keras yang diperlukan, buku catatan teknik, dan VEXcode V5 yang siap.

Bahan yang dibutuhkan:
Kuantitas Bahan-bahan yang Dibutuhkan
1

Kit Pemula Kelas VEX V5 (dengan firmware terbaru)

1

VEXcode V5 (versi terbaru, Windows, macOS)

1

Buku Catatan Teknik

1

Proyek StopOrDrive dari halaman Play sebelumnya

Ikon Kotak Alat Guru Kotak Peralatan Guru

Untuk saran mengenai strategi pengajaran untuk bagian ini, tinjau kolom Penyampaian pada Panduan Kecepatan Yang Harus Dilakukan atau Tidak Dilakukan! (Google Doc / .docx / .pdf)

Layar otak dapat memiliki lebih dari satu tombol.

Aktivitas ini akan memungkinkan Anda memprogram robot untuk melaju maju dan berbelok ke kiri atau kanan, tergantung sisi layar otak mana yang ditekan.

Tiga jenis instruksi tambahan yang akan Anda perlukan selama aktivitas ini adalah sebagai berikut:

  • Sistem penggerak.belok(kanan);
  • angka< 50
  • Otak.Layar.xPosisi();

Anda dapat menggunakan informasi Bantuan di dalam VEXcode V5 untuk mempelajari petunjuknya.

VEXcode V5 dengan perintah yang diketik di ruang kerja di sebelah kiri, dan informasi Bantuan terbuka di sebelah kanan. Bantuan menunjukkan definisi perintah dan informasi tentang cara penggunaannya.

Langkah 1: Mari kita mulai dengan meninjau proyek StopOrDrive.

Mari kita mulai dengan meninjau proyek StopOrDrive.

Proyek StopOrDrive membuat Clawbot berhenti jika layar ditekan, atau melaju maju.
Seluruh layar adalah satu tombol besar, tetapi dalam proyek berikutnya, kita ingin separuh layar menjadi satu tombol dan separuh lainnya menjadi tombol lainnya.

// Mulai kode proyek
int main() {
  // Inisialisasi Konfigurasi Robot. JANGAN DIHAPUS!
  vexcodeInit();

  sementara (benar) {
    Drivetrain.drive(maju);
    jika (Brain.Screen.pressing()) {
      Drivetrain.stop();
      tungguSampai(!Brain.Screen.pressing());
    } 
    yang lain {
      Drivetrain.drive(maju);
    }   
  }  
}  

Untuk membagi layar menjadi dua tombol, kita perlu memahami lebih lanjut tentang tata letak layar.

Kisi piksel layar V5 Brain menunjukkan 12 baris bernomor di sepanjang sisi kiri, dengan baris atas diberi label Baris 1 dan baris bawah diberi label Baris 12. Di bagian atas terdapat 48 kolom bernomor, dengan Kolom 1 diberi label di paling kiri dan Kolom 48 diberi label di paling kanan. Total ukuran pikselnya adalah lebar 480 piksel dan tinggi 240 piksel.

  • Perhatikan bahwa jumlah kolom bertambah dari kiri ke kanan. Jumlah kolomnya 48 dan lebar layarnya 480 piksel.
  • Tuliskan di buku catatan teknik Anda bahwa nilai x pada layar sama dengan jumlah piksel yang diukur dari kiri ke kanan.
  • Berapakah nilai x dari bagian tengah layar? Untuk aktivitas ini, Anda dapat fokus pada sumbu x saja karena Anda hanya memerlukan tombol kiri dan kanan.

Ikon Kotak Alat Guru Kotak Alat Guru - Jawaban

Nilai x di tengah layar sama dengan setengah lebar layar dalam piksel. Jadi nilai x titik pusatnya adalah 240. Siswa akan memerlukan angka ini untuk memprogram kondisi apakah layar ditekan di sebelah kiri atau kanan. Jadi pastikan Anda memeriksa apakah semuanya memiliki nilai yang benar.

Ke depannya, Tantangan Antarmuka Pengguna di bagian Pikirkan Ulang akan mengharuskan siswa menerapkan apa yang telah mereka pelajari untuk membuat empat tombol di layar. Jadi untuk itu, mereka membutuhkan nilai x dan y.

Ikon Tips Guru Tips Guru

Untuk bantuan lebih lanjut, lihatVEX Libraryuntuk artikel bantuan tambahan.

Langkah 2: Pemrograman untuk dua tombol.

  • SimpanStopOrDrivesebagai proyekLeftOrRight.

Kotak dialog nama proyek di Toolbar VEXcode V5 bertuliskan Kiri atau Kanan dan menunjukkan Slot 2 dipilih.

  • Bangun proyek di bawah ini. Clawbot akan berputar ke kiri atau kanan saat layar ditekan, tergantung sisi mana ia ditekan.

 

// Mulai kode proyek
int main() {
  // Inisialisasi Konfigurasi Robot. JANGAN DIHAPUS!
  vexcodeInit();

  sementara (benar) {
    jika (Brain.Screen.menekan()) {
      jika (Brain.Screen.xPosition() < 240) {
        Drivetrain.belok(kiri);
        tungguSampai(!Brain.Screen.menekan());
      } yang lain {
        Drivetrain.belok(kanan);
        tungguSampai(!Brain.Screen.menekan());
      }
    } yang lain {
      Drivetrain.mengemudi(maju);
    }
  }  
}  
  • Mari kita ulas apa yang dilakukan proyek ini.

    Terus memeriksa apakah layar ditekan. Jika layar tidak ditekan, ia bergerak maju, tetapi jika ditekan, ia memeriksa di mana layar ditekan.

    Jika penekanan berada di sisi kiri (kurang dari 240), ia berbelok ke kiri. Jika tidak, belok kanan. Kita tidak memerlukan kondisi lain ketika nilai x lebih besar dari 240 karena jika tidak kurang dari 240 (belok kiri), maka pasti lebih besar (belok kanan). Kita hanya perlu mengkhawatirkan dua tombol.

    Tunggu hinggaInstruksi kontrol setelah setiap putaran membuat proyek menunggu hingga layar tidak lagi ditekan sebelum melanjutkan.

Proyek Kiri atau Kanan ditampilkan dengan perintah yang diberi label fungsinya. Perintah While true dan first if diberi label Terus memeriksa apakah layar ditekan. Perintah if bersarang berikutnya diberi label saat layar ditekan, memeriksa apakah di sebelah kiri atau kanan. Perintah putar berikutnya diberi label jika penekanan dilakukan di sebelah kiri (kurang dari 240, belok kiri), lalu perintah tunggu hingga diberi label tunggu hingga layar tidak lagi ditekan sebelum melanjutkan. Perintah belok kanan berikutnya di cabang else diberi label jika penekanan tidak dilakukan di kiri (kurang dari 240), belok kanan, dan perintah tunggu hingga diberi label menunggu hingga layar tidak lagi ditekan sebelum melanjutkan. Cabang luar lainnya diberi label jika layar tidak ditekan, bergerak maju.

  • Sekarang proyek telah selesai, unduh dan jalankan untuk menguji cara kerjanya.

Bilah Alat VEXcode V5 dengan kotak merah di sekitar ikon Unduh. Ikon yang ditampilkan adalah, dari kiri ke kanan, Controller, Brain, Download, Run, Stop, dan Share.

  • Catatlah di buku catatan teknik Anda tentang bagaimana tombol-tombol mengendalikan pergerakan Clawbot.

Ikon Tips Guru Tips Guru

Saat pengujian, siswa harus menyadari bahwa Antarmuka Pengguna, saat digunakan dari belakang Clawbot, tampaknya bekerja secara terbalik. Dari sudut pandang pengguna, Clawbot berpaling dari sisi yang ditekan oleh pengguna. Itu bukan Pengalaman Pengguna yang optimal.

Langkah 3: Sesuaikan proyek untuk Pengalaman Pengguna yang lebih baik.

Saat menekan tombol layar dari belakang Clawbot saat melaju ke depan, Anda menekan sisi kanan layar untuk berbelok ke kiri dan sisi kiri layar untuk berbelok ke kanan. Itu bukan Pengalaman Pengguna yang baik. Pengalaman Pengguna adalah seberapa baik pengguna dapat berinteraksi dengan Antarmuka Pengguna untuk mengendalikan sistem komputer. Ada informasi lebih lanjut tentang Antarmuka Pengguna di bagian Terapkan di lab ini.

Dalam kasus ini, kita perlu meningkatkan Antarmuka Pengguna untuk meningkatkan Pengalaman Pengguna.

  • Tinjau proyek LeftOrRight dan revisi sehingga saat pengguna menekan tombol dari belakang Clawbot, robot berbelok ke kanan saat pengguna menekan sisi kiri layar. Kalau tidak, Clawbot berbelok ke kiri.
// Mulai kode proyek
int main() {
  // Inisialisasi Konfigurasi Robot. JANGAN DIHAPUS!
  vexcodeInit();

  sementara (benar) {
    jika (Brain.Screen.menekan()) {
      jika (Brain.Screen.xPosition() < 240) {
        Drivetrain.belok(kiri);
        tungguSampai(!Brain.Screen.menekan());
      } yang lain {
        Drivetrain.belok(kanan);
        tungguSampai(!Brain.Screen.menekan());
      }
    } yang lain {
      Drivetrain.mengemudi(maju);
    }
  }  
}  
  • Rencanakan, uji, dan ulangi proyek ini di buku catatan teknik Anda sehingga proyek membuat Clawbot berputar ke arah sisi layar yang ditekan pengguna dari belakang Clawbot.

Ikon Kotak Alat Guru Kotak Peralatan Guru

Siswa harus merencanakan, menguji, dan menyempurnakan perubahan pada proyek sambil mendokumentasikannya dalam buku catatan teknik mereka. Untuk rubrik buku catatan teknik individu, klik salah satu tautan berikut (Google Doc / .docx / .pdf), atau klik salah satu tautan berikut untuk buku catatan tim (Google Doc / .docx / .pdf). Ingatlah untuk menjelaskan penilaian kepada siswa sebelum mereka mulai mengerjakan.

Ikon Kotak Alat Guru Kotak Alat Guru - Solusi

Ada dua cara yang mungkin untuk memecahkan masalah yang diajukan di atas. Cara pertama adalah yang tertulis dalam instruksi: Tinjau proyek LeftOrRight dan revisi sehingga ketika pengguna menekan tombol dari belakang Clawbot, robot berbelok ke kanan ketika pengguna menekan sisi kiri layar. Kalau tidak, Clawbot berbelok ke kiri.

// Mulai kode proyek
int main() {
  // Inisialisasi Konfigurasi Robot. JANGAN DIHAPUS!
  vexcodeInit();

  sementara (benar) {
    jika (Brain.Screen.menekan()) {
      jika (Brain.Screen.xPosition() < 240) {
        Drivetrain.belok(kanan);
        tungguSampai(!Brain.Screen.menekan());
      } yang lain {
        Drivetrain.belok(kiri);
        tungguSampai(!Brain.Screen.menekan());
      }
    } yang lain {
      Drivetrain.mengemudi(maju);
    }
  }  
}  

Solusi lainnya adalah mengganti instruksi Operator sehingga ketika nilai x lebih besar dari 240, Clawbot berbelok ke kiri.

// Mulai kode proyek
int main() {
  // Inisialisasi Konfigurasi Robot. JANGAN DIHAPUS!
  vexcodeInit();

  sementara (benar) {
    jika (Brain.Screen.menekan()) {
      jika (Brain.Screen.xPosition() > 240) {
        Drivetrain.belok(kiri);
        tungguSampai(!Brain.Screen.menekan());
      } yang lain {
        Drivetrain.belok(kanan);
        tungguSampai(!Brain.Screen.menekan());
      }
    } yang lain {
      Drivetrain.mengemudi(maju);
    }
  }  
}  

Ikon Motivasi Diskusi Memotivasi Diskusi

Anda perlu menggunakan koordinat dari bidang koordinat saat Anda memprogram pernyataan kondisional saat nilai x kurang dari 240 (sisi kiri layar). Agar layar otak menggambar tombol visual, Anda juga perlu menggunakan koordinat.
Kembali ke Langkah 2 di mana Anda diperlihatkan koordinat untuk layar V5 Robot Brain.

Kisi piksel layar V5 Brain menunjukkan 12 baris bernomor di sepanjang sisi kiri, dengan baris atas diberi label Baris 1 dan baris bawah diberi label Baris 12. Di bagian atas terdapat 48 kolom bernomor, dengan Kolom 1 diberi label di paling kiri dan Kolom 48 diberi label di paling kanan. Total ukuran pikselnya adalah lebar 480 piksel dan tinggi 240 piksel.

T:Berapakah nilai x di tepi kanan layar?
J:Nilai x meningkat dari 0 di tepi kiri hingga 480 di tepi kanan.

T:Jadi, rentang nilai x adalah 480 (0 hingga 480). Berapa rentang nilai y?
J:Rentang nilai y adalah 240 (0 hingga 240).

T:Di mana titik asal (0, 0) bidang koordinat ini?
J:Titik asal berada di sisi kiri atas.

T:Anda berada di bagian atas layar ketika nilai y sama dengan 0. Mengapa hal ini tidak biasa?
A:Biasanya, nilai-y meningkat saat Anda bergerak ke atas, tetapi pada layar V5, nilai-y meningkat saat Anda bergerak ke bawah. Namun Anda dapat menganggapnya sebagai nilai y yang meningkat saat Anda menjauh dari titik asal (0, 0) di kiri atas layar.

Ikon Perluas Pembelajaran Anda Perluas Pembelajaran Anda

Pada Tantangan Antarmuka Pengguna bagian Pikirkan Ulang, siswa akan diminta untuk mengembangkan proyek yang membuat empat tombol pada layar untuk mengendalikan cakar dan lengan Clawbot. Untuk tantangan itu, mereka juga diminta menampilkan keempat tombol tersebut di layar. Perluas Pembelajaran Anda ini, seperti halaman sebelumnya, akan membantu mempersiapkan mereka untuk tantangan itu karena tantangan tersebut memiliki empat tombol untuk diprogram dan ini hanya memiliki dua.

Mintalah siswa menambahkan suatu kejadian ke program sehingga layar menggambar dua tombol yang terlihat saat proyek berjalan. Sarankan agar siswa menggunakan fitur Bantuan di VEXcode V5 untuk informasi tentang Peristiwa, khususnya informasi instruksimenggambar persegi panjang. Arahkan siswa untuk meninjau bagaimana layar otak diatur dalam sistem koordinat berdasarkan jumlah piksel saat digunakan dalam blokmenggambar persegi panjang. Mereka perlu memahami hal itu untuk menetapkan parameter dalam blok itu. Selain itu, mereka perlu memahami cara menyiarkan acara. Dalam kasus ini, kejadiannya adalah menggambar tombol.

Siswa harus merencanakan, menguji, dan menyempurnakan perubahan pada proyek sambil mendokumentasikannya dalam buku catatan teknik mereka. Untuk rubrik buku catatan teknik individual, klik salah satu tautan berikut (Google Doc / .docx / .pdf), atau klik salah satu tautan berikut untuk buku catatan tim (Google Doc / .docx / .pdf).

Berikut adalah contoh solusinya:

// Mulai kode proyek
event ScreenButtons = event();

void HasScreenButtons() {
  Brain.Screen.setFillColor(hijau);
  Brain.Screen.drawRectangle(0, 0, 240, 120);
  Brain.Screen.setFillColor(ungu);
  Brain.Screen.drawRectangle(240, 0, 480, 120);
  Brain.Screen.setFillColor(oranye);
  Brain.Screen.drawRectangle(0, 120, 240, 240);
  Brain.Screen.setFillColor(cyan);
  Brain.Screen.drawRectangle(240, 120, 480, 240);
  tunggu(1, detik);
}

int main() {
  // Menginisialisasi Konfigurasi Robot. JANGAN DIHAPUS!
  Bahasa Indonesia: vexcodeInit();

  ScreenButtons(HasScreenButtons);

  sementara (benar) {
    ScreenButtons.siaran();

    jika (Brain.Layar.menekan()) {

      jika (Brain.Layar.posisix() < 240) {

        jika (Brain.Layar.posisiy() < 120) {
          ClawMotor.putar(maju);
          tungguSampai(!Brain.Layar.menekan());

        } yang lain {
          ClawMotor.putar(mundur);
          tungguSampai(!Brain.Layar.menekan());
        }
        
      } yang lain {
        jika (Brain.Layar.posisiy() < 120) {
          ArmMotor.putar(maju);
          tungguSampai(!Brain.Layar.menekan());

        } else {
          ArmMotor.spin(reverse);
          waitUntil(!Brain.Screen.pressing());
        }
      }
      ClawMotor.stop();
      ArmMotor.stop();
    }
    wait(5, msec);
  }  
}  

Untuk pengalaman profesional yang lebih realistis, mintalah siswa meminta masukan dari teman sekelas mereka tentang dua pilihan warna mereka.
Apakah warna yang dipilih membuat Anda ingin menggunakan antarmuka, atau warna apa yang mereka sukai sebagai pengguna?
Bagian dari pengembangan Antarmuka Pengguna yang hebat adalah mengumpulkan data tentang Pengalaman Pengguna, bahkan preferensi estetika.