logo
Mengirim pesan
  • Indonesian
Rumah Berita

berita perusahaan tentang Berbagai cara menggunakan modul display OLED

Sertifikasi
Cina Shenzhen Saef Technology Ltd. Sertifikasi
Cina Shenzhen Saef Technology Ltd. Sertifikasi
Ulasan pelanggan
Tanggapan yang sangat cepat ke email dan setelah pembayaran barang yang divalidasi dikirim dengan pengiriman udara ekspres dan diterima dalam beberapa hari.Barang-barang itu baru dalam kondisi dan bahkan memiliki header pin dilas yang merupakan plus besar. Sangat senang secara keseluruhan dan akan membeli lagi!

—— Andreas Anderssons

Seperti biasa 100% layanan terbaik....

—— Evto-WEb Aps. Denmark

Tampilan yang cerah! Bekerja seperti yang diharapkan menggunakan perpustakaan dari Adafruit disebutkan dalam ulasan lain. Juga harus menggunakan pengaturan SPI_MODE3 di Init. Saya menggunakan Arduino Nano, VCC ke 5V dan BKL ke 3.3V. (PN: SFTM130JY-7181AN)

—— Richard Ingram

Ini adalah monitor HDMI lurus dengan Micro-USB untuk kontrol daya dan sentuh. Salah satu triknya adalah monitor sentuh 5 titik (kapasitif) sehingga berfungsi seperti layar ponsel atau laptop dengan ketukan, seret, cubit, dan gerakan sentuh lainnya. Saat dalam mode diperpanjang keduanya beralih ke resolusi asli mereka dan tampilannya bagus dan tajam.

—— Darkwynd

Halo Janco, Kuharap kau baik-baik saja. Kami sangat senang dengan kualitas batch sebelumnya dari layar OLED 2,42 inci yang kami bawa dari Anda (lihat di bawah). Kami ingin memesan lagi untuk XXXX pcs.

—— Libby.

Saya telah mengatur ini sebagai monitor untuk sistem keamanan. Ini berfungsi dengan baik setelah saya melakukan beberapa pemecahan masalah.

—— Michael Helms

Kerja bagus! Terima kasihSaya akan terus menghubungi perusahaan Anda untuk pesanan berikutnya。

—— DEMAC S.A.

Secara keseluruhan monitor yang bagus. Saya seorang pejuang jalanan dan sedang mencari monitor portabel yang dapat saya bawa untuk membuat pekerjaan saya lebih efisien. Secara keseluruhan terkesan dengan produk. Layar terlihat bagus, responsif, dan warna/ketajamannya bagus.

—— J Rau

Monitor kecil yang mengagumkan untuk proyek saya.

—— Daniel Champagne

Saya menerima sampel dalam waktu seminggu. pengiriman sangat cepat. ini adalah layar yang sangat bagus. sangat tajam dengan kontras yang baik. sudut pandang sedikit lebih baik daripada beberapa layar lain yang saya gunakan.

—— GeorgeB

Tampilan datang dengan baik dikemas dengan busa untuk melindungi pin header dari bengkok dalam pengiriman.Header pra-dilas adalah penghematan waktu. Cukup ruang untuk empat baris oleh enam belas karakter teks kecil.

—— Ini

cukup mudah untuk mengatur, dan warna yang baik. hitam murni sempurna, seperti yang diharapkan dari OLED. satu-satunya masalah yang saya miliki adalah per-pixel menulis - dibutuhkan sekitar 1,5 detik untuk menyegarkan penuh dengan pengaturan saya.

—— Ryan James

Layar besar - dikemas dengan baik dan bekerja dengan baik!

—— Fletcher

Ini bukan pertama kalinya kami memesan, awalnya kami memesan uji coba 10 pcs, kemudian dua kali 1000 pcs, dan sekarang 3000 pcs.

—— Josh.

Hai Christina, Produk yang kami pesan, layar OLED 3,12 inci, telah diuji dan semuanya bekerja dengan sempurna, 100%. Kami sangat senang dengan produk, pengiriman cepat dan layanan pelanggan yang sangat baik. Salam hangat. Andreas

—— Andreas Anderssons

