Тема: 24LC256/24LC128 — последовательная I2C EEPROM
Библиотека - http://rcl-radio.ru/wp-content/uploads/ … 24LC-2.zip
Заливка в EEPROM массива music и проигрывание мелодии
Для заливки массива убрать все комментарии и загрузить скетч, после восстановить комментарии и по новой загрузить скетч.
Для новых мелодий выделять не занятую область памяти EEPROM
#include <Wire.h>
#include <24LC.h> // http://rcl-radio.ru/wp-content/uploads/2020/03/24LC-2.zip
EEPROM24LC eeprom(0x50);
byte x;
int i,a,b,c;
/*
int music[102]{700,300,600,700,300,600,780,150,300,700,150,300,620,450,600,590,150,300,520,150,300,
460,450,600,350,450,1200,350,450,600,460,450,600,520,150,300,590,150,300,620,450,600,
590,150,300,520,150,300,700,1350,1800,700,300,600,700,300,600,780,150,300,700,150,300,
620,450,600,590,150,300,520,150,300,460,450,600,350,450,1200,350,450,600,620,450,600,
590,150,300,520,150,300,700,450,600,590,150,300,520,150,300,460,1350,2500};
*/
void setup(){
Serial.begin(9600);
pinMode(9, OUTPUT);
// for(i=0;i<102;i++){eeprom.writeWire(i,music[i]/10);}// запись массива music в ячейки от 0 до 102
}
void loop(){
for(i=0;i<102;i++){
if(x==0){a = eeprom.readWire(i)*10;Serial.print(a);}
if(x==1){b = eeprom.readWire(i)*10;Serial.print(b);}
if(x==2){c = eeprom.readWire(i)*8;Serial.println(c);}
x++;if(x>2){x=0;tone(9, a, b);delay(c);}
}
delay(10000);
}