Хук для говнокодеров

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Типовой говнокод на этом ресурсе выглядит примерно так:

void func()
{
  digitalWrite(relay1,HIGH);
  delay(1000);
  digitalWrite(relay1,LOW);
  delay(1000);
}

Затем следует вопрос: почему loop() останавливается на 2 сек...

Небольшие изменения этого говнокода превращают его в автомат состояний

#define BEGIN static int $n=0; static unsigned long $d; switch($n){case 0:
#define DELAY(d) $n=__LINE__; $d=Millis(); case __LINE__: if(Millis()-$d<d) return
#define RESUME $n=0
#define END }

void func()
{
  BEGIN;
  digitalWrite(relay1,HIGH);
  DELAY(1000);
  digitalWrite(relay1,LOW);
  DELAY(1000);
  RESUME;
  END;
}

Функция перестала быть блокирующей.

Идея не моя. В Visual Studio не работает, в Кейле работает. Проверять здесь влом. Полагаю найдутся желающие проверить...

Клапауций 555
Offline
Зарегистрирован: 10.03.2018

Andy пишет:

Типовой говнокод на этом ресурсе выглядит примерно так:

void func()
{
  digitalWrite(relay1,HIGH);
  delay(1000);
  digitalWrite(relay1,LOW);
  delay(1000);
}

ты не поверишь - этот код выглядит аналогично и на говноресурсе www.arduino.cc

почему ты не спрашиваешь на первоисточнике, а решил трахать мосх ползателям этого форума?

пусть эти макаронники ответят...

Logik
Offline
Зарегистрирован: 05.08.2014

Andy пишет:

Идея не моя. В Visual Studio не работает, в Кейле работает. Проверять здесь влом. Полагаю найдутся желающие проверить...

И мне влом. Тем более что идея дурная. Стоит в коде наставить ифов и форов, а макросы-делеи в них - вся затея развалится. Никакой польза. Ну а для простейшего примера может и заработает.

Вобще не стоит пытатся обмануть природу. Либо выучищ Си/С++, машинки состояний, и неблокирующие функции, либо будиш метатся между многопоточными библиотеками, РТОС, прерываниями обработчика прерываний и макросами автоматически делающими с дерьма конфету пока не  скажеш что ардуино отстой. Не стоит соблазнять людей на второй путь.

SLKH
Offline
Зарегистрирован: 17.08.2015

Клапауций 555 пишет:

Andy пишет:

Типовой говнокод на этом ресурсе выглядит примерно так:

void func()
{
  digitalWrite(relay1,HIGH);
  delay(1000);
  digitalWrite(relay1,LOW);
  delay(1000);
}

ты не поверишь - этот код выглядит аналогично и на говноресурсе www.arduino.cc

почему ты не спрашиваешь на первоисточнике, а решил трахать мосх ползателям этого форума?

пусть эти макаронники ответят...

Можно, я за них отвечу?

Школьник, которому купили на амперке набор, этот код загрузит и диодом помигает. При этом он поймет каждую строку.

В следующих скетчах он будет осваивать блинк без делэй, опять же с пониманием - если делэй ему мешать начнет.

И только потом начнет опримизировать код, опять же, если появится такая потребность.

 

Если же ему подсунуть на первое знакомство "#define DELAY(d) $n=__LINE__; $d=Millis(); case __LINE__: if(Millis()-$d<d) return" - он заведомо ни хрена не поймет. Результатом буде убеждение, что этот ваш си - херня какая-то (мягко выражаясь).

Так что итальянцы, имхо, правы.

Клапауций 555
Offline
Зарегистрирован: 10.03.2018

SLKH пишет:

Можно, я за них отвечу?

нужно у итальянцев спрашивать, а не у меня - внезапно, они против. О_О

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Что бы найти замену этому говнокоду , надо использовать метод автомата. http://is.ifmo.ru/  Но там автоматы реализуются на схемотехнике или программах подобным им.  А вот хорошо расжеваной литературы понятной всем как строить автоматы с millis() нет. 

ПС: разумеется для знающих постоить автомат на millis() не трудно.

