На geektimes тов. @nailxx написал следующее : Будут ли тутариалы на тему? Пожалейте крыс, сделайте полезное и безопасное для животных дело! Ставил. Такая ерунда: системный таймер тикает раза в три медленнее. В результате какой-нибудь код, что требует общения по 1wire не работает - скорости не совпадают. Да даже простой blink мигает очень неспеша. Не проверите ли на какой-нибудь своей плате Nucleo F401?
Да, у нас очень много, чего нужно сказать миру. Надкусываем со всех сторон. Надеюсь, челюсть не сведёт. На STM32F4Discovery всё точно хорошо работает. На Nucleo сами не пробовали, верим тому, что видим на espruino.com и в исходниках. Попробуем на этой неделе.
Ну да. Именно там и есть [LED1, LED2, LED3, LED4]. Пжжжжжалуйста! Есть у меня в запаснике одна такая... Ваша, кстати. Вот руки, вроде, и дошли. Но...
От кот: Код (Javascript): var cl = console.log; var ctmr; var rotate = function(rt) { if(rt) { var pr = ['+', '/','X', '+','\\','X']; var nw = 0; ctmr = setInterval(function(){ cl(pr[nw]); nw++; if(nw === 6) nw = 0; }, 150); } else { if(ctmr) { clearInterval(ctmr); ctmr = null; } } }; А как var ctmr упрятать внутрь функции rotate()? Чтобы красиво было и памяти меньше кушало при вызове rotate() без true внутри.
как вариант вообще без ctmr... сильно не ругайте... Код (Javascript): var cl = console.log; var pr = ['+', '/','X', '+','\\','X']; var nw = 0; var rt = 0; var rotate = (x)=>{ rt = x; if(rt){ cl(pr[nw]); nw++; if(nw === 6){ nw = 0;} setTimeout(()=>{rotate(rt);},150); }else nw = 0; };
Там задача была спрятать все глобальные переменные в функцию. Функция печатает на lcd экране подобие вращающегося пропеллера. Вызвал функцию с аргументом тру - пропеллер вращается, вызвал без - не вращается. Поскольку это малая часть программы - столько переменных в глобале - не годится Я в коде, что выше привел, спрятал все, кроме самого таймера. Его, видимо, не спрятать. Ваш вариант хорош как отдельностоящий пример, но для кода в 350 строк - не Айс, к сожалению.
Что-то типа такого? Код (Javascript): var ort = { cl : console.log, pr : ['+', '/','X', '+','\\','X'], nw : 0, rt : 0, rotate : (x)=>{ this.rt = x; if(this.rt){ this.cl(this.pr[this.nw]); this.nw++; if(this.nw === 6){ this.nw = 0;} setTimeout(()=>{this.rotate(this.rt);},150); }else this.nw = 0; } }; ort.rotate(x)