Доброго всем времени суток. Такое дело: при использовании библиотек TVOut И IRremote на экране ничего не отображается и приемник ИК не работает. т.е. Совсем ничего не функционирует. По отделности же - всё работает. Я так понимаю конфликтуют таймеры в библиотеках. Может кто сталкивался с подобным, подскажите как решить проблему.
проблема с Nov 2, 2013 в репозитарии разработчика числится открытой. https://code.google.com/p/arduino-tvout/issues/detail?id=75 особого интереса к ней нет.
Похоже дело не в твоут и ирремот, при подключении этих двух библиотек - все работает. при добавлении библиотеки wire.h все компилится, но ничего не работает. При компиляции нет никаких ошибок. wire.h для работы с RTC
Wire - для работы с I2C. Это не только часы. RTC какие? сам вчера бодался 2 часа, пока нашел правильную библиотеку для DS3231. Вроде бы работает, но через некоторое время опрос с часами встает. Посмотрел библиотеку, а там обращение по адресу на I2C вообще не понятно как реализовано. Зато как все отдокументировано. Нашел тестовую библиотеку - из документации только примеры, но работает.
RTC - DS1307 AT24C32 работают вроде норм, время и дата выводятся на Китайский 3.2" мониторчик. но беда с IRRemote, как только подкидываю эту библиотеку, компилится норм, но ничего не работает. Всё таки Wire тут не причём. ТВоут и ирремот не хотят вместе работать.. блин... куда ковырять не пойму.
Попробуй скачать https://github.com/shirriff/Arduino-IRremote/archive/master.zip Заархивировать дирректорий C:\Program Files\Arduino\libraries\RobotIRremote или C:\Program Files (x86)\Arduino\libraries\RobotIRremote Удалить его содержимое Скопировать туда содержимое файла-архива Аrduino-IRremote-master. В пакете установки Arduino идет старая библиотека.
Ок, спасибо. завтра попробую. Только вот либы "C:\Program Files (x86)\Arduino\libraries\RobotIRremote" у меня такой нет, наверное потому что у меня IDE 1,05 Завтра обновлю.
Нашел исходник для работы с ИК приемником: Код (Text): void loop() { if (digitalRead(9)==0) //Если сигнал есть.. { starttime=micros(); while (digitalRead(9)==0); //..ждем пока он не прекратися. endtime=micros(); time=endtime-starttime; // Высчитываем время. if (time>1000) //если это не шум, а скорее стартовый бит, начинаем слушать. { while (n<Intervals) //В цикле слушаем бит за битом. { if (digitalRead(9)==0) //Если сигнал есть (1).. { starttime=micros(); while (digitalRead(9)==0); endtime=micros(); time=endtime-starttime; // ...высчитываем его время. if (digitalRead(10)==1) //Если кнопка нажата.. arrayfix[n]=time/100; //..записываем в массив "опорный код" //в виде промежутков времени наличия сигнала. array[n]=time/100; // Также записываем в массив текущий код. n++; } if (digitalRead(9)==1) //Если сигнала нет (0).. { starttime=micros(); while (digitalRead(9)==1) //пока ждем появления сигнала проверим, не остановка ли это передачи... { endtime=micros(); time=endtime-starttime; if (time>10000) // ...ага, отсановка. Тогда заполняем //остаток масива 0-ми, и выходим из цикла. { while (n<Intervals) { if (digitalRead(10)==1) arrayfix[n]=0; array[n]=0 ; n++; } goto out; } } endtime=micros(); time=endtime-starttime; if (digitalRead(10)==1) //EEPROM.write(n, time); arrayfix[n]=-time/100; //для отсутствия сигнала запишим время с (-). //Делим на 100 для того, чтобы можно было запихнуть данные в 1 байт, а не использовать растачительно int. array[n]=-time/100; n++; } } out: // Если остановка, то выходим сюда. if (digitalRead(10)==1)//Если кнопка нажата, записываем все в EEPROM { for (byte x=0; x<Intervals; x++) { EEPROM.write(x, arrayfix[x]); } } /*for (byte x=0; x<Intervals; x++) // Этот цикл необязателен. Я его закоментил. //Он наглядно выводит то, что записано в опорном коде, и что передал нам ДУ. Это полезно для отладки //или поиска ошибок. { Serial.print(x); Serial.print(" "); Serial.print(int(arrayfix[x])); Serial.print(" "); Serial.println(int(array[x])); }*/ n=0; for (byte x=0; x<Intervals; x++) //В этом цикле мы ищем отличия в преданном коде и опорном. { if (abs(array[x]-arrayfix[x])>5 && array[x]!=0 && arrayfix[x]!=0) // Здесь мы отслеживаем, // где есть отличия на логическом уровне. //Если отличие больше 500 мкс, то это однозначно разные логичесике уровни. { distinction++; code=code+(x+1)*distinction; //генерируем код } } Serial.println("========Result=========="); // Выводим, что имеем на выходе Serial.print("Otlichiya "); Serial.println(distinction); Serial.print("Code "); Serial.println(code); distinction=0; code=0; } } } без тваут всё норм работает. С ТВаут опять не хочет, но если закоментить строки где есть запись типа "array[n]", ТВаут нормально работает, с arrayfix проблем таких нет, изображение выводится на экран. но естественно ИК не работает... Может можно как то эти строки обойти?