Amateur Radio Station R9AL

      Модуль предназначен для совместной работы с платформами типа Arduino UNO, Leonardo и т.п., имеющими типовое расположение разъемов.

Технические параметры:

Также необходимо отдельно отметить две перемычки на плате:



Принципиальная схема модуля:



Программирование кнопок, светодиодов, звукового излучателя, потенциометра, а также датчиков температуры - затруднений не вызывают и примеры программ уже рассматривались в курсе "Уроки Ардуино".

Затруднение могут вызвать семисегментные индикаторы. Индикаторы подключаются к ардуино через микросхемы 74НС595 - это 8 битный регистр хранения и 8 битный сдвиговый регистр.

Как она работает можно почитать здесь: Восемь светодиодов с 74HC595

Вот пример скетча для управления семисегментными индикаторами:
void setup ()
{
pinMode(4,OUTPUT);        // Устанавливаем вывод как выход синхронизации данных
pinMode(7,OUTPUT);        // Устанавливаем вывод как выход тактирования
pinMode(8,OUTPUT);        // Устанавливаем вывод как выход передачи данных
}

void loop()
{
    digitalWrite(4,LOW);
    shiftOut(8, 7, MSBFIRST, B10110000);
    shiftOut(8, 7, MSBFIRST, B00001000 );
    digitalWrite(4, HIGH);

    digitalWrite(4,LOW);
    shiftOut(8, 7, MSBFIRST, B10100100);
    shiftOut(8, 7, MSBFIRST, B00000100 );
    digitalWrite(4, HIGH);

    digitalWrite(4,LOW);
    shiftOut(8, 7, MSBFIRST, B11000000);
    shiftOut(8, 7, MSBFIRST, B00000010 );
    digitalWrite(4, HIGH);

    digitalWrite(4,LOW);
    shiftOut(8, 7, MSBFIRST, B10100100);
    shiftOut(8, 7, MSBFIRST, B00000001 );
    digitalWrite(4, HIGH);
}
Это простая программа, которая выводит на дисплей "2023".



Еще один пример, более сложный и с использованием специальных библиотек:
boolean k1, k2, k3; //Переменые кнопок
int displa; //значение дисплея 
//===============================
#include //библиотека для обновления вывода в дисплей 
#include //библиотека для мултьи шилда
//===============================
void setup() {
Timer1.initialize();//Инициализация библиотек
MFS.initialize(&Timer1);//Инициализация библиотек
//-------------------------------
pinMode(A1, INPUT);//открытие кнопки 1
pinMode(A2, INPUT);//открытие кнопки 2
pinMode(A3, INPUT);//открытие кнопки 3
}
//===============================
void loop() {
k1 = digitalRead(A1);//даем переменой значение кнопки 1
k2 = digitalRead(A2);//даем переменой значение кнопки 2
k3 = digitalRead(A3);//даем переменой значение кнопки 3
//===============================
if (k1 == 0) //если кнопка нажата то 
{
 displa++;   //выводим на дисплей +1
 delay(250); //подождем для 1 нажатия = +1
}
//-------------------------------
if (k3 == 0) //если кнопка нажата то 
{
 displa--;   //выводим на дисплей -1
 delay(250); //подождем для 1 нажатия = -1
}
//-------------------------------
if (k2 == 0) //если кнопка нажата то 
{
 delay(400); //посмотрим результат:)
 displa = 0; //обнулим счет 
}
//===============================//для от защиты перещета 
if (displa == 9999) //если значение displa больше символов 4 то
{
 MFS.write("2022"); //выведим  поприколу 2022
 delay(400);        //посмотрим на 2022
 displa = 0;        //обнулим счет 
}
//-------------------------------//для от защиты перещета 
if (displa == -999) //если значение displa больше символов 4 то
{
 MFS.write("2022"); //выведим 2022
 delay(400);        //посмотрим на 2022
 displa = 0;        //обнулим счет 
}
//===============================
MFS.write(displa);  //выводим значение переменой displa
}
Эта программа-счетичик (автор: Задиханов Радмир), прибавляет к значению на дисплее 1, если нажать правую кнопку, или отнимает, если нажать левую. Если нажать на среднюю - счетчик будет обнулен.

Используемые библиотеки:

Тема форума: https://forum.msevm.ru/index.php?topic=9





Copyright © R9AL 2023 Все права защищены
Рейтинг@Mail.ru Яндекс цитирования