Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

+380505304388
2020-04-20 13:10:09

ard125 - вы ВОЛШЕБНИК И ДОБРЫЙ ЧЕЛОВЕК !!!

+380505304388
2020-04-20 13:04:16

спасибо,спасибо,спасибо!
с утра напрягся, почитал,вставил,заменил.
все работает!!!

+380505304388
2020-04-19 21:22:37

спасибо за "плисс.."
ну а напишите где и куда пожалуйста .
а на счет партизан,так они и на окраине леса не худые.
(возрост ,не сильно то и напрягешся)

ard125
2020-04-19 21:16:47

плисс...
написал

+380505304388
2020-04-19 20:55:53

ну напрягся. (
шутка)
будте любезны напишите плисс..

ard125
2020-04-19 20:50:21

Чем дальше в лес, тем толще партизаны? Ну хоть немного сами то уже поднапрягитесь ...

+380505304388
2020-04-19 20:47:27
ard125 пише:

Пробуйте

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:02:27

Пробуйте

int flag=0;
...
setup() {
...
}

...

loop(){
...
if (digitalRead (btauto) == HIGH && flag == 0) {flag=1; setauto = !setauto;}

if (digitalRead (btauto) == LOW && flag==1) {flag=0; }
...
}
+380505304388
2020-04-17 12:53:23
renoshnik пише:
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

Добрый день .
все прекрасно,все работает. Кроме одного: включается прибор в режиме "авто" ,кнопкой переходим в режим "ручной" , а обратно в режим "авто" не получается. помоготе плисс.

+380505304388
2020-04-10 00:44:14

спасибо!   599  73!

Watchdog
2020-04-09 22:42:46
+380505304388 пише:

а что такое :"код просмотрел по диагонали"  ?

Это почти то же, что параллельно! Видимо.  smile CQ, CQ ... 55.

+380505304388
2020-04-09 22:13:03

а что такое :"код просмотрел по диагонали"  ?

renoshnik
2020-04-09 22:10:49
ard125 пише:
renoshnik пише:

Для другой платы (у меня "ПроМини") нужны изменения как в моем варианте.

Не знаю как там будет работать (код просмотрел по диагонали), но для ПроМини и Леонардо тоже компилируется без каких либо изменений меня компилится тоже нормально.

Для "ПроМини" у меня тоже компилируется, только я практически уверен, что работать он не будет без дополнительных правок...

На "Леонардо" должен работать...

+380505304388
2020-04-09 21:47:59

скопировал "Ваш скетч" и все загрузилось. огромное Вам спасибо!!! Теперь смонтирую все и буду пробовать. Спасибо,Господь Вам воздаст! А я как Вас могу отблагодарить ?

renoshnik
2020-04-09 21:47:39

2020_04_09_214530.jpg


вот для "Леонардо" скомпилировалось ...

Підвал форуму