Показать сообщение отдельно
Старый 20.04.2016, 11:00   #55
Gorynch
Старший Пользователь
 
Аватар для Gorynch
 
Регистрация: 22.04.2009
Возраст: 42
Город: Москва
Регион: 77, 97, 99, 177
Машина: 2005\Nissan\X-Trail
Сообщений: 775
Gorynch has a reputation beyond reputeGorynch has a reputation beyond reputeGorynch has a reputation beyond reputeGorynch has a reputation beyond reputeGorynch has a reputation beyond reputeGorynch has a reputation beyond reputeGorynch has a reputation beyond reputeGorynch has a reputation beyond repute
По умолчанию

На mega32 делал.
Тут основы протокола.

4 pin круглого разъёма от радио можно посадить на землю сразу - это режим Mute (0 - звук есть, 1 - заука нет)

Транзистор включения радио управляется контроллером. По ссылке ввыше есть схема. Вмсесто DTR подключаешь к ножке контоллера: 1 - включено, 0 - выключено.

Для черного радио (Directed) - нужна дополнительная посылка для включения заука (помимо 4-го pin'а).

После сигнала включения нужно подождать 3 секунды. После этого можно отправлять данные. В простеёшем случае можно даже не считывать приходящие ответы.

Отправка конкретной частоты в радио. Если какой-то байт, кроме первого, в отправке равен 0xA4, то он заменяется на 0x1B48

PHP код:
const unsigned char muteOff_blackRadio[ ] = {0xA4,0x08,0x03,0x04,0x00,0x00,0x4B,0x00,0x00,0x00,0xFE};
const 
unsigned char freq1[ ] = {0xA40x100x020x010x000x000x010x000x000x00}; // before current freq
const unsigned char freq2[ ] = {0x000x000x000x000x000x00};    // after current freq
const unsigned char getSignal[ ] = {0xA40x050x010x010x010x000xAC};

const 
uint8_t radio_CS 0xB8;

void HDRadio_sendFreq(uint16_t curFreq) {
    
uint8_t current_CS;    //current CheckSum
    
current_CS radio_CS GetLowByte(curFreq) + GetHighByte(curFreq);
    for (
uint8_t i 0<= 9i++) {
        
Serial_SendBytefreq1[i] );
    }

    if (
GetLowByte(curFreq) == 0xA4) {
        
Serial_SendByte(0x1B);
        
Serial_SendByte(0x48);
    } else {
        
Serial_SendByte(GetLowByte(curFreq));
    }

    if (
GetHighByte(curFreq) == 0xA4) {
        
Serial_SendByte(0x1B);
        
Serial_SendByte(0x48);
    } else {
        
Serial_SendByte(GetHighByte(curFreq));
    }

    for (
uint8_t i 0<= 5i++) {
        
Serial_SendBytefreq2[i] );
    }

    if (
GetLowByte(current_CS) == 0xA4) {
        
Serial_SendByte(0x1B);
        
Serial_SendByte(0x48);
    } else {
        
Serial_SendByte(GetLowByte(current_CS));
    }

__________________
В детстве, чтобы маленький Змей Горыныч был как все, мама заплетала его в косичку
Gorynch вне форума   Ответить с цитированием