Версия 2.29.2 экспериментальная, я там пытался сделать компактнее код, сделать часы без модуля DS3231, ну и другие эксперименты. Ее лучше не использовать, там только заготовки подпрограмм.
Экран просто так не заменишь, это заново писать программу, т.к. для этого индикатора своя библиотека. Как по мне 3.5" ILI9486 избыточен для простого измерителя мощности.
Добавлено через 8 минут(ы):
Скорее всего помеху дает шина I2C, постоянный обмен информации с модуля часов дает такой результат. Видимо к модулю надо обращаться исключительно для синхронизации времени, а основной ход часов сделать без опроса. Тогда при включении время синхронизируется и например каждый час делать синхронизацию. Я так понимаю это проблема на УКВ, в КВ диапазоне пока никто не жаловался.
Последний раз редактировалось Integral; 01.09.2019 в 13:00.
Спасибо от RK9AMX
Сделал версию с регулировкой температуры. Для этого пришлось выкинуть кусок программы, которая отвечала за автоматический сброс EEPROM памяти при первом включении. Иначе не влазило. Выход регулятора вентилятора порт D4. Задать пределы температуры включения и выключения можно в #define:
Между параметрами должен быть обязательно гистерезис хотя бы один градус. Выглядит сейчас вот так:Код:#define TFanOn 40.0 //температура включения вентилятора #define TFanOff 35.0 //температура выключения вентилятора
Поскольку автоматический сброс памяти мне пришлось убрать, чтобы впихнуть регулятор температуры, я сделал ручной сброс. После прошивки нужно выполнить очистку памяти EEPROM. Для этого необходимо зажать кнопку на порту D1 и перегрузить устройство. Как только появится надпись "Memory Reset..." кнопку можно отпустить.
Скетч в приложении.
Спасибо от RK9AMX
Спасибо попробую новый скетч
Удачи!
Новинка!
Новый шилд для Arduino - DABDUINO:
https://hackaday.io/project/20759-da...arduino-shield
https://www.tindie.com/products/turb...rduino-shield/
https://www.arduinolibraries.info/libraries/dabduino
Если в двух словах:
- цифровой приёмник диапазонов FM (87.5 - 108MHz) и DAB/DAB+: BAND III (174 - 240 MHz), CHINA BAND, L-BAND (1.452 - 1.492 GHz)
- аналоговый (RCA stereo) и цифровой (TOSLINK) выход звука
- рекомендуется плата контроллера на камне STM32 (Nucleo) https://github.com/rogerclarkmelbourne/Arduino_STM32
Добрый вечер.
Помогите пожалуйста! Хочу повторить конструкцию ксв и измерителя мощности на Arduino,подскажите какие платы, блоки и т.д необходимо купить. Буду очень благодарен за ссылки на Али...Сильно не пинайте, это будет мой первый опыт с Arduino.
Здравствуйте,
Нужна ваша помощ.Сделал радио на Arduino и RDA5807.Всё работает.Можно ходить по заранее запрограмированным частотам
при помощи валкодера.Но хочется , чтобы частота последней станции заносилась в память 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,10 410,10450,10490,1054 0,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;
int i_smax=23;
unsigned int freq;
unsigned char a,b;
RDA5807M radio;
void setup() {
Serial.begin(57600);
Wire.begin();
a = EEPROM.read(5); // Старший байт читаем в переменную a
b = EEPROM.read(6); // Младший байт читаем в переменную b
// Serial.println(a);
// Serial.println(b);
int freq = word(a, b); // Объединяем a и b в переменную int freq
// Serial.println(freq) ;
pinMode(pin_A, INPUT);
pinMode(pin_B, INPUT);
radio.init();
radio.setBandFrequen cy(RADIO_BAND_FM,fre q);
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_si dx=0;}
radio.setFrequency(p reset[i_sidx]);
delay(10);
}
else
{
i_sidx--;
if (i_sidx<0){i_sidx=i_ smax;}
radio.setFrequency(p reset[i_sidx]);
delay(10);
}
byte hi = highByte(preset[i_sidx]);
byte low = lowByte(preset[i_sidx]);
EEPROM.update(5, hi);
EEPROM.update(6, low);
}
encoder_A_prev = encoder_A;
a = EEPROM.read(5); // Старший байт читаем в переменную a
b = EEPROM.read(6); // Младший байт читаем в переменную b
Serial.println(a);
Serial.println(b);
int freq = word(a, b); // Объединяем a и b в переменную int freq
Serial.println(freq) ;
delay(5);
}
Не тот скетч отправил,извините.
Вот этот надо доработать,чтоб работал EEPROM.
#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,10 410,10450,10490,1054 0,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.setBandFrequen cy(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_si dx=0;}
radio.setFrequency(p reset[i_sidx]);
delay(100);
}
else
{
i_sidx--;
if (i_sidx<0){i_sidx=i_ smax;}
radio.setFrequency(p reset[i_sidx]);
delay(100);
}
}
encoder_A_prev = encoder_A;
Запустите программу Ардуино IDE. зайдите в меню File - Examples - EEPROM - дальше выбираете EEPROM Write или Read. Там все понятно. Но, есть одна проблема. В EEPROM Надо писать только когда выключаете девайс, иначе она (EEPROM) у Вас быстро умрет. Поэтому в схему надо ввести или кнопку, нажав которую, нужное будет записано в EEPROM, или автомат, реагирующий на падение напряжения питания. Для этого контроллер отделяется от питания диодом и запитывается от небольшого электролитического конденсатора. А на аналоговый вход Ардуино (ADC) подается питание от БП. Когда БП выключается, напряжение на входе ADC падает это является признаком того, что надо писать в EEPROM. В это время контроллер питается от конденсатора, напряжение на котором остается, так как он отключен от БП.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)