
Photogram adalah seni yang sangat menarik, pada satu waktu itu bahkan diperbanyak dalam program televisi. Anda menempatkan objek di atas kertas foto, buka dari arah di mana siluet paling menarik diperoleh, manifes, perbaiki - dan karya siap. Tetapi sekarang Anda tidak dapat membeli kertas foto di setiap langkah. Tetapi bagaimana jika, setelah foto, gambar digital dibuat digital?
Untuk ini, pemindai beam perjalanan yang sudah dikenal lama cocok, hanya hari ini daripada CRT akan lebih mudah untuk menggunakan matriks LED di dalamnya. Itu bahkan lebih baik: tabung memiliki sedikit perasaan senang sesudahnya, LED tidak. Sensor akan menjadi fototransistor TIL78, yang secara eksternal tidak dapat dibedakan dari LED (output dasar tidak dibawa keluar, tetapi tidak diperlukan). Phototransistor ini dihentikan, dapat digantikan oleh banyak yang serupa.
Fototransistor harus dihubungkan oleh emitor ke kabel biasa, kolektor ke input A5 Arduino UNO, lalu isi dan jalankan sketsa debug kecil:
#define SENSOR A5 void setup() { Serial.begin(9600); pinMode(SENSOR, INPUT_PULLUP); } void loop() { // Read analog value continuously and print it Serial.println(analogRead(SENSOR)); }
Program, khususnya, mengaktifkan resistor pull-up yang dibangun ke dalam Arduino, sehingga yang eksternal tidak diperlukan. Di menu Arduino IDE, pilih Tools - Serial Plotter, dan amati jadwal ringan. Karena basis fototransistor tidak ditunjukkan di atasnya, polaritas koneksinya ditentukan secara eksperimental.
Kami menghubungkan matriks LED 32x32 dengan perangkat kontrol terintegrasi sebagai berikut:

Matriks tidak dapat didukung oleh Arduino, membutuhkan sumber eksternal 5 V, 4 A. Kami menghubungkannya seperti ini:

Selalu suplai daya terlebih dahulu ke matriks, lalu ke Arduino, lepaskan daya dalam urutan terbalik. Kami βmemompaβ Arduino IDE dengan perpustakaan yang diperlukan dan memeriksa matriks seperti yang dijelaskan di
sini . Ketika berhasil, isi
sketsa untuk mendapatkan fotogram.
Di dalamnya, Anda dapat mencoba memvariasikan parameter:
static constexpr uint8_t READINGS_PER_PIXELS = 1; static constexpr uint8_t THRESHOLD = 15; static constexpr bool INVERT = false; static constexpr bool CLEAR = true;
Dua parameter pertama memungkinkan Anda untuk menyesuaikan sensitivitas, yang ketiga - beralih antara positif dan negatif, dan yang keempat - memungkinkan overlay masing-masing gambar berikutnya pada yang sebelumnya. Menonton
GIF animasi yang hebat .
Cara terbaik untuk menentukan apakah cahaya dari phototransistor berasal dari sebuah matriks adalah sebagai berikut: untuk membandingkan hasilnya dengan LED dimatikan dan dihidupkan. Jika LED di atas titik objek yang sedang dibaca saat ini diblokir, mereka akan sama, jika tidak diblokir, mereka akan berbeda. LED menyala dan mati beberapa kali dengan mengganti jalur OE (memungkinkan output), hasil baca dirangkum dalam dua baterai: dalam satu - dengan LED dimatikan, yang lain - ketika dihidupkan. Hasil pengurangan jumlah ini dibandingkan dengan nilai ambang batas.
Matriks berisi enam register geser yang sesuai dengan seluruh baris LED merah, hijau dan biru di bagian atas dan bawah. Garis LAT (kait) mengontrol buffer yang mentransfer nilai dari register geser ke driver LED. Empat baris alamat A, B, C, D memungkinkan Anda untuk memilih jalur aktif di bagian atas dan bawah, dan garis OE memungkinkan untuk menonaktifkan dan mengaktifkan driver.
Biasanya, data sebelumnya disimpan dalam buffer dan dikirim ke driver LED, sedangkan data baru ditulis untuk menggeser register saat ini. Setelah baris ditulis sepenuhnya, mereka dipindahkan ke buffer, dan prosesnya diulang untuk baris berikutnya. Bahkan jika Anda perlu mengubah status hanya satu piksel, Anda harus menulis ulang seluruh baris.
Di sini, matriks digunakan untuk tujuan lain - untuk pemindaian, jadi penulis menggunakan register geser dalam mode ini, tetapi buffer tidak. Kami mengumpankan satu ke garis LAT, dan isi register geser ditransfer ke buffer segera dengan setiap pulsa di garis CLK. Dan setelah setiap dubbing, kami mengedipkan LED beberapa kali melalui OE untuk membaca hasilnya dengan fototransistor dan ditambahkan dengan dua baterai, seperti dijelaskan di atas. Akhirnya, setelah menentukan apakah LED diblokir, kami merekam hasilnya dalam framebuffer yang disediakan di perpustakaan.
Ketika seluruh fotogram dipindai, itu akan cukup untuk menyalakan interupsi lagi - dan gambar dari framebuffer akan ditulis ke matriks dengan cara standar dan ditampilkan, setelah itu akan tetap di sana sampai pemindaian berikutnya dimulai.
Video: