ПЕСОЧНИЦА. ДЛЯ ВСЕХ НОВИЧКОВ.

sadman41
Offline
Зарегистрирован: 19.10.2016

Не знаю, поможет ли это новичкам (впрочем, мы тут на 90% вечные новички), но на хабре натолкнулся на интересный ресурс: https://godbolt.org/ - онлайн компилятор в silver bullet нашего форума - язык ассемблера )).

Можно быстро глянуть, как там avr-gcc перекорёживает какие-нить простые программные конструкции.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

Не знаю было или нет, вот может кому-то нужно - секреты printf

http://microsin.net/programming/ARM/secrets-of-printf.html

 

Pyotr
Онлайн
Зарегистрирован: 12.03.2014

Для тех, кто захочет сделать стиральную машину под управлением Ардуино..)
Два скетча делают одно и тоже - пять циклов. Один цикл состоит из 2 длинных блинка + 3 коротких. 
Первый с делеями, а второй на миллис. Ничего нового, но может вопросов у новичков станет меньше (не уверен).

Скетч с  делеями

//цикл из пяти вспышек светика-2 длинных и 3 коротких
//после пяти циклов остановка программы
byte counter; 
void setup() {
  pinMode(13, OUTPUT);
}
void loop() {
  digitalWrite(13, HIGH); //STEP_1  
  delay(500);              
  digitalWrite(13, LOW);  //2 
  delay(500);  
  digitalWrite(13, HIGH);   
  delay(500);              
  digitalWrite(13, LOW);   
  delay(500); 
  digitalWrite(13, HIGH);  //5 
  delay(50);              
  digitalWrite(13, LOW);   
  delay(500);  
  digitalWrite(13, HIGH);   
  delay(50);              
  digitalWrite(13, LOW);   
  delay(500); 
  digitalWrite(13, HIGH);   
  delay(50);              
  digitalWrite(13, LOW);  //10 
  delay(500);
  if(++counter >= 5) while(1){}                  
}

Скетч с миллис

//цикл из пяти вспышек светика-2 длинных и 3 коротких
// программа совершает 5 циклов
enum {STOP, STEP_1, STEP_2, STEP_3, STEP_4, STEP_5,
      STEP_6, STEP_7, STEP_8, STEP_9, STEP_10};
byte doSomethin, counter; 
word currMillis, prevTime, timeDelay; 
    
void setup() {
  pinMode(13, OUTPUT);
  doSomethin = STEP_1;
}
void loop() {
  currMillis = (word)millis();
  if(doSomethin && isTimerElapsed()){//надо что-то делать и пришло время 
    switch (doSomethin){
      case STEP_1:    
        digitalWrite(13, HIGH);//наше действие   
        delayMs(500);  //мсек до следующего действия       
        doSomethin = STEP_2;//какой следующий шаг
        break;   
      case STEP_2: 
        digitalWrite(13, LOW);  
        delayMs(500);
        doSomethin = STEP_3;
        break; 
      case STEP_3: 
        digitalWrite(13, HIGH);//наше действие   
        delayMs(500);  //мсек до следующего действия       
        doSomethin = STEP_4;//какой следующий шаг
        break;   
      case STEP_4: 
        digitalWrite(13, LOW);  
        delayMs(500);
        doSomethin = STEP_5;
        break;     
      case STEP_5: 
        digitalWrite(13, HIGH);  
        delayMs(50);  
        doSomethin = STEP_6;
        break;   
      case STEP_6: 
        digitalWrite(13, LOW);  
        delayMs(500);
        doSomethin = STEP_7;
        break;  
      case STEP_7: 
        digitalWrite(13, HIGH);  
        delayMs(50);  
        doSomethin = STEP_8;
        break;   
      case STEP_8: 
        digitalWrite(13, LOW);  
        delayMs(500);
        doSomethin = STEP_9;
        break;   
      case STEP_9: 
        digitalWrite(13, HIGH);  
        delayMs(50);  
        doSomethin = STEP_10;
        break;
      case STEP_10: 
        digitalWrite(13, LOW);    
        delayMs(500);
        if(++counter >= 5) doSomethin = 100;
        else               doSomethin = STEP_1;
        break; 
      default: 
        doSomethin = STOP;       
    }
  }
}    
//====================== 
inline void delayMs(word ms){//ms = (0--65534)
  prevTime = (word)millis();
  timeDelay = ms;
}
//==================
inline void stopTimer(){
  timeDelay = 0xFFFF;
}
//================== таймер истек
bool isTimerElapsed(){
  if(currMillis - prevTime > timeDelay){
    stopTimer();
    return 1;
  }
  return 0;
}