Ответ итальянцев:Уно моменто https://www.youtube.com/watch?v=6tUZV3PHSKQ

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Logic пишет:
Стоит в коде наставить ифов и форов, а макросы-делеи в них - вся затея развалится. Никакой польза. Ну а для простейшего примера может и заработает.
Достаточно обрамить макросы в do{.....}while(0) и уже твоя идея разваливается. Просто ты, как и большинство обитателей этого ресурса, не используешь дефайны сложнее, чем

#define BLABLABLA 1

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Andy пишет:

Хук для говнокодеров

Andy, выстрел мимо цели.

Тру говнокодер, он потому и тру говнокодер, что не нуждается ни в каких хуках. Пусть хуками занимаются высоколобые лохи, а тру говнокодер тиснет где-нибудь говнокод и придёт сюда выносить мозг на тему: "вот я написал код, как сделать, чтобы он корованы грабил?". На любые предложения что-нибудь изучить, будет отвечать цитатой из википедии, что ардуино не для "изучателей", а для "непрофессиональных пользователей", и требовать, что ему "помогли", а иначе: "зачем тогда форум".

Клапауций 555
Offline
Зарегистрирован: 10.03.2018

Andy пишет:

Просто ты, как и большинство обитателей этого ресурса...

я же тебя ткнул мордочкой https://www.arduino.cc/reference/en/language/functions/time/delay/ , что не большинство обитателей этого ресурса, а большинство обиталетей планеты Земля.

хватит отмораживаться - вали на первоисточник и рассказывай, какие они тупни.

ssss
Offline
Зарегистрирован: 01.07.2016

Logik пишет:

Либо выучищ Си/С++, машинки состояний, и неблокирующие функции, либо будиш метатся между многопоточными библиотеками, РТОС, прерываниями обработчика прерываний и макросами автоматически делающими с дерьма конфету пока не  скажеш что ардуино отстой. Не стоит соблазнять людей на второй путь.

Не понял... где первый, а где второй... в результате то - "ардуино отстой"...

Самая лучшая РТОС - развитая система прерываний... действительно развитая...

Машины состояний - понятно...  а как "неблокирующие функции" без прерываний - не представляю...

Клапауций 555
Offline
Зарегистрирован: 10.03.2018

ssss пишет:

Машины состояний - понятно...  а как "неблокирующие функции" без прерываний - не представляю...

Квантовый компьютер

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

ssss пишет:
а как "неблокирующие функции" без прерываний - не представляю...
Ты, чо "коламбия пикчерз"? Не представляет он! Или это был вброс на вентиллятор для плавного перехода на стм, как всегда?

ssss
Offline
Зарегистрирован: 01.07.2016

Ворота пишет:

Не представляет он!

Не представляю... Есть синхронные задачи... есть - асинхронные... Если вы знаете другие - поделитесь...

Ждёмс!

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Ну есть еще некритичные задачи. Можно делать, а можно не делать. 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

qwone пишет:

Ну есть еще некритичные задачи. Можно делать, а можно не делать. 

Например, задача чем-то там поделиться с сс-овцем :)))

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

ssss пишет:

Ждёмс!

А ты не жди, а почитай какую-нибудь умную книжку. Хотя ...

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Разумеется это задачи для украшения программ. Слабая машина или сейчас процессор на 100% занят, то не делать. А если все равно стоит без дела почему бы что-то не включить. Например скринсейвера

ssss
Offline
Зарегистрирован: 01.07.2016

Ворота пишет:

почитай какую-нибудь умную книжку. Хотя ...

Что... даже с книжкой возникли затруднения??? Бла-бла-бла???

И кстати... напомни... Прерывания не юзаются в ардуине из-за ущербности... или они зарезервированы???

Многоядерность мы же не рассматриваем... не???

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

ssss пишет:

Что... даже с книжкой возникли затруднения??? Бла-бла-бла???

И кстати... напомни... Прерывания не юзаются в ардуине из-за ущербности... или они зарезервированы???

Многоядерность мы же не рассматриваем... не???

Можно я напомню. Прерывания в ардуине не юзаются по незнанию! В остальных случаях очень даже юзаются.

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Говорил же, что вброс дерьма.

ssss пишет:

И кстати... напомни... Прерывания не юзаются в ардуине из-за ущербности... или они зарезервированы???