Saya sedang mengerjakan sistem hiburan seluler sumber terbuka Reflections dan membutuhkan tampilan yang cerah untuk aplikasi jam tangan.dan mengirim bagian-bagian dengan cepat- Frank.

—— jujur

Ini produk yang sangat bagus. es el equipo de profesionales que tiene esta empresa que responden de forma muy profesional y amable a cualquier reto que se presenta para la puesta en marcha y desarrollo de los proyectos que se realizan con estas pantallasTerima kasih banyak untuk semuanya.

—— Eric M.

Sebuah kesenangan untuk berurusan dengan perusahaan ini. profesional, cepat dan langsung ke titik sepanjang seluruh proses

—— Joseph Woodcock

Parfait merci!

—— William Klein

Perawatan dari penyedia telah sangat baik sejak hari pertama pengiriman sangat cepat terima kasih banyak untuk semuanya

—— Peter Franzke

Kualitas Luar Biasa

—— Tisagh Chase

Ini adalah pertama kalinya kami di sini. Ini adalah proses yang mulus dan mudah.

—— Yordania L

Sangat puas

—— Jeff.

ini tiba tepat waktu dan kualitasnya luar biasa.

—— Niccolò

Orang-orang baik sangat membantu

—— Valentino

LCD yang sangat bagus dan gambar yang sangat jelas.

—— Charlotte

Kualitas produk sesuai harapan. sangat direkomendasikan dan pemasok sangat cepat dalam menjawab pertanyaan.

—— Elissa Decker

Tampilan persis seperti yang dijelaskan. resolusi tinggi, kecerahan tinggi, dan papan HDMI kecil yang bekerja dengan sempurna.

—— Virtual

Produk diterima tepat waktu dan tanpa kerusakan apapun.

—— Brooke.

produk yang sangat baik. pemasok sangat responsif! kami memesan 2500 lagi. terima kasih

—— Gao Vang

Bagian dari pembayaran adalah atas pengiriman dan itu tidak diterima tepat waktu.

—— Stephanie Jade

Pemasok sangat membantu dan barang datang segera.

—— Staci

Pemasok ini menemukan solusi terbaik yang memenuhi kebutuhan kami.

—— Alex Bowers

Produk yang bagus.

—— Nick.

dukungan yang sangat baik

—— Taylor D Fussell

Tampilan bekerja seperti yang diharapkan, kemasan yang bagus dan pengiriman cepat.

—— Ginnart

Produknya bagus dan kami menargetkan pemasok ini adalah pemasok utama kami.

—— Sara

Pemasok yang berkualitas, waktu pengiriman yang baik dan kualitas yang baik, akan terus bekerja sama.

—— Jose Sanchez

Keindahan! kualitas yang sangat baik n pengiriman cepat. respon juga sangat cepat.

—— Maliboogal

Hai Cologne, terima kasih atas umpan balik yang bagus, ya, Windows semua dalam satu layar sentuh, kita default 2.4G wifi hanya, Jika perlu BT dan wifi 5G, perlu memberitahu saya sebelumnya.

—— Frederick Brown

Bon vendeur, aku menerima setiap kali layar berkualitas baik.

—— Joachim Wandji

I 'm Online Chat Now
perusahaan Berita
Berbagai cara menggunakan modul display OLED
berita perusahaan terbaru tentang Berbagai cara menggunakan modul display OLED

Memahami prinsip tampilan OLED - Berbagai cara menggunakan modul OLED

Modul OLED memiliki empat mode kerja, yaitu 6800 dan 8080 antarmuka paralel, mode antarmuka SPI serial 4-kabel, dan mode antarmuka IIC.Hubungan antara pengaturan BS1/BS2 dan mode antarmuka modul ditunjukkan dalam tabel berikut::

berita perusahaan terbaru tentang Berbagai cara menggunakan modul display OLED  0

