Управление микросхемой с arduino
- Войдите на сайт для отправки комментариев
Вс, 23/11/2014 - 16:06
Всем здарвствуйте! Vучался несколько месяцев, но так и не понял как заставить работать видео мультиплексор, управляя им с arduino uno. Мультиплесор ad8184AR (даташит).
Микросхема имеет 4 видеовхода и 1 видеовыход. Переключение источников происхотит с помощью трех ног (A0, A1 и ENABLE).
Подключаю всё по такой схеме:
Код программы:
#include <Bounce.h> // подключаем библиотеку для борьбы с треском кнопок
#include <EEPROM.h> //подключаем заголовочный файл библиотеки EEPROM
uint8_t LastChannel; //Здесь будем хранить данные о последнем канале
// Bounce Key0 = Bounce(3, 40); //создаем экземпляр класса Bounce для кнопки сброса
Bounce Key1 = Bounce(2, 40); //создаем экземпляр класса Bounce для 3 вывода
Bounce Key2 = Bounce(3, 40); //создаем экземпляр класса Bounce для 4 вывода
Bounce Key3 = Bounce(4, 40); //создаем экземпляр класса Bounce для 5 вывода
Bounce Key4 = Bounce(5, 40); //создаем экземпляр класса Bounce для 6 вывода
// Комбинации байтов для включения нужных каналов
byte ChannelSwitch[5][3] = {
{1,0,0}, // Отключено
{0,0,0}, // 1 канал
{0,0,1}, // 2 канал
{0,1,0}, // 3 канал
{0,1,1}, // 4 канал
};
void setup()
{
Serial.begin(9600);
if (debug==0) Serial.println("Debug OFF");
pinMode(6, OUTPUT); // Enable Pin
pinMode(7, OUTPUT); // A1 Pin
pinMode(8, OUTPUT); // A0 Pin
// Настройка входов для кнопок
for (byte PinCount = 2; PinCount < 6; ++PinCount) {
pinMode(PinCount, INPUT); //переключаем вывод в режим входа
digitalWrite(PinCount, 1); //включаем на нем подтягивающий резистор
}
LastChannel = EEPROM.read(0);; //Читаем последний канал из EEPROM
ChangeChannel(LastChannel); // При включении выбираем последний канал
}
// Функция включающая нужный канал
void ChangeChannel(byte Channel) {
int Pin = 0;
for (byte PinCount = 0; PinCount < 3; ++PinCount) {
int PinValue = 0;
if (ChannelSwitch[Channel][PinCount]==1) PinValue = 255;
else PinValue = 0;
analogWrite(Pin, PinValue);
++Pin;
}
EEPROM.write(0, Channel); // Запись нового значения в EEPROM
}
void loop() {
if (Key1.update()) {
if (Key1.read()!=0) { //если кнопка нажата
ChangeChannel(1);
Key1.rebounce(1000);//повторить событие через 500мс
}
}
if (Key2.update()) {
if (Key2.read()!=0) { //если кнопка нажата
ChangeChannel(2);
Key2.rebounce(1000);//повторить событие через 500мс
}
}
if (Key3.update()) {
if (Key3.read()!=0) { //если кнопка нажата
ChangeChannel(3);
Key3.rebounce(1000);//повторить событие через 500мс
}
}
if (Key4.update()) {
if (Key4.read()!=0) { //если кнопка нажата
ChangeChannel(4);
Key4.rebounce(1000);//повторить событие через 500мс
}
}
}
Подскажите пожалуйста как правильно подать на A0, A1 и ENABLE логические единицу или ноль? чтобы схема заработала? Буду очень благодарен!



Начните с простого. Подключите все к цифровым выходам, и напишите просто скетч, устанавливающий нужный Вам канал. Вот как с этим разберетесь так и усложняйте до кнопок