Прерывания не юзаются из-за ущерности юзателей, вроде тебя.

ssss пишет:

Многоядерность мы же не рассматриваем... не???

О! Ты такие слова знаешь! Надо при сулчае у тебя автограф взять.

Logik
Offline
Зарегистрирован: 05.08.2014

Andy пишет:

Logic пишет:
Стоит в коде наставить ифов и форов, а макросы-делеи в них - вся затея развалится. Никакой польза. Ну а для простейшего примера может и заработает.
Достаточно обрамить макросы в do{.....}while(0) 

Писал не приходя в сознание? Ну обрами! Поржем как case обрамленное в do{.....}while(0) скомпилится ;)

Andy пишет:

Просто ты, как и большинство обитателей этого ресурса, не используешь дефайны сложнее, чем

#define BLABLABLA 1

Просто ты, как и большинство обитателей этого ресурса нихрена не думаеш прежде чем чего написать. Если бы думал - то хотяб поискал мой код прежде чем чего напИсать. Например может такое нашел бы, там прям сверху, не самое конечно наворочаное, но  более сложное чем ты осилиш. 

http://arduino.ru/forum/proekty/pokhvalimsya-khudozhestvennoi-samodeyatelnostyu-na-ws2812#comment-247918

Logik
Offline
Зарегистрирован: 05.08.2014

brokly пишет:

ssss пишет:

Что... даже с книжкой возникли затруднения??? Бла-бла-бла???

И кстати... напомни... Прерывания не юзаются в ардуине из-за ущербности... или они зарезервированы???

Многоядерность мы же не рассматриваем... не???

Можно я напомню. Прерывания в ардуине не юзаются по незнанию! В остальных случаях очень даже юзаются.

 

Ну вобще юзаются всегда. Системой. Сириал,  миллис и пр. без прерываний не работают. То. что не всякий в каждом проекте свой обработчик пользует - да, на это есть свои причины. Где ненужно, кто не умеет и т.д. Не трать время, эсэсовец неук на проценте от реализации, про что не начни - он к продажам стм повернет.

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Logic пишет:
Писал не приходя в сознание? Ну обрами! Поржем как case обрамленное в do{.....}while(0) скомпилится ;)

Держи, говнокодер

#define DELAY(d) do{$n=__LINE__; $d=Millis(); case __LINE__: if(Millis()-$d<d) return;}while(0)
 

Logic пишет:
Просто ты, как и большинство обитателей этого ресурса нихрена не думаеш прежде чем чего написать. Если бы думал - то хотяб поискал мой код прежде чем чего напИсать. Например может такое нашел бы, там прям сверху, не самое конечно наворочаное, но  более сложное чем ты осилиш.
Не в моих правилах искать говнокод на этом ресурсе. Но раз уж ты дал ссылку, глянул, чисто поржать. Ассемблерный код и delay(50); Круто. Жги еще.

ssss
Offline
Зарегистрирован: 01.07.2016

Logik пишет:

Ну вобще юзаются всегда. Системой. Сириал,  миллис и пр. без прерываний не работают. То. что не всякий в каждом проекте свой обработчик пользует - да, на это есть свои причины. Где ненужно, кто не умеет и т.д.

Тогда... о чём был типа твой корявый спич??? Что юзая прерывания... народ дуплится... что ардуина нафиг не нужна??? Похвально!!!

Цитата:

к продажам стм повернет.

Почему СТМ??? Посмотри на последние МК Микрочипа... и ПИК... и АВР... Посмотри на последние китайские МК типа 8051... Везде вытесняющие прерывания... а у ПИКа ещё и ядронезависимая периферия с логическими ячейками и пр. ... Вписывается это в идеологию ардуины??? Сомневаюсь...

ssss
Offline
Зарегистрирован: 01.07.2016

Andy пишет:

Ассемблерный код и delay(50); Круто. Жги еще.

)))))))))))))))

Без коментов... )))))))))))))

Logik
Offline
Зарегистрирован: 05.08.2014

Andy пишет:

Ассемблерный код и delay(50); Круто. Жги еще.

То что делей в сетапе, и очень на своем месте, тоже замечать не в твоих правилах. Ну вобщем пристрастие к гомнокодерству у тя и тут прступило ;) 

 

Logik
Offline
Зарегистрирован: 05.08.2014

ssss пишет:

)))))))))))))))

Без коментов... )))))))))))))

Врача этому додику! И быстрей.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

не понял... ардуино и авр это разное ?

Мля... а я не знал.... 

ssss
Offline
Зарегистрирован: 01.07.2016

Logik пишет:

То что делей в сетапе, и очень на своем месте, тоже замечать не в твоих правилах. Ну вобщем пристрастие к гомнокодерству

Это и есть говнокодерство... в натуральном виде... О том что АСМ вставки принято обрамлять в инлайн-функции я уже не говорю... как и о говнопереносимости кода при АСМ вставках... ))))))))))))))))

И по поводу делеев... Если это сихронные функции... то пофигу на чём делей... хоть на циклах... там 50 +- лапоть никакой разницы... но тогда нафиг там АСМ... В иных случаях юзают хардварные решения... но тогда без периферии и прерываний (или ДМА) уже не обойтись... Как бы ты должен это знать... типа...

Logik
Offline
Зарегистрирован: 05.08.2014

Andy пишет:

#define DELAY(d) do{$n=__LINE__; $d=Millis(); case __LINE__: if(Millis()-$d<d) return;}while(0)

Гыы.. Ты синтаксис  вобще сишный видел? Ты выложеный код компилировал? А вобще код компилировал когдато? Любуйся.

#define BEGIN static int $n=0; static unsigned long $d; switch($n){case 0:
#define RESUME $n=0
#define END }
#define DELAY(d) do{$n=__LINE__; $d=Millis(); case __LINE__: if(Millis()-$d<d) return;}while(0)

void func(){
  BEGIN;   
  DELAY(1000);   
  RESUME;   
  END;
}

void setup(){ }

void loop()
{ 
  func();
}

Результат.

ads1115:8: error: stray '$' in program
ads1115:8: error: stray '$' in program
ads1115:8: error: stray '$' in program
ads1115:9: error: stray '$' in program
ads1115:9: error: stray '$' in program
ads1115:9: error: stray '$' in program
ads1115:10: error: stray '$' in program
ads1115.ino: In function 'void func()':
ads1115:9: error: 'Millis' was not declared in this scope
ads1115.ino:8: warning: unused variable 'd'
 
Ты вобще на какими языкам писать собрался. 
Запомни, конь. Millis() это не ардуиновский вызов функции millis(). Больше не пиши програм. У тя руки из жопы.
Logik
Offline
Зарегистрирован: 05.08.2014

ssss пишет:

 О том что АСМ вставки принято обрамлять в инлайн-функции я уже не говорю... 

Не говори! Потому как ты всеравно нихера не знаеш когда нужно инлайн, когда нет а когда нужен __attribute__ ((noinline)), который там какраз прописан. Я ж писал - ты неук. Потому не говори!

ssss пишет:

И по поводу делеев... Если это сихронные функции... то пофигу на чём делей... хоть на циклах... .

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

ssss пишет:

 как и о говнопереносимости кода при АСМ вставках... ))))))))))))))))

А покажи мне реализацию работы с WS8212 или подобными на 328 без ассемблера. 

 

 

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Ну вот, а ломался, влом ему...

держи, эти должен схавать

#define BEGIN static int _n=0; static unsigned long _d; switch(_n){case 0:
#define DELAY(d) do{_n=__LINE__; _d=millis(); case __LINE__: if(millis()-_d<d) return;}while(0)
#define RESUME _n=0
#define END }
 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

brokly пишет:

не понял... ардуино и авр это разное ?

Мля... а я не знал.... 

ssss
Offline
Зарегистрирован: 01.07.2016

Цитата:

ты всеравно нихера не знаеш когда нужно инлайн, когда нет

А мне оно и не нужно... Стандартными фишками пользуюсь... а самогрёбными... это удел таких ограниченных как ты... )))))))))))))))

Цитата:

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

Да нет... он шарит... что АСМ - это от незнаний... как у тебя... или от неправильного выбора камня... )))))))))))))))

Цитата:

