Всем привет! Никак не могу разобраться как мне послать сигнал с помощью диода или ик-передатчика Troyka на Iskra.js. http://amperka.ru/product/troyka-ir-transmitter-5mm-led-module В разных статьях, вроде этой: http://www.espruino.com/Pico+Infrared отдельно задают для катода и анода. Не понимаю как это сделать. Код можно либо считывать с пульта, либо задавать самому в бинарном или HEX Кто-нибудь умеет так делать или знает какой-нибудь проверенный способ?
Посмотрите тут http://www.espruino.com/Pico Infrared Может найдете что-то полезное для себя UPDATE: совсем я плох стал..
@sys, спасибо, так я эту ссылку и привожу в вопросе =) Там в целом поясняется процедура. Но необходимо подать один импульс на катод, другой на анод. В том примере лампочка использует 2 пина, подключена напрямую к плате. Но я не могу понять как это сделать через troyka shield и стандартный модуль. Там же только 1 пин. В описании ик-передатчика написано, что он легко работает с iskra js, а как не ясно.
Тот же вопрос возник ) Как уже материал Pico Infrared не исковеркал Принимать временные промежутки получается Но вот передать их на тройка ИК не получается Пробовал и как с ЛЕД моргать Такое чувство он мерт больше чем жив
Там применяется функция digitalPulse(), не так ли? Полагаю, она просто не выполняет свою работу - постоянно чем-то прерывается. Смотрите мой пост. Там есть осциллограф. И там не такие жесткие требования как в ИК-передаче, но не удалось получить устойчивую работу. В результате исследования выяснилось, что работа этой функции в течение короткого времени прерывается. То есть получить 1-2 импульса подряд - можно. Большой "выстрел" - нет. Я тоже начинал эксперименты с ИК и тоже убедился, что все принимается и ничего не передается. Но тогда причины не понял. Полагаю, надо писать разработчикам, возможно есть какой-то способ обеспечить непрерывание работы. Без этого передать сигнал, ИМХО, не удастся.
Да речь про digitalPulse других ибо оберток разработчики не предоставили ) вообще 3 дня провозился все бестолку ))) взял модуль поиграться а он не рабочий ) Особенно спустя 3 дня фраза - он легко работает с iskra js, в описание убивает )))
Переделал пример с pico infrared. Так попробуете? Тут конечно грязный хак, мы используем прерывания неиспользуемой ножки. Подключаем ИК-приёмник к P3, а передатчик к P9 Код (Javascript): // Because we're not using the module, we have to manually pull up the data pin pinMode(P3,"input_pullup"); pinMode(P8, "output"); // этот пин нужен только для работы digitalPulse и прерываний. К нему ничего не подуключаем:) // Keep somewhere to put the signal times var times = []; /* The ID of the watch we're using to record IR. We want to turn it off while we transmit in case we record outselves! */ var currentWatch; function startWatching() { currentWatch = setWatch(function(e) { // work out how long the pulse was, in milliseconds var pulseLen = 1000 * (e.time - e.lastTime); // then save it, if it was less than 1 second if (pulseLen < 1000) times.push(pulseLen); else times = []; }, P3, {repeat:true}); } startWatching(); function stopWatching() { clearWatch(currentWatch); } setWatch(function(e) { print(times); // stop recording stopWatching(); // Light up LED1 digitalWrite(LED1,1); // Send the pulses digitalPulse(P8, 1, times); // Wait until pulsing is finished digitalPulse(P8, 1, 0); // Turn LED1 off digitalWrite(LED1,0); // start recording again startWatching(); }, BTN1, {repeat:true, edge:"rising", debounce:50}); setWatch(function(e) { analogWrite(P9,0.9,{freq:38000}); // print('r'); }, P8, {repeat:true, edge:"rising"}); setWatch(function(e) { digitalWrite(P9, 0); // print('f'); }, P8, {repeat:true, edge:"falling"});
Если кому вдруг интересно, то проблему свою на Iskra JS временно решил: 1) Код использовал прям с http://www.espruino.com/Pico Infrared Код (Javascript): setWatch(function(e) { // stopWatching(); // Light up LED1 digitalWrite(LED1,1); // Start the 38kHz square wave analogWrite(P8, 0.9, {freq:38000}); // Send the pulses digitalPulse(P9, 1, times); // Wait until pulsing is finished digitalPulse(P9, 1, 0); // Turn LED1 off digitalWrite(LED1,0); // start recording again // startWatching(); }, BTN, {repeat:true, edge:"rising", debounce:50}); 2) Плюнул на ИК лед тройки и вытащил ИК лед с пульта 3) Вставил одну ножку в пин P8, а вторую в P9 (катод там или анод разберетесь думаю) 4) Чудо случилось