G2TA0


          Циклопы существовали, иначе откуда бы взялся дверной глазок?*0
          Новые Русские 2, 2015, 1:18:50

Конвертируем блок-схемы Raptor Flow Chart Builder'а для Arduino
---------------------------------------------------------------

Составим небольшую табличку для перевода:

  +------------------------+----------------------+--------------------+
  | Из                     | В                    | Комментарий        |
  +------------------------+----------------------+--------------------+
  | pirata informático     | хакер                | español -- русский |
  | capitán                | капитан              | español -- русский |
  | hámster                | хомяк                | español -- русский |
  | cout << "13:" + x      | digitalWrite( 13, x) | raptor  -- arduino |
  | Play_Sound( "250.wav") | delay( 250)          | raptor  -- arduino |
  +------------------------+----------------------+--------------------+

Для ускорения замен в созданном раптором С++ файле, воспользуемся регулярными выражениями*1 текстового редактора (подойдут notepad++, vi, gedit и т.п.*2)

замена 0:

  find: [cout *<< *"([0-9]+):" *\+ *(([0-9]+|[A-Za-z_]+[0-9A-Za-z_]*))]
  replace: [digitalWrite\( \1, \2\)]

замена 1:

  find: [Play_Sound *\( *"([0-9]+).wav" *\)]
  replace: [delay\( \1\)]
  
Примечание: wav задержки можно создать командой*3. Например 10 секунд тишины в Windows получим командой:

  sox -t waveaudio default -c 2 10000.wav trim 0 10
  
Набор задержек для исполнения скриптом:

  sox -t waveaudio default -c 2    10.wav trim 0  0.01
  sox -t waveaudio default -c 2    20.wav trim 0  0.02
  sox -t waveaudio default -c 2    50.wav trim 0  0.05
  sox -t waveaudio default -c 2   100.wav trim 0  0.01
  sox -t waveaudio default -c 2   200.wav trim 0  0.20
  sox -t waveaudio default -c 2   500.wav trim 0  0.50
  sox -t waveaudio default -c 2  1000.wav trim 0  1.00
  sox -t waveaudio default -c 2  2000.wav trim 0  2.00
  sox -t waveaudio default -c 2  5000.wav trim 0  5.00
  sox -t waveaudio default -c 2 10000.wav trim 0 10.00
  
Понятное дело, система должна знать путь к sox.exe.

------

*0) совет-намек: врезайте глазок как можно выше, незнакомый гость представит себе Ваш рост, и.. (на самом деле гость оценит Ваш интеллект, и..)

*1) Переменная в регулярном выражении
      http://ru.stackoverflow.com/questions/82765
           /Переменная-в-регулярном-выражении
..Посмотрите тут. Переменную можно организовать через скобки и вызвать по $1-$9. Находит x и запоминает. Это называется "запоминающие скобки". Например, /(foo)/ найдет и запомнит 'foo' в "foo bar." Найденная подстрока хранится в массиве-результате поиска или в предопределенных свойствах объекта RegExp: $1, ..., $9. Кроме того, скобки объединяют то, что в них находится, в единый элемент паттерна. Например, (abc)* - повторение abc 0 и более раз.

Вообще, вот полезная статья про регулярки.
  http://javascript.ru/basic/regular-expression

*2) Автор использовал Raptor из установщика:
      http://raptor.martincarlisle.com/raptor2015.msi
    Notepad++ из установщика:
      https://notepad-plus-plus.org
            /repository/6.x/6.9/npp.6.9.Installer.exe

*3) Create Silence
      http://ubuntuforums.org/showthread.php?t=1911430
    Sox binaries:
      http://sox.sourceforge.net/
    
Примеры регулярных замен в notepad++
------------------------------------

1. Заменить 0 или больше пробелов на знак +

   Search String [1 *2]
   Replace With: [1\+2]
   [v] Regular expression search

   Дано:

     12
     1 2
     1  2
     1   2

   Получим:

     1+2
     1+2
     1+2
     1+2

2. Исходный файл содержит текст

      cout  <<   "13:"    <<   1
      cout<<"12:"<<x
   
   Произведем замену (замена 0)
   
      digitalWrite( 13, 1)
      digitalWrite( 12, x)

3. Исходный файл содержит текст

      Play_Sound("1000.wav")
      Play_Sound (  "2000.wav" )
   
   Произведем замену (замена 1)
   
      delay( 1000)
      delay( 2000)
