Управление микросхемой с 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 логические единицу или ноль? чтобы схема заработала? Буду очень благодарен!
Начните с простого. Подключите все к цифровым выходам, и напишите просто скетч, устанавливающий нужный Вам канал. Вот как с этим разберетесь так и усложняйте до кнопок