Ciao! Sto cercando di sfruttare la libreria pgmspace.h per gli stessi scopi.. tuttavia quando Arduino legge la riga:
memcpy_P(uSendBuff, pfSendBuff+1, rawlen * sizeof(uint16_t));
si blocca la scheda e devo resettare... Provo a incollare lo sketch... compilo con 1.0.5 r2 e Arduino UNO/MEGA (la libreria si comporta in modo diverso tra le due?)
#include <IRremote.h>
#include <avr/pgmspace.h>
#include <avr/io.h>
#define REQ_BUF_SZ 20
#define maxLength 25
prog_uint16_t off[] PROGMEM ={4450,4250,600,1550,600,1500,600,1550,600,1550,600,450,600,450,650,1500,600,450,650,450,600,500,550,500,600,450,600,1550,600,1550,600,450,600,1550,600,450,600,450,650,450,600,500,550,450,650,450,600,1550,600,1550,600,1550,550,1550,600,1550,600,1500,650,1550,550,1550,600,500,550,500,600,450,600,500,600,450,600,500,550,500,600,450,600,450,650,1500,600,450,650,1500,600,450,650,450,600,500,600,450,600,500,550,500,600,450,600,1500,650,450,600,500,600,450,600,1550,600,1550,600,1500,600,500,600,450,600,450,600,450,650,450,600,450,650,450,600,450,600,500,600,450,600,450,600,500,600,450,600,1550,600,1550,600,450,600};
unsigned int uSendBuff[RAWBUF];
IRsend irsend;
void sendAcCommand(int index) {
uint16_t rawlen;
Serial.println("PRIMA RIGA");
delay(500);
prog_uint16_t* pfSendBuff = getAcSendBuff(index);
delay(500);
Serial.println("SECONDA RIGA");
delay(500);
if (0 != pfSendBuff) {
Serial.println("INGRESSO FUNZIONE PRIMA RIGA");
delay(500);
rawlen = pgm_read_word_near(pfSendBuff);
Serial.println("INGRESSO FUNZIONE SECONDA RIGA");
delay(500);
memcpy_P(uSendBuff, pfSendBuff+1, rawlen * sizeof(uint16_t));
Serial.println("INGRESSO FUNZIONE TERZA RIGA");
delay(500);
irsend.sendRaw(uSendBuff, rawlen, 38);
Serial.println("FUNZIONE ESEGUITA");
delay(500);
}
}
prog_uint16_t * getAcSendBuff(int index) {
if ( index == 99 ) { return off; }
return 0;
}
void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
Serial.println("CIAO");
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
sendAcCommand(99);
delay(2000);
}
}
Grazie per tutto l'aiuto... che mi date e mi darete.. ![]()