Вс янв 15, 2023 23:41:50
Вт янв 17, 2023 22:02:38
Ср янв 18, 2023 16:38:15
Ср янв 18, 2023 17:18:40
Ср янв 18, 2023 17:54:12
Ср янв 18, 2023 19:39:58
Ср янв 18, 2023 21:10:50
Ср янв 18, 2023 21:18:33
Ср янв 18, 2023 21:23:16
Ср янв 18, 2023 22:27:15
Чт янв 19, 2023 07:35:25
#include <Wire.h>
#define Pin_DOWN 12//4 // левая кнопка
#define Pin_UP 13//2 // правая кнопка
#define Pin_SET 11//3 // центральная кнопка
const byte channel=5;
byte Byte0;
byte val = 0;
byte volume = 4;
int freq=1011;
void setup()
{
pinMode(Pin_DOWN,INPUT_PULLUP);
pinMode(Pin_UP,INPUT_PULLUP);
pinMode(Pin_SET,INPUT_PULLUP);
Wire.begin(); // подключение к шине i2c
delay(500);
Inicial();
}
void loop()
{
boolean SET=digitalRead(Pin_SET);
boolean UP=digitalRead(Pin_UP);
boolean DOWN=digitalRead(Pin_DOWN);
if(DOWN==LOW)
{
volume=volume+1; set_vol();delay(500);
//freq=freq+1; set_freq();delay(500);//работает норм
}
if(SET==LOW)
{
volume=volume-1; set_vol();delay(500);
//freq=freq-1;set_freq();delay(500); //работает норм
}
if(UP==LOW)
{
stby();//выключаем радио ,потребление почти 0
delay(1500);//ждем 1,5 сек и вкл
set_freq(); // вкл радио
}
}
void Inicial()
{
Wire.beginTransmission(0x10); // передача для устройства
//02 // адрес устройства указывается в документации (datasheet)
Wire.write(0B11010000); // отправка байта
Wire.write(0B10000001);
//03
Byte0 = freq - 870;
Wire.write(Byte0);
Byte0=0B00010011;
Wire.write(Byte0);
//04
Wire.write(0B00010000);
Wire.write(0B00000000);
//05
Wire.write(0B10001000);
Byte0=0B10000000 + volume;
Wire.write(Byte0);
Wire.endTransmission(); // передача данных
}
void set_freq()//установка частоты
{
if (freq > 1080) freq = 870;
if (freq < 880) freq = 1080;
Wire.beginTransmission(0x10); // передача для устройства
//02 // адрес устройства указывается в документации (datasheet)
Wire.write(0B11010000); // отправка байта
Wire.write(0B10000001);
//03
Byte0 = freq - 870;
Wire.write(Byte0);//частота,старшие 8 бит
Byte0=0B00010011;//7,6-мл биты частоты=всегда 00 так как шаг=25, 4-точная установка,3,2-диапазон=87-108,1,0-шаг 25 кгц
Wire.write(Byte0);
Wire.endTransmission(); // передача данных
}
void set_vol()//установка громкости
{
if (volume > 200) volume = 0;
if (volume >15) volume = 15;
Wire.beginTransmission(0x11); // передача для устройства
//02 // адрес устройства указывается в документации (datasheet)
Wire.write(0B00000101); // отправка байта val
//05
Wire.write(0B10001000);
Byte0=0B10000000 + volume;
Wire.write(Byte0);
Wire.endTransmission(); // передача данных
}
void stby()
{
Wire.beginTransmission(0x10); // выкл радио
//02 // адрес устройства указывается в документации (datasheet)
Wire.write(0B11010000); // отправка байта val
Wire.write(0B10000000);
Wire.endTransmission(); // передача данных
}