Чтобы втрой скетч отрабатывал интервалы более 65 сек, нужно внести небольшие изменения.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

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

Pyotr, на форуме есть раздел "Проекты". Место стиралкам там, а не здесь.

Да не, эт не про стиралки... это про как "перековать" линейный код в автоматный.

Это где-то тут публиковали многие люди и я отметился, но новичкам все равно ;)))

bwn
Offline
Зарегистрирован: 25.08.2014

Pyotr пишет:

Какие проекты? Это пример как заменить delay() на millis(). Для совсем "зеленых". Отголосок темы про стиралку.

Я, в принципе, не против, но имхо, Вы выбрали неудачное место для примера. Хоспода неофиты даже первый пост не читают, не то что вторую страницу.))))

Pyotr
Онлайн
Зарегистрирован: 12.03.2014

bwn, я положительно отношусь к праву модераторов редактировать или удалять посты без предупреждений. Ваш пост воспринимаю как знак уважения. Спасибо. Сделайте с моим примером что посчитаете нужным. Есть тема типа "блинк без делай" может туда перенести?

Ироническое упоминае стиралки - эт я зря, не все поняли...

Pyotr
Онлайн
Зарегистрирован: 12.03.2014

Gluck-Truck пишет:

 

Парни а кого посоветуете посмотреть из учителей на ютубе? 

Я конечно не могу определить уровень программиста, но недавно наткнулся на канал Alex Morozov. Думаю начинающим стоит посмотреть.
Если кто из профи видел, пусть покритикуют.

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

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

По каналам:

Aka Kasyan - давнишний спец, упарывающийся советскими приборами, е-каталогом и различными импульсниками. По импульсникам реально хороший спец, может сляпать из куска говна и феррита из экономки вполне рабочий блок питания, правда слегка всратый. О всратости схем он честно предупреждает (русским по белому скажет за отсутствие защиты от КЗ и подобные моменты), рассасывает с красными-синими линиями на схеме, так что не въедет реально только трёхлетний ребёнок. Дуино он почти не занимается, но для зачаточных знаний по аналоговой и силовой электронике рекомендую.

AlexGyver - Санёк, монитор "Лосось", изделия из сантех. трубы и многое другое. Склеил термоклеем, бл█дь - двадцать лет прошло, а шрам остался (с). Местами квадрики. Местами пневматика. Собирает из "модулей", за что на него агрятся мастодонты кустарного производства печатных плат (я например). Вообще, здесь гайвера не любят, но он хорош тем же чем и Касьян - его схемы во фритзинге или цветными проводками (я его за это кстати не люблю, мне гораздо понятнее нормальная схема, всмысле принципиальная, с УГО из стандартных, типа принятых в журнале "Радио"). Короче, справится даже обезьяна. И скетчи у него откомментированы будьте нате, даже сударь, являющийся автором рецензии "Получается у вас, парни... Умеете, могёте" с его академичным воспитанием в лучших ПТУ Российской Федерации двухтысячных годов, и непревзойдённым интеллектом в 45 IQ - и тот врубится. Вопросов по проектам гайвера здесь не задавать, у него есть собственный форум по адресу https://community.alexgyver.ru/

Амперка - ну так, типа фигня но харизматичные ведущие. Алсо было 6-8 видео по занятиям со школьниками на час, правда там упор в преподавательскую деятельность. Доставляют историями про зомбоапокалипсис. Крафтят из фанеры и картона. Любят IskraJS.

arduinoLab - мастхев канал с обзорами железяк, датчиков, резиновых членов на батарейках. В видео часто есть примеры, например как заставить экраны 1602 без буквы C в P/N писать русский. Видео краткие и информативные, короче образцовый канал.

