i9NL7

            Võtke vastu tellimuse palun:
            Klient valdab ainult ühte keelt mis on LD
            (välja arvatud eesti keelt), kuid soovib
            programmeerida kiipe ühe ülesande täitmiseks.
            Tuleb ehitada virtuaalmasin
            1. Debian Linuxi alusel.
            2. Windows 10 baasil

            Примите заказ, плз:
            Клиент знал один единственный язык LD
            (кроме русского), но хотел программировать
            однокристалльные контроллеры под одну задачу.
            Требуется сделать ему виртуальную машину
            1. На основе Debian Linux.
            2. На базе Windows 10


LDMicro
-------

## I. PAIGALDUS / УСТАНОВКА:

1. PHP for Windows

  https://windows.php.net/download/

fail
файл

  php-7.2.10-Win32-VC15-x64.zip

Paki lahti C:\PHP7 kausta, lisa tee ($env:path)
Распакуй в C:\PHP7, добавь путь ($env:path)

Kuidas?: "Metro" juhtpaneel, otsime sõna "path"
Как?: панель управления "Метро", ищем слово "path"

  Edit the system environment variables:
  System properties -> Advanced ->
    Environment Varialbles -> System Variables

  Path  [EDIT] -> [NEW] -> C:\PHP7

2. Git for Windows

  https://gitforwindows.org/

fail
файл

  Git-2.19.0-64-bit.exe

paigaldus vaikimisi sätetega.
установка с настройками по умолчанию.

3. arduino

  https://downloads.arduino.cc/arduino-1.8.7-windows.exe

paigaldus vaikimisi sätetega.
установка с настройками по умолчанию.

4. LDMicro

Allalaadida töölauale, käivitada
Скачать на рабочий стол, запустить

  http://www.cq.cx/dl/ldmicro.exe

5. SimulIDE

google: simulide

Allalaadida faili SimulIDE_0.2.9-Win32.zip
Скачать файл SimulIDE_0.2.9-Win32.zip

Paki lahti töölauale, käivitusfail on run_simulide.bat
Распаковать на рабочий стол, запуск файлом run_simulide.bat

## II. Skeem / Схема.

Seadmel on kolm tumbleri. Iga nupp lülitab sisse/välja lambi teatud värviga (punane, roheline, sinine) . Kui kõik kolm tumbleri on asendis "ON", süttib neljas lamp (kollane).
Устройство имеет тумблера. Каждая из кнопок включает/выключает лампу определенного цвета (красный, зеленый, синий). Когда все три тумблера в положении "ON", загорается четвертая лампа (желтый).

## Joonistame skeemi LD-keeles / Рисуем схему на языке LD.

Kõik failide käsitsemine toimub kaustas l3 töölaual.
Все манипуляции с файлами будут производиться на рабочем столе в папке l3.

NAMING CONVENTION: Vajalikud programmid (LDMicro, ArduinoIDE, SimulIDE) mis olid paigaldatud I osas, toovad muutuja nimedele lisa ebatavalisi nõudeid: muutujanimedel peavad olema erinevad nimeosad alates teisest tähest kuni nime lõpuni. Esimene täht on n.n. prefiks (eesliide, prefix):

  X - kontakt
  R - sisemine relee
  Y - MCU (microcontroller unit) pin

NAMING CONVENTION: Нужные программы (LDMicro, ArduinoIDE, SimulIDE), установленные в части I, будет предъявлять к именам переменных дополнительные необычные требования: имена переменных должны отличаться в части со второй буквы до конца имени. Первая буква это префикс:

  X -- контакт
  R -- внутреннее реле
  Y -- MCU (microcontroller unit) pin

  |---]XR[-----------------------(YRo)---|
  |---]XG[-----------------------(YGo)---|
  |---]XB[-----------------------(YBo)---|
  |                                      |
  |---]YRo[----]YGo[----]YBo[----(YYo)---|
  |                                      |
 VCC                                    GND

Joonistame skeemi LDMicro's, näitame kontrolleri tüüpi
Нарисуем схему в LDMicro, установим тип контроллера

  Settings -> Microcontroller -> ANSI C Code

Salvestame faili Desktop\l3\rgb.ld kausta
Cохраним файл в Desktop\l3\rgb.ld

## Konverteerime C++'ssi
## Конвертируем в C++

  Compile as -> ladder.cpp

Samasse kausta lisame git-iga kloonitud ladder-gen.php faili:
В эту же папку добавим файл ladder-gen.php, склонированный git-ом:

  PS G:\tmp> git clone https://github.com/ah01/LDmicro2arduino

Samas kaustas loome LD-muutujate ning Arduino-jalgade vastavuse faili.
В этой же папке создадим файл соответствия LD-переменных ножкам Arduino.

  pinmap.ini

  R  = 3
  G  = 4
  B  = 5
  Ro = 7
  Go = 8
  Bo = 9
  Yo = 10

Pange tähele, et prefiksid on kadunud, ning nüüd on selge, miks näiteks nimed XR, YR ei sobi: kui prefiks puudub, mõlemal on üks ja sama nimi (R)
Обратите внимание, что префиксы улетели, теперь очевидно, почему, скажем, имена XR, YR не годятся: без префикса это одно и тоже (просто R)

Genereerime päisefaili ladder.h
Сгенерируем файл заголовка ladder.h

  PS C:\Users\opilane\Desktop\l3> php .\ladder-gen.php

Loome kausta Desktop\l3\RGB ning asetame sinna kolme faili
Coздадим папку Desktop\l3\RGB, и поместим туда три файла

  > cp ladder.cpp RGB
  > cp ladder.h RGB
  > cp ..\Desktop\LDmicro2arduino\ldexample.pde RGB\RGB.pde

Avame Arduino IDE abil projektifaili RGB.pde, eksportime Arduino Uno püsivara:
Откроем проектный файл RGB.pde с помощью Arduino IDE, экспортируем прошивку для Arduino Uno:

  ArduinoIDE -> Tools -> Board Arduino/Genuino UNO
  ArduinoIDE -> Sketch -> Export compiled binary

Avame SimulIDE, joonistame skeemi:
Откроем SimulIDE, нарисуем схему:

  Arduino UNO
  Fix.Volt.Source D3
  Fix.Volt.Source D4
  Fix.Volt.Source D5
  Red Probe       D7
  Green Probe     D8
  Blue  Probe     D9
  Yellow Probe    D10

Paremklõps hiirega Arduino pildil laeb üles püsivara:
Правым кликом мышки над изображением платы Arduino загрузить прошивку:

  LoadFirmware -> ladder.cpp.standard.hex

Lülitada simulaator sisse ning katsetada kas projekt töötab.
Включить симулятор и проверить работоспособность проекта.

Märkus: Virtuaalne Masin "Vaarikas-64": ldmicro.exe käivitatakse wine32 abil. Värskenda Arduino IDE versioonini 1.87-ni, Simulide-le 0.29-ni. Värvida pingeindikaatoreid (probes) :)
Примечание: Виртуальная машина "Vaarikas-64": ldmicro.exe запускаем из wine32. Обновить Arduino IDE до версии 1.87, SimulIDE до 0.29 . Красить пробники :)


## Viited
## Ссылки

  1. LDMicro:    http://www.cq.cx/ladder.pl

  2. LDMicro and Arduino

     http://electronics4dogs.blogspot.com
       /2011/07/ldmicro-and-arduino.html