А покажи мне реализацию работы с WS8212 или подобными на 328 без ассемблера. 

 
Я ж не совсем ещё крышей рухнул... нафиг мне такой изврат... ))))))))))))))))
Я возьму 030-й... и спокойно на ТИМ и ДМА... 16 каналов по 200 WS8212... или 32 канала по 100 WS8212 забубеню... Хардварно, Карл... хардварно!!! )))))))))))))))))
На больше там оперативы просто не хватит... ))))))))))

 

Клапауций 555
Offline
Зарегистрирован: 10.03.2018

Картинки по запросу попкорн гиф

Logik
Offline
Зарегистрирован: 05.08.2014

Смачного!

 

Olej
Olej аватар
Offline
Зарегистрирован: 05.03.2018

Logik пишет:

Ты вобще на какими языкам писать собрался. 

Запомни, конь. Millis() это не ардуиновский вызов функции millis(). Больше не пиши програм. У тя руки из жопы.

Про коня и руки из жопы - это понравилось. Единственно что умно и внятно из всего затяжного диалога сообщества столь интеллектуальных джентльменов... (большинство из которых вообще не понимают предмета о котором спорят).

 

 

Logik
Offline
Зарегистрирован: 05.08.2014

Andy пишет:

Ну вот, а ломался, влом ему...

держи, эти должен схавать

#define BEGIN static int _n=0; static unsigned long _d; switch(_n){case 0:
#define DELAY(d) do{_n=__LINE__; _d=millis(); case __LINE__: if(millis()-_d<d) return;}while(0)
#define RESUME _n=0
#define END }
 

Свои пробы пера сам и отлажывай. Ты  облажался с выложеным, я раз проверил и тя убедил - лажа. Исправляеш - ОК. Дальше сам ибись. Могу только для наводки задать вопрос. Что напечатает цикл for(int i=0;i<5;i++) {Serial.println(i);DELAY(100);} если DELAY определена как ты тут написал. Что должно быть при правильном delay(100) я думаю сам загуглить сможеш.

ПС. буш дальше наглеть - я таки прогоню вышезаявленый цикл сам. И выложу результат.

Logik
Offline
Зарегистрирован: 05.08.2014

ssss пишет:

Цитата:

ты всеравно нихера не знаеш когда нужно инлайн, когда нет

А мне оно и не нужно... Стандартными фишками пользуюсь... а самогрёбными... это удел таких ограниченных как ты... )))))))))))))))

Цитата:

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

Да нет... он шарит... что АСМ - это от незнаний... как у тебя... или от неправильного выбора камня... )))))))))))))))

Цитата:

А покажи мне реализацию работы с WS8212 или подобными на 328 без ассемблера. 

 
Я ж не совсем ещё крышей рухнул... нафиг мне такой изврат... ))))))))))))))))
Я возьму 030-й... и спокойно на ТИМ и ДМА... 16 каналов по 200 WS8212... или 32 канала по 100 WS8212 забубеню... Хардварно, Карл... хардварно!!! )))))))))))))))))
На больше там оперативы просто не хватит... ))))))))))

 

не нужно - так не нужно. Нахрена воще сюда приперся.  А что оперативы у 030-й не хватит на большее  - это да. Я на 328й могу хоть 100500 WS8212 навесить, хватило бы питания.

Клапауций 555
Offline
Зарегистрирован: 10.03.2018

Logik пишет:

И выложу результат.

пару лет тому я уже это слышал - было очень страшно.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Ну и так что бы просто валялся здесь еще один мой код :)

#define DOIT(T,DO)  {\
    static unsigned long  past = 0; \
    if (millis() -  past >= (T)) {\
      past = millis();\
      DO;}}
//------------------------------------------------
void setup() {
  Serial.begin(9600);
}
void loop() {
  DOIT (500, Serial.println("qqqqq") )
  DOIT (800, Serial.println("2333") )
}

 

ssss
Offline
Зарегистрирован: 01.07.2016

Logik пишет:

Я на 328й могу хоть 100500 WS8212 навесить, хватило бы питания.

Навесить ты можешь что угодно... особенно лапшу... )))))))))))

Вот только что у тебя из этого получится... это ещё вопрос... большой... ))))))))))))