AutoAndElectronics - гайвер здорового человека, то есть мужик лет 40, который не отпарывает тупые шутки и мемчики, курит, ездит на тойоте или что там у него, и живёт с женой. Типичный радиолюбитель, таких много на easyelectronics. Алсо, доставляет тем что на видео появляется в хирургических перчатках. Хорошие видео по CNC. BTW, easyelectronics следует добавить в закладки. Только с условием: там надо вести себя прилично. Ибо могут и нахер послать.

DDElectroTech - индус. И этим всё сказано. То есть омерзительный индийский акцент (что-то типа мягкого знака в словах с L - по типу "дэти запомните: слова сол, фасол - пишутся с мяхьким знаком, а слова вилька, тарэлька - бэз мяхкого знака"), и не менее омерзительные нестриженные ногти в кадре. 1.1М народу, видимо хавают. Собирает как и гайвер в основном на модулях и финтифлюшках, но некоторые проекты годные. Проектов много.

iPad Rehab - Джесса Джонс, мегабаба, ремонтирующая айфоны. Louis Rossmann - Луис Россманн, он же Clinton the cat (так зовут его чёрного кота), она же Blackberry the kitty (так зовут его чёрную кошку), они же Rossmann Repair Group - мегамужик, ремонтирующий макбуки. Каналы для самообразования. У Россманна в описании есть гайд по ремонту, для клинических имбецилов. Всё максимально подробно, и с адекватной долей мата (без этого в ремонте яблотехники - никак). Никаких ардупроектов, только ремонты. Но инфа максимально подробная, также в описании под видео всегда куча ссылок на действительно качественный инструмент и расходники (настоящие флюсы Amtech а не китайская срака, например). Заодно на этих каналах можно всласть проорать с тупости инженеров Apple. Видео с котом и кошкой прилагаются.

Julian Ilett - хорошие видео по транзисторам, альтернативной энергетике, PWM и MPPT. Полезно при занятиях с солнечными панелями.

Косвенные каналы, бравшие *дуино в руки пару раз, типа Илюхи Полынкова, Скифосовского, Ваганыча, Побединского и Негоды, думаю не заинтересуют. Их можно перечислять бесконечно.

FYI, в ютубе есть поиск, а ещё в поиске есть фильтр, по кнопке с воронкой, держу в курсе.

Araris
Araris аватар
Offline
Зарегистрирован: 09.11.2012

Voodoo Doll, не устаю восхищаться великолепным стилем Ваших текстов. Часом, на Луркоморье не пишете ?

Pyotr
Онлайн
Зарегистрирован: 12.03.2014

Коллеги, Gluck-Truck (он или она) обо мне говорит. Уровень Алекса значительно выше моего, поэтому я ему не критик.
Gluck-Truck, Ваш уровень ниже моего, поэтому Вам можно и посмотреть и разобраться в его коде. Хуже от этого не будет. 
Вспомнилось - сходите ещё на сайт Ника Гаммона. 

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

Araris, неа, не пишу. Может надо, но желания видимо нет.

Кстати, ещё один канал который стоило упомянуть - GreatScott - об электронике вообще (неконкретно Arduino), но очень доходчиво. Иногда - "что будет если", но в целом тематика видео достойная, как то: проекты, обзоры, обучающие видео и видео о подводных камнях (как НЕ делать модсинусоидальный инвертор и т. п.). Есть интересная рубрика DIY or buy, то есть о случаях когда проще купить чем делать.

Samid777
Offline
Зарегистрирован: 24.04.2019

Вот самый полезный канал для электронщика. Здесь только теория, без наигнанности выкрутасов, погонь за лайками и почей хрени. К сожелению, часть видео сделана на не очень качественный микрофон. https://www.youtube.com/channel/UCFI31dsn8yxaarw6LZpSHWw

bwn
Offline
Зарегистрирован: 25.08.2014

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

sadman41
Offline
Зарегистрирован: 19.10.2016

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

bwn
Offline
Зарегистрирован: 25.08.2014

sadman41 пишет:

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

Григорий, не будет, ключевое слово - для новичков, чтобы поняли, что делей на миллис одной строчкой не меняется. Залезать в глубокие глубины не нужно, и как в свое время предложил ЕвгенийП, если есть обоснованное предложение для изменения формулировки, предложи, нет, молчи. Персонажей - все не так, все овно, все дураки, буду просто чистить.