Показано с 1 по 3 из 3
  1. #1
    Прохожий
    Регистрация
    10.10.2016
    Возраст
    64
    Сообщений
    7
    Поблагодарили
    1
    Поблагодарил
    1

    ARDUINO & RDA5807 скетч

    Здравствуйте,
    Нужна ваша помощ.Сделал FM радио на Arduino и RDA5807.
    Всё работает отлично.Можно ходить по заранее запрограмированным частотам
    при помощи валкодера.
    Но хочется,чтобы частота последней станции заносилась в
    память EEPROM,и при следующем включении радио запускалась эта последняя станция.
    Подправте пожалста мой скетч чтобы заработал EEPROM.
    Я в програмировании совсем неразбираюсь,поэтому прошу вашей помощи.
    Скетч прилагаю.


    #include <EEPROM.h>
    #include <Wire.h>
    #include <radio.h>
    #include <rda5807M.h>
    //Set Station frequences
    RADIO_FREQ preset[24] = {
    8810,9030,9100,9190,9240,9440,9620,9710,9760,9800,9850,10040,10210,
    10250,10290,10350,10410,10450,10490,10540,10590,10660,10710,10760
    };
    const int pin_A = 8;
    const int pin_B = 9;
    unsigned char encoder_A;
    unsigned char encoder_B;
    unsigned char encoder_A_prev=0;
    int i_sidx=8;
    int i_smax=23;
    RDA5807M radio;

    void setup() {

    Serial.begin(57600);
    Wire.begin();
    pinMode(pin_A, INPUT);
    pinMode(pin_B, INPUT);
    radio.init();
    radio.setBandFrequency(RADIO_BAND_FM, preset[i_sidx]);
    radio.setMono(false);
    radio.setMute(false);
    radio.setVolume(10);
    }
    void loop()
    {
    encoder_A = digitalRead(pin_A);
    encoder_B = digitalRead(pin_B);
    if(!encoder_A && encoder_A_prev)
    {
    if(encoder_B)
    {
    i_sidx++;
    if (i_sidx>i_smax){i_sidx=0;}
    radio.setFrequency(preset[i_sidx]);
    delay(100);
    }
    else
    {
    i_sidx--;
    if (i_sidx<0){i_sidx=i_smax;}
    radio.setFrequency(preset[i_sidx]);
    delay(100);
    }
    }
    encoder_A_prev = encoder_A;
    }


  2. #2
    Мастер Аватар для RX3AKF
    Регистрация
    18.03.2013
    Адрес
    Москва (TM)
    Возраст
    52
    Сообщений
    752
    Поблагодарили
    158
    Поблагодарил
    53
    Arduino имеет flash-память с ограниченным количеством циклов перезаписи (около 100 тысяч). Если при каждом переключении на другую станцию ее писать в энергонезависимую память, то она достаточно быстро перестанет сохранять данные.
    В вашем случае проще и правильнее записывать частоты настройки (массив preset) в память EEPROM, а для того, чтобы текущую частоту сохраненной для восстановления при включении сделать отдельную кнопку с этой функцией.
    Если нужно автоматически это делать, то придется повесить перезапись EEPROM на кнопку отключения питания: сохраняете частоту и выключаете Arduino, но придется
    добавить электронное или электромагнитное реле для отключения питания.
    Как использовать EEPROM: на любом сайте любителей arduino все показано и разжевано (arduino.ru или arduinoplus.ru).
    EEPROM.write и EEPROM.read, а если есть функция EEPROM.update - еще лучше.

  3. #3
    Экстра-класс Аватар для R9AAA
    Регистрация
    03.09.2006
    Адрес
    Челябинск, Россия
    Возраст
    39
    Сообщений
    1,406
    Поблагодарили
    933
    Поблагодарил
    4207
    Цитата Сообщение от RX3AKF Посмотреть сообщение
    Если нужно автоматически это делать, то придется повесить перезапись EEPROM на кнопку отключения питания:
    ... или на монитор питания, который дает прерывание с записью в EEPROM последней станции.

Похожие темы

  1. Arduino Uno в радиолюбительской практике
    от RM6LA в разделе Микропроцессорная техника
    Ответов: 115
    Последнее сообщение: 30.07.2019, 16:43
  2. ARDUINO: CW ключ
    от RT9I в разделе Телеграфные ключи
    Ответов: 24
    Последнее сообщение: 12.10.2014, 18:06
  3. RFID Shields for Arduino 134.2 kHz
    от RN3DLL в разделе Микропроцессорная техника
    Ответов: 0
    Последнее сообщение: 16.06.2014, 19:22
  4. WEB-switch на Arduino MEGA 2560
    от RX3X в разделе Микропроцессорная техника
    Ответов: 32
    Последнее сообщение: 08.06.2014, 07:03
  5. Trackuino - Arduino APRS трекер
    от RX1AL в разделе APRS: Трекеры
    Ответов: 0
    Последнее сообщение: 18.04.2011, 02:41

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Похоже, что вы используете блокировщик рекламы :(
Форум QRZ.RU существует только за счет рекламы, поэтому мы были бы Вам благодарны если Вы внесете сайт в список исключений!
как отключить
×
Рейтинг@Mail.ru
eXTReMe Tracker
Яндекс.Метрика