PROGMEM
Hakan İyice // 15 Ocak 2012 // 5 yorum // kategori: Arduino ProgramlamaDatayı SRAM yerine Flash’ta depolamaya yarar.
Sadece pgmspace.h’ta tanımlanan deÄŸiÅŸken tiplerinde iÅŸe yarar. Kendisi de pgmspace.h’ta tanımlandığından yazdığınız programda kullanmak için pgmspace.h’ı da programa eklemelisiniz.
#include <avr/pgmspace.h>
Kullanımı:
deÄŸiÅŸken_tipi deÄŸiÅŸken_adı[] PROGMEM = {deÄŸiÅŸken1, deÄŸiÅŸken2, deÄŸiÅŸken3, …}
PROGMEM bir değişken değiştirici (variable modifier) olduğundan değişken tanımlanırken hangi sırada kullanıldığının önemi yoktur. Şu şekillerde de kullanılabilir:
değişken_tipi değişken_adı[] PROGMEM = {}
değişken_tipi PROGMEM değişken_adı[] = {}
PROGMEM değişken_tipi değişken_adı[] = {}
PROGMEM kullanımı iki aÅŸamalı bir iÅŸlemdir, datayı Flash’a yazmak için olduÄŸu gibi okumak için de özel yöntemler vardır.
PROGMEM için kullanabileceğiniz değişken tipleri şunlardır:
prog_char
signed char tipindedir, 1 byte alan kaplar (-127, 127 arası)
prog_uchar
unsigned char tipindedir, 1 byte alan kaplar (0’dan 255’e kadar)
prog_int16_t
signed int tipindedir, 2 byte alan kaplar (-32.767, 32768 arası)
prog_uint16_t
unsigned int tipindedir, 2 byte alan kaplar (0’dan 65.535’e kadar)
prog_int32_t
signed long tipindedir, 4 byte alan kaplar (-2.147.483.648 – 2.147.483.647 arası)
prog_uint32_t
unsigned long tipindedir, 4 byte alan kaplar (0’dan 4.294.967.295’e kadar)
Örnek
#include <avr/pgmspace.h>
// flash’a metin kaydetme
prog_uchar mesajimiz[] PROGMEM = {“MERHABA ARDUINO. NABER?”};
int k;
char myChar;
// flash’tan metni okuma
myChar = pgm_read_byte_near(signMessage + k);
Kaynak: http://www.arduino.cc/en/Reference/PROGMEM
Etiketler: flash > progmem > sram
signMessage yerine mesajimiz yazılmalı sanırım kodları kaynak sayfadan kopyalarken dikkat etmemişsiniz.
Hocam iyi günler
Çok uzun boyutlu dizilerin kullanıldığı bir proje üzerinde çalışıyorum.
Örneğin
Byte ornek [255] {1,2,3,4,5,6,7………};
Bunun gibi onlarca dizi var.
Doğal olarak global değişkenler arduino hafizasına sığmıyor.
Bu PROGMEM yöntemi ile bu dizileri Flash memory üzerinde nasıl saklayacagimi anladım ama nasıl okuyacağımi anlayamıyorum. Birkaç farklı örnek ile biraz daha aciklamaniz mümkün mü acaba
https://github.com/troystribling/arduino-examples/blob/master/progmem/progmem.ino
http://www.kaizen40.com/arduino-progmem-nedir-nasil-kullanilir/
Hocam merhaba ben bir projemde arduinodaki veriyi MYSQL e kaydedip mysql dende kaydedildiğini geri döndüren ve yeşil Led yakan bir proje ile uğraşıyorum fakat ya veri gönderebiliyorum yada alabiliyorum ikisini aynı anda yapamadım bi yardımcı olur musunuz rica etsem
proje desteği veremiyoruz site içideki konular veya forumdan faydalanın
http://forum.arduinoturkiye.com/index.php?p=/discussion/8201/arduino-mysql-baglanmiyor-allah-rizasi-icin-yardim….#Item_5