Daftar Isi:

Grafik pada Layar SSD1306 I2C OLED 128x64 Dengan CircuitPython Menggunakan Itsybitsy M4 Express: 13 Langkah (dengan Gambar)
Grafik pada Layar SSD1306 I2C OLED 128x64 Dengan CircuitPython Menggunakan Itsybitsy M4 Express: 13 Langkah (dengan Gambar)

Video: Grafik pada Layar SSD1306 I2C OLED 128x64 Dengan CircuitPython Menggunakan Itsybitsy M4 Express: 13 Langkah (dengan Gambar)

Video: Grafik pada Layar SSD1306 I2C OLED 128x64 Dengan CircuitPython Menggunakan Itsybitsy M4 Express: 13 Langkah (dengan Gambar)
Video: Tutorial OLED I2C Display degan Arduino (Image & Animation) #Arduino 2024, Juli
Anonim
Grafik pada Layar SSD1306 I2C OLED 128x64 Dengan CircuitPython Menggunakan Itsybitsy M4 Express
Grafik pada Layar SSD1306 I2C OLED 128x64 Dengan CircuitPython Menggunakan Itsybitsy M4 Express

Layar OLED SSD1306 adalah layar grafis monokrom kecil (0,96 ), murah, tersedia secara luas, I2C dengan 128x64 piksel, yang mudah dihubungkan (hanya 4 kabel) ke papan pengembangan mikroprosesor seperti Raspberry Pi, Arduino, atau Adafruit Itsybitsy M4 Express, CircuitPlayground Express atau perangkat CircuitPython lainnya Driver dapat diunduh dari internet.

Rutinitas grafis untuk Arduino telah tersedia untuk beberapa waktu tetapi tidak untuk sistem pengembangan lainnya.

Driver perangkat dasar memungkinkan pengguna untuk:

  • Kosongkan layar menjadi hitam atau putih. oled.isi(c)
  • Tulis string teks ke layar pada posisi (x, y) yang ditentukan oled.text("Text", x, y, c)
  • Gambar sebuah titik pada posisi tertentu (x, y) oled.pixel(x, y, c)
  • Muat file gambar ke layar. (Tidak digunakan dalam proyek ini)
  • Perbarui tampilan oled.show()

Instruksi ini akan menunjukkan, dengan prosedur sederhana, cara menggambar, secara interaktif:

  • garis
  • lingkaran
  • kotak berongga
  • blok padat
  • karakter yang telah ditentukan sebelumnya

Saya akan menggunakan Adafruit Itsybitsy M4 Express untuk mendemonstrasikan metodenya tetapi kodenya, dengan Python, dapat dengan mudah dipindahkan ke sistem pengembangan lain.

Saya memilih Itsybitsy M4 untuk demonstrasi ini karena murah, kuat, mudah diprogram, termasuk Input/Output analog dan digital, memiliki banyak memori, memiliki dokumentasi yang mudah ditemukan dan forum bantuan di Internet, sangat mudah untuk diatur pada awalnya dan mendukung CircuitPython, versi Python yang ideal bagi mereka yang baru mengenal pengkodean.

Setelah Anda mengatur Itsybitsy dan SSD1306 Anda, ini adalah pembuatan papan tempat memotong roti yang sangat sederhana. Tidak ada pengetikan, semua file dapat diunduh.

Ini adalah proyek yang murah dan mudah untuk dibangun tetapi memperkenalkan beberapa ide menengah/lanjutan. Saya harap Anda akan mencobanya. Saya terkesan dengan tampilan kecil ini.

Langkah 1: Apa yang Kami Butuhkan untuk Proyek Ini

Apa yang Kami Butuhkan untuk Proyek Ini
Apa yang Kami Butuhkan untuk Proyek Ini

Perangkat keras:

  • SSD1306 I2C mono layar 128x64 piksel
  • Itsybitsy M4 Express
  • microUSB ke kabel USB - untuk memprogram papan
  • Papan tempat memotong roti
  • 1 10K Ohm potensiometer
  • 1 tombol sakelar
  • menghubungkan kawat - berbagai warna dapat membantu
  • Komputer (untuk menulis kode dan mengunggahnya) - laptop yang sangat tua bisa digunakan.

