Kehabisan Memori Arduino Uno

Jadi ceritanya saya mau meneruskan ngoprek TouchRadio seperti yang sudah saya tuliskan sebelumnya di “Mendesain User Interface Radio FM Touchscreen.” Dan ternyata saya kehabisan memory utk program. Saya baru sadar kalau Arduino Uno memiliki memory untuk kode yang sangat kecil, cuma 32 Kb. Ups… saya jadi teringat pernah mengalami coding untuk ATMega8 dan ATTiny85/84 yang juga punya memory sangat kecil. Dan berakhir mentok juga. Memory yang kecil memang sangat membatasi kreativitas, hehehe…

Solusi paling keren ya pakai Arduino Mega yang punya memory 256 Kb. Tapi konsekuensinya ya jadi membesar board-nya. Atau menggunakan Wemos D1 Mini yang punya 4 Mb dan punya clock jauh lebih cepat. Tapi Wemos D1 Mini kekurangan pin untuk display TFT 2.8″ Touchscreen. Kecuali jika menggunakan OLED I2C yang hemat pin. Dan sebenarnya saya punya stock-nya. Tapi berarti tidak touchscreen, hiks…

Sejatinya saya memang suka pakai Wemos D1 Mini yang lebih banyak memory, lebih cepat, dan sudah punya modul WiFi. Lebih bisa dikembangkan lebih jauh, seperti pengendalian dari network, dll. Dan tentu saja karena ukurannya sangat kecil dan lebih hemat energi. Tapi ya itu tadi, kekurangan pin untuk menggunakan display TFT Touchscreen.

Di lain pihak, saya memang mengakui kalau saya tidak menyadari sejak awal coding kalau Uno ini terbatas memory-nya. Jadi saya codingnya ngasal. Maksudnya ngasal ini adalah karena saya menggunakan banyak variabel dan konstanta. Dan saya banyak menggunakan perhitungan saat menggambar sesuatu. Ambil contoh:

#define MAX_HEIGHT 240
#define MAX_WIDTH 320
#define RADIUS 20

void tombol_on(boolean pressed) {
  tft.drawCircle(MAX_WIDTH/2, MAX_HEIGHT/2, RADIUS, BLACK);
}

Mestinya kan tidak perlu dijadikan konstanta max_height, max_width, radius, offset, dan lain-lain. Dan saat menggambarkan tidak perlu melakukan operasi matematis seperti max_width/2, dll. Karena angka-angka ini sudah diketahui, absolute, atau tidak relatif. Mungkin relatif itu diperlukan jika ada animasi atau pergerakan. Tapi ini kan tidak. Jadi saya rada boros dalam coding. Gubrak…

Seharusnya bisa lebih praktis lagi. Harus dioptimasi code-nya. Tapi saya sudah terlanjur menulis panjang lebar dan malas meng-optimasinya. Hahaha…

Ah besok lagi saja optimasinya. Toh versi minimalnya sudah berhasil jalan dengan baik, hehehe…

Iklan

Satu pemikiran pada “Kehabisan Memori Arduino Uno

  1. […] TFT 2.4″ Touchscreen Shield. Ini adalah shield display yang menurut saya cukup keren di beberapa tahun yang lalu. Sampai sekarang masih usable sih, meskipun sekarang sudah banyak display OLED atau paper ink yang lebih hemat daya. Di samping kepraktisannya, shield ini berpotensi membuat pusing karena dua hal. Yang pertama adalah karena shield ini menggunakan pin A4 untuk reset, sedangkan A4 yang juga berfungsi sebagai SDA sangat diperlukan oleh protokol I2C. Yang kedua adalah terbatasnya memori Arduino Uno yang hanya memiliki memori 32KB. Sedangkan desain UI (user interface) TouchRadio ini ternyata boros. Akhirnya saya menghilangkan fitur Alarm karena sudah tidak bisa lagi menambahkan kode. (Baca: Kehabisan Memori Arduino Uno). […]

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.