Ви не увійшли.
скопировал "Ваш скетч" и все загрузилось. огромное Вам спасибо!!! Теперь смонтирую все и буду пробовать. Спасибо,Господь Вам воздаст! А я как Вас могу отблагодарить ?
Неактивний
renoshnik пише:Для другой платы (у меня "ПроМини") нужны изменения как в моем варианте.
Не знаю как там будет работать (код просмотрел по диагонали), но для ПроМини и Леонардо тоже компилируется без каких либо изменений меня компилится тоже нормально.
Для "ПроМини" у меня тоже компилируется, только я практически уверен, что работать он не будет без дополнительных правок...
На "Леонардо" должен работать...
Неактивний
а что такое :"код просмотрел по диагонали" ?
Неактивний
а что такое :"код просмотрел по диагонали" ?
Это почти то же, что параллельно! Видимо. CQ, CQ ... 55.
спасибо! 599 73!
Неактивний
ard125 пише:не знаю что вы там делали, но у меня нормально компилируется после замены на <=
// Антенный переключатель 1х8 v.1.01 // © Игорь Уватенков (R9JD) // Скетч написан под Arduino Pro Micro // Возможно использование на других версиий МК с назначением соответствующих портов входа/выхода int ant1 = A3; //Порты выходов переключаемых антенн int ant2 = A2; int ant3 = A1; int ant4 = A0; int ant5 = 15; int ant6 = 14; int ant7 = 16; int ant8 = 10; int dataD = 2; //Порты BAND DATA int dataC = 3; int dataB = 4; int dataA = 5; int btn = 9; //Порт кнопок int btauto = 7; //Порт установки режимов Авто/Ручной int dataIcom = 8; //Порт чтения диапазонного напряжения ICOM int ledauto = 6; //Порт индикации boolean setauto = true; //Режим авто int NumButton = 1; //Номер нажатой кнопки int Trcvr = 1; //Применяемое оборудование (1-Yaesu, 0-Icom) int Band; // диапазон union InBandData { struct { unsigned dt0: 1; unsigned dt1: 1; unsigned dt2: 1; unsigned dt3: 1; } bits ; uint8_t value; }; InBandData BD; // Переменная для хранения состояния кода диапазона void setup () { // Назначаем порты на вход pinMode (dataA,INPUT); pinMode (dataB,INPUT); pinMode (dataC,INPUT); pinMode (dataD,INPUT); pinMode (btauto,INPUT); // Назначаем порты на выход pinMode (ant1,OUTPUT); pinMode (ant2,OUTPUT); pinMode (ant3,OUTPUT); pinMode (ant4,OUTPUT); pinMode (ant5,OUTPUT); pinMode (ant6,OUTPUT); pinMode (ant7,OUTPUT); pinMode (ant8,OUTPUT); pinMode (ledauto,OUTPUT); } void SetButton () //Определяем номер нажатой кнопки { if (analogRead (btn) >= 900 && analogRead (btn) <= 910) {NumButton = 1;} if (analogRead (btn) >= 877 && analogRead (btn) <= 887) {NumButton = 2;} if (analogRead (btn) >= 853 && analogRead (btn) <= 863) {NumButton = 3;} if (analogRead (btn) >= 816 && analogRead (btn) <= 826) {NumButton = 4;} if (analogRead (btn) >= 761 && analogRead (btn) <= 771) {NumButton = 5;} if (analogRead (btn) >= 670 && analogRead (btn) <= 680) {NumButton = 6;} if (analogRead (btn) >= 490 && analogRead (btn) <= 500) {NumButton = 7;} if (analogRead (btn) <= 20) {NumButton = 8;} } void SetAntenna (int val) { switch (val) { //Выбираем порты которые нужно установить в зависимости от нажатой кнопки case 1: {digitalWrite (ant1, HIGH); //Устанавливаем «1» выход антенны 1, остальные сбрасываем в «0» digitalWrite (ant2, LOW); digitalWrite (ant3, LOW); digitalWrite (ant4, LOW); digitalWrite (ant5, LOW); digitalWrite (ant6, LOW); digitalWrite (ant7, LOW); digitalWrite (ant8, LOW); break; } case 2: {digitalWrite (ant2, HIGH); //Устанавливаем «1» выход антенны 2, остальные сбрасываем в «0» digitalWrite (ant1, LOW); digitalWrite (ant3, LOW); digitalWrite (ant4, LOW); digitalWrite (ant5, LOW); digitalWrite (ant6, LOW); digitalWrite (ant7, LOW); digitalWrite (ant8, LOW); break; } case 3: {digitalWrite (ant3, HIGH); digitalWrite (ant2, LOW); digitalWrite (ant1, LOW); digitalWrite (ant4, LOW); digitalWrite (ant5, LOW); digitalWrite (ant6, LOW); digitalWrite (ant7, LOW); digitalWrite (ant8, LOW); break; } case 4: {digitalWrite (ant4, HIGH); digitalWrite (ant2, LOW); digitalWrite (ant3, LOW); digitalWrite (ant1, LOW); digitalWrite (ant5, LOW); digitalWrite (ant6, LOW); digitalWrite (ant7, LOW); digitalWrite (ant8, LOW); break; } case 5: {digitalWrite (ant5, HIGH); digitalWrite (ant2, LOW); digitalWrite (ant3, LOW); digitalWrite (ant4, LOW); digitalWrite (ant1, LOW); digitalWrite (ant6, LOW); digitalWrite (ant7, LOW); digitalWrite (ant8, LOW); break; } case 6: {digitalWrite (ant6, HIGH); digitalWrite (ant2, LOW); digitalWrite (ant3, LOW); digitalWrite (ant4, LOW); digitalWrite (ant5, LOW); digitalWrite (ant1, LOW); digitalWrite (ant7, LOW); digitalWrite (ant8, LOW); break; } case 7: {digitalWrite (ant7, HIGH); digitalWrite (ant2, LOW); digitalWrite (ant3, LOW); digitalWrite (ant4, LOW); digitalWrite (ant5, LOW); digitalWrite (ant6, LOW); digitalWrite (ant1, LOW); digitalWrite (ant8, LOW); break; } case 8: {digitalWrite (ant8, HIGH); digitalWrite (ant2, LOW); digitalWrite (ant3, LOW); digitalWrite (ant4, LOW); digitalWrite (ant5, LOW); digitalWrite (ant6, LOW); digitalWrite (ant7, LOW); digitalWrite (ant1, LOW); break; } } } uint8_t BinBandData () //Считываем двоичный код Band Data Yaesu { BD.value = 0; if (digitalRead (dataA) == HIGH) {BD.bits.dt0=1;} else {BD.bits.dt0=0;}; if (digitalRead (dataB) == HIGH) {BD.bits.dt1=1;} else {BD.bits.dt1=0;}; if (digitalRead (dataC) == HIGH) {BD.bits.dt2=1;} else {BD.bits.dt2=0;}; if (digitalRead (dataD) == HIGH) {BD.bits.dt3=1;} else {BD.bits.dt3=0;}; switch (BD.value){ case 1: Band = 160; break; case 2: Band = 80; break; case 3: Band = 40; break; case 4: Band = 30; break; case 5: Band = 20; break; case 6: Band = 17; break; case 7: Band = 15; break; case 8: Band = 12; break; case 9: Band = 10; break; case 10: Band = 6; break; } } void BandIcom () //Считываем уровень диапазонного напряжения Icom { if (analogRead (dataIcom) >= 910 && analogRead (dataIcom) <= 1023) {Band = 160;} if (analogRead (dataIcom) >= 783 && analogRead (dataIcom) <= 837) {Band = 80;} if (analogRead (dataIcom) >= 635 && analogRead (dataIcom) <= 711) {Band = 40;} if (analogRead (dataIcom) >= 511 && analogRead (dataIcom) <= 574) {Band = 20;} if (analogRead (dataIcom) >= 369 && analogRead (dataIcom) <= 437) {Band = 15;} if (analogRead (dataIcom) >= 228 && analogRead (dataIcom) <= 294) {Band = 10;} if (analogRead (dataIcom) >= 0 && analogRead (dataIcom) <= 127) {Band = 30;} } void loop () { if (digitalRead (btauto) == HIGH && setauto == false) {setauto = true;} if (digitalRead (btauto) == HIGH && setauto == true) {setauto = false;} if (setauto == false) //Если ручной режим { digitalWrite (ledauto, LOW); //Тушим светодиод режима Авто SetButton (); //Получаем номер кнопки } else //Если авторежим включаем каналы { digitalWrite (ledauto, HIGH); //Включаем светодиод режима Авто if (Trcvr == 1){BinBandData ();} //Декодируем диапазон else{BandIcom ();} //Ниже, в блоке условий, нужно указать какая антенна будет включена в авторежиме, //в зависимости от декодированного диапазона присвоить, NumButton номер нажатой кнопки. //По номеру кнопки программа включит нужный канал, //номер кнопки соответствует номеру канала (антенны) if (Band == 160) {NumButton = 1;} //КВ диапазоны if (Band == 80) {NumButton = 2;} if (Band == 40) {NumButton = 3;} if (Band == 20) {NumButton = 4;} if (Band == 15) {NumButton = 5;} if (Band == 10) {NumButton = 6;} if (Band == 30) {NumButton = 7;} //WARC диапазоны if (Band == 12) {NumButton = 8;} //if (Band == 17) {NumButton = 7;} //if (Band == 6) {NumButton = 8;} } SetAntenna (NumButton); delay (300); //Мониторим три раза в секунду, можете поставить свое время (в милисекундах) }
Если выбрать плату "микро" тогда это ваш вариант решения.
Для другой платы (у меня "ПроМини") нужны изменения как в моем варианте.
А у ТС плата вообще Arduino Leonardo
Добрый день .
все прекрасно,все работает. Кроме одного: включается прибор в режиме "авто" ,кнопкой переходим в режим "ручной" , а обратно в режим "авто" не получается. помоготе плисс.
Неактивний
Пробуйте
int flag=0;
...
setup() {
...
}
...
loop(){
...
if (digitalRead (btauto) == HIGH && flag == 0) {flag=1; setauto = !setauto;}
if (digitalRead (btauto) == LOW && flag==1) {flag=0; }
...
}
Остання редакція ard125 (2020-04-17 15:03:08)
Неактивний
Пробуйте
int flag=0; ... setup() { ... } ... loop(){ ... if (digitalRead (btauto) == HIGH && flag == 0) {flag=1; setauto = !setauto;} if (digitalRead (btauto) == LOW && flag==1) {flag=0; } ... }
добрый день,с праздником!
скажите :куда именно вставить или вместо чего вставить?
с ув.Иван.
Неактивний
ну напрягся. (
шутка)
будте любезны напишите плисс..
Неактивний
спасибо за "плисс.."
ну а напишите где и куда пожалуйста .
а на счет партизан,так они и на окраине леса не худые.
(возрост ,не сильно то и напрягешся)
Неактивний
спасибо,спасибо,спасибо!
с утра напрягся, почитал,вставил,заменил.
все работает!!!
Неактивний
ard125 - вы ВОЛШЕБНИК И ДОБРЫЙ ЧЕЛОВЕК !!!
Неактивний