Сообщение от
RD9D
напилил
ну пока так
смотрите
Код:
// Антенный переключатель 1х8
//Порты для выходов переключаемых антенн
int ant[] = {12, 11, 10, 9, 8, 7, 6, 5};
//Порты для кнопок
// A0 - это 14, А1 - 15 итд
// первое число єто номер пина PTT
int bt[] = {2, 14, 15, 16, 17, 18, 19, 20, 21};
int PTT = 1;
int NumButton[] = {0, 0}; //Номер нажатой кнопки. При включении всегда будет устанавливаться антенна на порту 12 и на прием и на передачу
boolean ButtonPressed = false; // Флаг нажатой кнопки
boolean RXFlag = true; // Флаг перехода на прием
void setup () {
// порты на вход
for (int i=0; i <= 8; i++)
{
pinMode (bt[i],INPUT);
}
// порты на выход
for (int i=0; i <= 7; i++)
{
pinMode (ant[i],OUTPUT);
}
}
void ReadButton() //Определяем номер нажатой кнопки
{
PTT = digitalRead (bt[0]); // чтение состояние ПТТ
for (int i=1; i <= 8; i++)
{
if (digitalRead (bt[i]) == HIGH)
{
ButtonPressed = true;
NumButton[PTT]= i-1;
}
}
if (PTT)
{
RXFlag = true;
}
}
void SetAntenna() // включение нужной антенны
{
if (RXFlag)
{
if (!PTT)
{
RXFlag = false;
ButtonPressed = true;
}
}
if (ButtonPressed)
{
for (int i=0; i <= 7; i++)
{
digitalWrite (ant[i], LOW);
}
digitalWrite (ant[NumButton[PTT]], HIGH);
ButtonPressed = false;
}
}
void loop ()
{
ReadButton();
SetAntenna();
}
Добавлено через 6 минут(ы):
и да, забыл сказать, что А6 и А7 как цифровые входы работать не будут
перевесьте эти две кнопки на другие ноги