1

Тема: 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);
  }

2

Re: 24LC256/24LC128 — последовательная I2C 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[294]={174, 249,277,233, 499,555,174, 374,416,195, 124,138,220, 499,555,146, 249,277,146, 249,277,195, 499,555,174, 374,416,
                155, 124,138,174, 499,555,116, 249,277,116, 249,277,130, 499,555,130, 374,416,146, 124,138,155, 499,555,155, 374,416,
                174, 124,138,195, 499,555,220, 374,416,233, 124,138,261, 749,833,174, 249,277,293, 499,555,261, 374,416,233, 124,138,
                261, 499,555,174, 249,277,174, 249,277,233, 499,555,220, 374,416,195, 124,138,220, 499,555,146, 374,416,146, 124,138,
                195, 499,555,174, 374,416,155, 124,138,174, 499,555,116, 374,416,116, 124,138,233, 499,555,220, 374,416,195, 124,138,
                174, 999,1111,293, 999,1111,261, 249,277,233, 249,277,220, 249,277,233, 249,277,261, 749,833,174, 249,277,
                174, 999,1111,233, 999,1111,220, 249,277,195, 249,277,174, 249,277,195, 249,277,220, 749,833,146, 249,277,
                146, 999,1111,233, 499,555,195, 374,416,220, 124,138,233, 499,555,195, 374,416,220, 124,138,233, 499,555,
                195, 374,416,233, 124,138,311, 999,1111,311, 999,1111,293, 249,277,261, 249,277,233, 249,277,261, 249,277,
                293, 749,833,233, 249,277,233, 999,1111,261, 999,1111,233, 249,277,220, 249,277,195, 249,277,220, 249,277,
                233, 749,833,195, 249,277,195, 999,1111,233, 499,555,220, 374,416,195, 124,138,174, 499,555,116, 374,416,
                116, 124,138,174,999,1111,195,499,555,220,499,555,233,2000,2222};
*/

void setup(){
   Serial.begin(9600);
   pinMode(9, OUTPUT);
    // for(i=200;i<494;i++){eeprom.writeWire(i,music[i-200]/10);}// запись массива music в ячейки c 200 до 494
}


void loop(){
  for(i=200;i<494;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);
  }