Logik
Offline
Зарегистрирован: 05.08.2014

Клапауций 555 пишет:

Logik пишет:

И выложу результат.

пару лет тому я уже это слышал - было очень страшно.

Так вот после чего у тя приступы истеричного сиеха начались. Извини. Не знал. Больше над инвалидом не буду шутить. 

ПС. А подключить к одной 328-й 100500 WS8212 не проблема. Просто не нужно что попало в оперативку совать. Но челу с DMA и в экстазе от аппаратного это нипосильно.

Клапауций 555
Offline
Зарегистрирован: 10.03.2018

Logik пишет:

Так вот после чего у тя приступы истеричного сиеха начались.

после этого ты определён как балабол.

ssss
Offline
Зарегистрирован: 01.07.2016

Logik пишет:

подключить к одной 328-й 100500 WS8212 не проблема. Просто не нужно что попало в оперативку совать.

В розетку сразу суй... там тоже дырки есть... )))))))))))))))))))))))))))))

И осмысленную информацию выведешь... и анимацию??? Даффай... даффай!!! ))))))))))

"А посоны то и не знали!"(с)... ))))))))))

Logik
Offline
Зарегистрирован: 05.08.2014

qwone пишет:

Ну и так что бы просто валялся здесь еще один мой код :)

#define DOIT(T,DO)  {\
    static unsigned long  past = 0; \
    if (millis() -  past >= (T)) {\
      past = millis();\
      DO;}}
//------------------------------------------------
void setup() {
  Serial.begin(9600);
}
void loop() {
  DOIT (500, Serial.println("qqqqq") )
  DOIT (800, Serial.println("2333") )
}

 

И та же проблема. for(int i=0;i<5;i++) {DOIT (500, Serial.println(i) );}

???

ПС. Теперь изобретатели вечного двигателя переключились на написание макроса превращающего гомнокод в ПО. Пора мне подумать про смену професии. Теперь програмисты будут невостребованы ;)

 

Logik
Offline
Зарегистрирован: 05.08.2014

ssss пишет:

Logik пишет:

подключить к одной 328-й 100500 WS8212 не проблема. Просто не нужно что попало в оперативку совать.

В розетку сразу суй... там тоже дырки есть... )))))))))))))))))))))))))))))

И осмысленную информацию выведешь... и анимацию??? Даффай... даффай!!! ))))))))))

"А посоны то и не знали!"(с)... ))))))))))

Твои пасоны - лохи. LCD 320х240 правильно подключенная к ардуине выводит "осмысленную информацию". Значить и куча WS выведет. Но работать с экраном без буфера - не для твоих посонов. См. возню с буферами для OLED экрана, тут много было тем, может поймеш чё.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Logik пишет:
Пора мне подумать про смену професии. Теперь програмисты будут невостребованы ;)
А ты то тут причём?

ssss
Offline
Зарегистрирован: 01.07.2016

Logik пишет:

LCD 320х240 правильно подключенная к ардуине выводит "осмысленную информацию". Значить и куча WS выведет.

))))))))))))))))))))))))))))))

Этот тормоз во плоти... ты называешь выводом "осмысленной информации"??? Ну-ну... ))))))))))))))))

Твой вывод LCD 320х240 изначально тормозной... убогий... и блокирующий (в тему... кстати)... про тиринг и артефакты можно вообще не говорить... ))))))))))))))))

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Logic пишет:
я таки прогоню вышезаявленый цикл сам. И выложу результат.
Давай прогони и выложи, переменную цикла i только сделай статической, а то опять пузыри будешь надувать.

Logik
Offline
Зарегистрирован: 05.08.2014

Перечитал стартовое. О необходимости превращать переменные в статические там ничего нет. Огласи весь список необходимых доработок  Если циклы будут вложеные все итераторы глобальными делать?  Т.е .локальных вобще небудет 8((  И условия ифов тоже должны одинаково отработать. Что например делать с таким кодом  if(a==1) {a=0;DELAY(100);Serial.println("puk!");}? воссстанавливать a==1? ;) А если код уже c глобальными, например static int i; i++;Serial.println(i);DELAY(100); ?  Напрягай фантазию дальше.