Pengaturan default dari modul OLED SAEF Technology adalah BS0 ke GND, BS1 dan BS2 ke VCC (mode 8080), jika Anda ingin mengaturnya ke mode lain,Anda perlu memodifikasi pengaturan BS0-BS2 dengan soldering iron di bagian belakang OLED. (Perubahan perangkat keras)
Dari skemanya, kita bisa tahu bahwa ada total 16 pin yang ditarik, dan dari 16 garis, kita hanya menggunakan 15 pin, dan salah satunya tergantung. dari 15 garis, 2 adalah daya dan tanah,dan 13 tersisa. Dalam mode yang berbeda, jumlah jalur sinyal yang kita butuhkan berbeda, dalam mode 8080, semua 13 diperlukan, salah satunya yang umum, yaitu garis reset RST (RES),yang kita dapat langsung terhubung ke reset MCU (untuk mengkonfirmasi bahwa metode reset adalah sama), sehingga satu baris dapat dihilangkan. dalam modus IIC, hanya 2 baris yang diperlukan!

Kami baru saja belajar tentang hal itu. Modus kerja IIC hanya membutuhkan dua jalur, dan modus kerja IIC adalah menggunakan dua kabel untuk mensimulasikan IIC untuk mendapatkan data.

 

Kontroler OLED adalah SSD1306, yaitu: layar telanjang digerakkan oleh SSD1306, yang juga merupakan chip driver led yang lebih banyak digunakan.

 

Memori video modul OLED
OLED sendiri tidak memiliki memori video, dan memori videonya bergantung pada SSD1306 untuk menyediakan.Setiap halaman berisi 128 byte, total 8 halaman, yang persis 128 * 64 ukuran matriks titik.
Namun, karena OLED tidak dapat mengontrol satu matriks titik pada suatu waktu, itu hanya dapat mengontrol 8 matriks titik; dan itu adalah kontrol sapu vertikal;
Karena setiap menulis ditulis dalam byte, ada masalah, jika kita menggunakan mode menulis saja untuk mengoperasikan modul, maka, kita harus menulis 8 titik pada suatu waktu, jadi ketika kita menggambar titik,kita harus mencari tahu keadaan saat ini dari setiap bit dari byte di mana titik yang akan ditetapkan terletak (0/1?). Jika tidak, data tertulis akan menulis ulang keadaan sebelumnya, dan hasilnya adalah bahwa beberapa titik yang tidak perlu ditampilkan ditampilkan,atau yang harus ditampilkan tidak ditampilkan. Dalam mode yang dapat dibaca, kita dapat membaca byte yang akan ditulis terlebih dahulu, mendapatkan situasi saat ini, dan kemudian menuliskannya ke dalam gram setelah memodifikasi bit yang akan ditulis ulang,sehingga tidak akan mempengaruhi situasi sebelumnyaNamun, ini membutuhkan kemampuan untuk membaca GRAM, untuk mode SPI 3-kabel atau 4-kabel, modul tidak mendukung membaca, dan mode membaca->-ke-> menulis juga relatif lambat.
Jadi metode yang kami gunakan adalah untuk membuat sebuah GRAM OLED (total 128 byte) di dalam STM32, dan pada setiap modifikasi, hanya memodifikasi GRAM pada STM32 (sebenarnya SRAM), dan setelah modifikasi,menulis GRAM pada STM32 ke GRAM OLED pada satu waktuTentu saja, metode ini juga memiliki kelemahan, yaitu, untuk mikrokontroler dengan SRAM yang sangat kecil (seperti seri 51), itu lebih merepotkan.

 

Memori video dari OLED
Format penyimpanan adalah sebagai berikut:

{\fnCandara\fs60\b1\4cH000000\4aH80}Aku tidak tahu.

//[1]0 1 2 3... 127

//[2]0 1 2 3... 127

//[3]0 1 2 3... 127

//[4]0 1 2 3... 127

//[5]0 1 2 3... 127

//[6]0 1 2 3... 127

//[7]0 1 2 3... 127

u16 OLED_GRAM[128][8];

Perbarui memori video ke LCD

tidak sah OLED_Refresh_Gram (tidak sah)