Perangkat lunak:

Mu editor - untuk menulis kode dan mengunggah skrip ke Itsybitsy

Menyiapkan Itsybitsy dijelaskan di sini:

Versi terbaru dari CircuitPython:

Pustaka CircuitPython:

Mu Editor:

Langkah 2: Sirkuit

Sirkuit
Sirkuit

Ini adalah rangkaian yang sangat sederhana untuk diatur. Halaman berikutnya mengilustrasikan papan tempat memotong roti yang sudah jadi dengan kabel berwarna untuk mempermudah.

Langkah 3: Versi Papan Tempat Memotong Roti dari Sirkuit

Versi papan tempat memotong roti dari Sirkuit
Versi papan tempat memotong roti dari Sirkuit

Ada rel listrik di bagian atas dan bawah papan tempat memotong roti. Dengan kabel merah, gabungkan rel +ve menjadi satu. Dengan kabel hitam, gabungkan rel -ve menjadi satu.

Bergabunglah dengan pin 3V Itsybitsy ke rel +ve bawah - kabel merah. (Kolom 12)

Bergabunglah dengan pin G (GND) Itsybitsy ke rel atas - kabel hitam. (Kolom 12)

Di kolom 33 dan 34, sambungkan pin SSD1306 VCC dan GND ke rel daya atas.

Dengan kabel merah muda, gabungkan pin SCL bersama-sama.

Dengan kabel abu-abu, gabungkan pin SDA menjadi satu.

Dengan kabel merah dan hitam sambungkan pin luar potensiometer ke rel daya atas dan dengan kabel hijau sambungkan pin tengah (penghapus) ke A5 pada Itsybitsy.

Hubungkan satu sisi sakelar tombol dengan kabel ungu ke pin 2 dan dengan kabel hitam sambungkan sisi lainnya ke rel GND.

Langkah 4: Memuat Font

Memuat Font
Memuat Font

Unduh file font dan seret ke drive CIRCUITPY. (Ini adalah Itsybitsy.)

Klik dua kali folder lib dan lihat daftar driver yang telah Anda muat.

Langkah 5: Menambahkan Driver Ekstra

Menambahkan Driver Ekstra
Menambahkan Driver Ekstra

Anda akan membutuhkan yang berikut ini di folder lib:

  • simpleio.mpy
  • adafruit_bus_device
  • adafruit_framebuf.mpy
  • adafruit_ssd1306.mpy

Jika tidak ada, seret ke folder dari versi terbaru yang tersedia.

Anda sekarang siap untuk mengunduh skrip.

Setelah dimuat ke editor Mu, Anda dapat menyimpannya ke Itsybitsy dengan nama main.py.

Program ini berjalan melalui serangkaian demonstrasi garis, lingkaran, grafik batang dinamis dan menampilkan karakter yang ditentukan. Putar panci secara perlahan dan tekan dan tahan tombol untuk mengontrol tampilan.

Halaman berikut memberikan informasi lebih lanjut tentang cara kerja program.

Langkah 6: Siapkan Perangkat

Siapkan Perangkat
Siapkan Perangkat

Bagian pertama ini memuat semua pustaka dan menyiapkan SSD1306, potensiometer, dan sakelar tombol pada pin yang benar.

Langkah 7: Tentukan Karakter dan Gambar Garis Horizontal dan Vertikal

Tentukan Karakter dan Gambar Garis Horizontal dan Vertikal
Tentukan Karakter dan Gambar Garis Horizontal dan Vertikal
Tentukan Karakter dan Gambar Garis Horizontal dan Vertikal
Tentukan Karakter dan Gambar Garis Horizontal dan Vertikal

Bagian ini mengatur karakter yang telah ditentukan sebelumnya. Mereka adalah 5 titik lebar dan 8 titik tinggi. Setiap titik dalam definisi menggambar 4 titik di layar sehingga terlihat lebih baik.