{

u8 i,n;

untuk ((i=0; i<8; i++)

{

OLED_WR_Byte (0xb0+i,OLED_CMD); Atur alamat halaman (0~7)

OLED_WR_Byte (0x00,OLED_CMD); Tetapkan posisi tampilan  alamat kolom rendah

OLED_WR_Byte (0x10,OLED_CMD); Tetapkan posisi tampilan  alamat ketinggian kolom

untuk ((n=0; n<128; n++)OLED_WR_Byte ((OLED_GRAM[n][i],OLED_DATA);

}

}

Perintah SSD1306

1: Perintah 0X81: Tetapkan kontras. Berisi dua byte, yang pertama 0X81 adalah perintah, dan satu byte berikutnya adalah nilai kontras yang akan ditetapkan. Semakin besar nilai ini ditetapkan,semakin terang layar akan.
2: Perintah 0XAE/0XAF: 0XAE untuk mematikan perintah tampilan; 0XAF untuk mengaktifkan perintah tampilan.
3: Perintah 0X8D: berisi 2 byte, yang pertama adalah kata perintah, yang kedua adalah nilai yang ditetapkan, byte kedua dari BIT2 menunjukkan keadaan beralih dari pompa muatan, bit adalah 1,pompa muatan dihidupkan, dan 0 dimatikan. Ketika modul diinitialisasi, ini harus diaktifkan, jika tidak Anda tidak akan melihat tampilan layar.
4: Perintah 0XB0 ~ B7: Digunakan untuk mengatur alamat halaman, dan tiga digit bawah sesuai dengan alamat halaman GRAM.
5: Perintah 0X00~0X0F: Digunakan untuk mengatur empat digit bawah alamat kolom awal saat menampilkan.
6: Perintah 0X10~0X1F: Digunakan untuk mengatur alamat kolom awal tampilan empat digit lebih tinggi.

Untuk perintah lebih lanjut, silakan lihat ini, sangat disarankan untuk melihatnya, sangat rinci: SSD1306 (chip driver OLED) instruksi secara rinci

Setelah memperkenalkan mode kerja dan driver chip, kita dapat mulai menggunakan modul IIC OLED ini

Kode secara rinci
#define OLED_CMD 0 // menulis perintah
#define OLED_DATA 1 //Tulis data

 

Inisialisasi OLED

Inisialisasi SSD1306

void OLED_Init (tidak sah)

 

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, MEMBUAT); Aktifkan jam pada port A

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; output dorong-tarik

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; Kecepatan 50MHz

GPIO_Init ((GPIOA, & GPIO_InitStructure); Inisialisasi GPIO

GPIO_SetBits ((GPIOA,GPIO_Pin_5 dalam GPIO_Pin_7);

delay_ms(200);

 

OLED_WR_Byte ((0xAE,OLED_CMD);//--tampilan mati

OLED_WR_Byte ((0x00,OLED_CMD);//---set low column address

OLED_WR_Byte ((0x10,OLED_CMD);//---menetapkan alamat kolom tinggi

OLED_WR_Byte ((0x40,OLED_CMD);//--set start line address

OLED_WR_Byte ((0xB0,OLED_CMD);//--set alamat halaman

OLED_WR_Byte ((0x81,OLED_CMD); // Kontrol kontrak

Perangkat lunak ini dapat digunakan untuk memutar video.

OLED_WR_Byte ((0xA1,OLED_CMD);//set segment remap

OLED_WR_Byte ((0xA6,OLED_CMD);//--normal / terbalik

OLED_WR_Byte ((0xA8,OLED_CMD);//--set multiplex ratio ((1 sampai 64)

Tugas OLED_WR_Byte ((0x3F,OLED_CMD);//-1/32

OLED_WR_Byte ((0xC8,OLED_CMD);//Com arah scan

OLED_WR_Byte ((0xD3,OLED_CMD);//-set display offset

OLED_WR_Byte ((0x00,OLED_CMD);//

 

OLED_WR_Byte ((0xD5,OLED_CMD);//set osc division

OLED_WR_Byte ((0x80,OLED_CMD);//

 

OLED_WR_Byte ((0xD8,OLED_CMD);//set area mode warna off

OLED_WR_Byte ((0x05,OLED_CMD);//

 

OLED_WR_Byte ((0xD9,OLED_CMD);//Set Periode Pra-Charge

OLED_WR_Byte ((0xF1,OLED_CMD);//

 

OLED_WR_Byte ((0xDA,OLED_CMD);//set com pin konfigurasi

OLED_WR_Byte ((0x12,OLED_CMD);//

 

OLED_WR_Byte ((0xDB,OLED_CMD);//set Vcomh

OLED_WR_Byte ((0x30,OLED_CMD);//

 

OLED_WR_Byte ((0x8D,OLED_CMD);//set charge pump enable

OLED_WR_Byte ((0x14,OLED_CMD);//

 

OLED_WR_Byte ((0xAF,OLED_CMD);//--hidupkan panel OLED}

OLED_Clear ((); Hapus layar, disarankan untuk membersihkan layar pertama setelah setiap inisialisasi selesai

 

Fungsi Clear screen, setelah membersihkan layar, seluruh layar menjadi hitam!

tidak valid OLED_Clear (tidak valid)

{

u8 i,n;

untuk ((i=0; i<8; i++)

{

OLED_WR_Byte (0xb0+i,OLED_CMD); Atur alamat halaman (0~7)

OLED_WR_Byte (0x00,OLED_CMD); Tetapkan posisi tampilan  alamat kolom rendah

OLED_WR_Byte (0x10,OLED_CMD); Tetapkan posisi tampilan  alamat ketinggian kolom

for ((n=0; n<128; n++)OLED_WR_Byte(0,OLED_DATA);

} // Perbarui tampilan

}

Dalam modulus diri yang biasanya kita gunakan, ada dua cara umum untuk mengambil modular, satu adalah 6 * 8, dan yang lain adalah 8 * 16,Yang pertama adalah mengambil karakter yang kita inginkan dalam tabel persegi panjang dengan 8 baris dan 6 kolom, dan yang kedua adalah untuk mengambil karakter dalam tabel persegi panjang dengan 16 baris dan 8 kolom. Seperti yang ditulis dalam komentar kode di bawah ini, karena hanya ada 8 baris per halaman di OLED,ruang untuk halaman berikutnya harus digunakanJadi kita memiliki ukuran font yang biasanya kita gunakan, tentu saja, ini adalah ukuran font yang biasa digunakan, kita juga bisa membuat ukuran font favorit kita sendiri melalui perangkat lunak modulasi karakter.

 

/* Menampilkan karakter di lokasi yang ditentukan, termasuk beberapa karakter

x:0~127

y:0~63

ukuran: Pilih font 16/12*/

void OLED_ShowChar ((u8 x,u8 y,u8 chr,u8 Char_Size)

{

char tak ditandatangani c=0,i=0;

c=chr-' '; Nilai offset dapat diperoleh dari pola font, yang pertama adalah'', dan karakter yang sesuai dapat diperoleh dengan mengurangi

if(x>Max_Column-1) {x=0; y=y+2; } //Max_Column: Kolom maksimum: 128; x: mengatur jumlah kolom; y: mengatur jumlah halaman

if(Char_Size ==16) // Dalam hal ini kolom yang sama dari dua halaman diperlukan, dan matriks titik 8*16 diperlukan

{

OLED_Set_Pos(x,y); Jika x = y = 2, maka atur ke kolom 3 di halaman 3, catatan: hanya ada delapan baris per halaman

untuk ((i=0; i<8; i++)

OLED_WR_Byte ((F8X16[c*16+i],OLED_DATA); Dengan meningkatkan i, titik-titik digambar dalam lingkaran, dan semua 8 baris kolom kedua di halaman 2 ditulis ke dalam data

OLED_Set_Pos(x,y+1); Karena jumlah titik tidak cukup, Anda perlu melanjutkan titik di kolom 2 di halaman 3

untuk ((i=0; i<8; i++)

OLED_WR_Byte ((F8X16[c*16+i+8],OLED_DATA); Lanjutkan menyelesaikan gambar sampai akhir titik 16.

}

lainnya

{

OLED_Set_Pos ((x,y); matriks titik 6x8, tidak perlu halaman lain untuk melanjutkan lukisan

untuk ((i=0; i<6; i++)

OLED_WR_Byte ((F6x8[c][i],OLED_DATA); Dalam array dua dimensi, C mengontrol baris dan I mengontrol kolom, sehingga tidak ada operasi lain yang diperlukan untuk menyelesaikan gambar

}

}

Berikut ini if(x>120) bukan kesalahan, karena sebelumnya x+=8; Ada penjelasan dalam catatan berikut, jadi Anda bisa memikirkannya.

 

void OLED_ShowString ((u8 x,u8 y,u8 *chr,u8 Char_Size) // Menampilkan string

{

char tak ditandatangani j=0;

while (chr[j]!='0') // Periksa apakah string berakhir

{

OLED_ShowChar ((x,y,chr[j],Char_Size); Gambar karakter satu per satu

x + = 8; x diatur ke kolom, ukuran karakter adalah 8 * 16, yaitu baris adalah 16 dan kolom adalah 8, dan setiap kali ditampilkan sebagai satu, Anda perlu memindahkan 8 kolom ke kolom yang lebih tinggi

if(x>120) {x=0; y+=2; } // Maksimumnya adalah 128 kolom, jika melebihi, Anda perlu memulai dari kolom nol lagi, karena Anda membutuhkan halaman lain untuk melanjutkan lukisan pada saat ini,untuk menghindari tumpang tindih, Anda membutuhkan y + = 2.

j++; Menggambar string dalam loop

}

}

2 angka ditampilkan, keduanya ditulis dalam kode di bawah ini dan harus dicatat bahwa "" di bawah ini mewakili nilai ASCII dari 32

m^n fungsi

u32 oled_pow ((u8 m,u8 n)

{

U32 hasil = 1;

sementara n-- hasil*=m;

hasil pengembalian;

}

Tampilkan 2 angka

x,y: koordinat awal

len: Jumlah digit dari angka

ukuran: ukuran font

Mode: mode 0, mode pengisian; 1. mode overlay

num: nilai numerik (0~4294967295);

void OLED_ShowNum ((u8 x,u8 y,u32 num,u8 len,u8 size2)

{

u8 t,temp;

u8 enshow=0;

untuk t=0; t

{

temp=(num/oled_pow(10,len-t-1))%10;

jika (menampilkan)

{

jika ((temp==0)

{

OLED_ShowChar ((x+(size2/2) *t,y,' ',size2);

melanjutkan;

Jika tidak, menunjukkan = 1;

 

}

Tampilan OLED Char ((x+(size2/2) *t,y,temp+'0',size2);

}

Beberapa di atas adalah penggunaan paling dasar kita, beberapa Xi ingin menggunakannya untuk menyelesaikan operasi yang lebih berbeda, berikut adalah, sebelum pengenalan,pertama memperkenalkan perangkat lunak pemodelan kami yang umum digunakan.

 

PC ke LCD 2002

Begini cara kerjanya!

Ketika kita menggunakannya, kita pertama membuka file di sudut kiri atas dan membuat yang baru. masukkan lebar dan tinggi kita, 6 * 8 atau 8 * 16 didasarkan pada ini untuk mengambil cetakan, Anda dapat mengatur ukuran sendiri.Ada sesuatu seperti gigi di sudut atas., dan kita perlu membukanya setelah kita menetapkan ukuran.

Setelah Anda memiliki semua di atas, Anda dapat menggambar apa yang Anda inginkan. karena OLED adalah 128 × 64, ukuran maksimum kami adalah ini, kita dapat menulis pada 128 × 64, menggambar, dll, apa yang keluar adalah gambar keseluruhan,yang juga merupakan cara untuk mengisi layar, dan ada semacam perangkat lunak imbasan di bagian belakang, yang diperoleh sebagai gambar, seperti beberapa karakter anime.

Sekarang kami telah memperkenalkan alat, kami siap untuk melanjutkan operasi kami!

1: Tarik garis lurus
Biasanya kita menggunakan titik yang sama seperti dalam gambar di bawah ini ketika kita ingin menggambar garis lurus, kita selalu mendapatkan titik, ini karena ukuran karakter yang kita gunakan umumnya adalah 6 * 8 atau 8 * 16,dan ukuran titik di dalam tidak penuh dari seluruh persegi panjang (dijelaskan di atas), apa yang perlu kita lakukan adalah membuka perangkat lunak karakter kami dan membuat titik lebih besar!

2: Tampilkan gambar (seperti beberapa karakter anime)

 

Rasanya agak lama. Ada lebih banyak cara untuk bermain, untuk memperbarui berikutnya.

Pub waktu : 2024-02-05 04:08:09 >> daftar berita
Rincian kontak
Shenzhen Saef Technology Ltd.

Kontak Person: Mrs. Christina

Tel: +8618922869670

Faks: 86-755-2370-9419

Mengirimkan permintaan Anda secara langsung kepada kami (0 / 3000)