Garis horizontal dan vertikal mudah digambar dengan lingkaran. Anda hanya perlu ingat bahwa Anda memerlukan titik ekstra di akhir. Garis dari (0, 7) ke (5, 7) akan membutuhkan 6 titik: dengan x sama dengan 0, 1, 2, 3, 4 dan 5 secara bergantian.

Perintah titik dasar adalah oled.pixel(x, y, color) - 0 hitam dan 1 putih.

Asal (0, 0) berada di kiri atas layar, 0 - 127 piksel secara horizontal (kiri ke kanan) dan 0 - 63 secara vertikal (atas ke bawah).

Langkah 8: Kotak, Balok dan Garis Miring

Kotak, Balok dan Garis Miring
Kotak, Balok dan Garis Miring

Kotak dibangun dari garis horizontal dan vertikal.

Blok dibangun dari beberapa garis horizontal.

Untuk garis miring pertama kita periksa koordinat yang diberikan paling kiri terlebih dahulu. Jika tidak, kami menukarnya karena garis akan ditarik dari kiri ke kanan.

Kami kemudian menghitung kemiringan dan menggunakannya untuk menetapkan nilai y untuk setiap nilai x.

Prosedur tampilan(t) membuat layar yang diperbarui terlihat dan menunggu beberapa saat, t detik.

Langkah 9: Simbol Derajat, Sudut, Grafik Batang dan Lingkaran

Simbol Derajat, Sudut, Grafik Batang dan Lingkaran
Simbol Derajat, Sudut, Grafik Batang dan Lingkaran

Simbol derajat dibuat dari 4 piksel.

Rutin align() menambahkan spasi ekstra di depan nomor untuk menyelaraskan nilai pendek di ruang tetap.

Grafik(v) rutin menggambar grafik batang horizontal yang memberikan persentase yang dipilih. Nilai ditulis di ujung kanan menggunakan 'T' untuk mewakili 100 (Ton atau Atas).

Lingkaran memerlukan beberapa trigonometri sehingga kita perlu mengimpor perpustakaan matematika di awal skrip. Kami menggunakan sin, cos dan radian untuk menghitung offset x dan y dari pusat karena radius diputar hingga 90 derajat. Poin diplot di masing-masing dari empat kuadran untuk setiap perhitungan offset.

Langkah 10: Pengumpulan Sampah, Judul dan Lingkaran

Pengumpulan Sampah, Judul dan Lingkaran
Pengumpulan Sampah, Judul dan Lingkaran

Petunjuk ini mendemonstrasikan pembersihan layar menjadi hitam putih, menulis teks ke layar, dan menggunakan rutinitas 'pengumpulan sampah' gc() untuk mengosongkan ruang. Nilai tersebut menunjukkan bahwa ada banyak ruang untuk skrip yang jauh lebih besar.

Program kemudian menggambar lingkaran dengan pusat yang sama dan dengan pusat yang bergerak. Rutinitas yang cukup cepat mengingat jumlah perhitungan yang diperlukan.

Judul demo baris ditulis berikutnya.

Langkah 11: Demo Garis

Demo Garis
Demo Garis

Rutin ini benar-benar memberikan latihan line() rutin. Garis radial ditarik dari masing-masing empat sudut layar dengan pola pembentukan jarak yang berbeda.

Langkah 12: Loop Utama: Grafik Batang dan Karakter yang Ditetapkan

Loop Utama: Grafik Batang dan Karakter yang Ditetapkan
Loop Utama: Grafik Batang dan Karakter yang Ditetapkan

Ini adalah loop utama dari program. Nilai dari potensiometer mengubah nilai yang ditampilkan dan mengubah panjang grafik batang.

Jika tombol ditekan, karakter yang ditentukan akan ditukar seperti 1/0 dan Benar/Salah. Loop ini berjalan cukup lambat karena menggambar karakter yang telah ditentukan adalah proses yang lambat. Anda dapat mempercepatnya dengan mengomentari beberapa di antaranya.

Tidak ada sensor suhu yang dipasang, untuk menjaga agar demo ini tetap sederhana, jadi tanda '?' ditampilkan sebagai ganti nilai pada baris 190.

Direkomendasikan: