Разбор полетов (EV-21, B-B316, 2023/04/06

  1. Первое и главное: Играя в ПЛК -- схема всегда одна:*)

    Vcc n R 10K
    GND n PB
    PB out 300
    
    Vcc n R 330
    n GND LED
    

    *) надоело рисовать? -- расскажи про входной язык Spice

  2. Почему на LED последовательно ставят резистор?
    "идеальный" диод: Rd=Ud0 ? 0:R_d = U_d \geq 0 \text{ ? } 0 : \infty
    "крутой" диод: Rd=UdUo ? 0:R_d = U_d \geq U_o \text{ ? } 0 : \infty

    вот почему можно делать китайский фонарик только на таблетке -- из-за внутреннего сопротивления CR2032.

  3. Годзилла против Кингконга

Пример:

(* matrio: --]x/[----(y)-- 

   program0: --]button[---------------(led0)--
             --]led0[----x[matrio0]y--(led0)-- 
 *)

FUNCTION_BLOCK matrio
  VAR_INPUT
    x : BOOL;
  END_VAR
  VAR_OUTPUT
    y : BOOL;
  END_VAR

  y := NOT(x);
END_FUNCTION_BLOCK

PROGRAM program0
  VAR
    button AT %IX0.0 : BOOL := 0;
    led0   AT %QX0.0 : BOOL;
    led1   AT %QX0.1 : BOOL;
  END_VAR
  VAR
    matrio0 : matrio;
  END_VAR

  led0 := button;
  matrio0(x := led0);
  led1 := matrio0.y;
END_PROGRAM

CONFIGURATION Config0
  RESOURCE Res0 ON PLC
    TASK task0(INTERVAL := T#20ms,PRIORITY := 0);
    PROGRAM instance0 WITH task0 : program0;
  END_RESOURCE
END_CONFIGURATION

на уроке

Nr проблема решение
1 тестер светодиода V/A характеристика, самоделка
2 тестер-омы держатель батарейки
3 кнопка плохо контачит*0 ключ Морзе
4 монтажка ненадежна*1 найти переход Анти (kirill../arduino-serial)
5 не вижу резистор очки-лупа
6 upload готовой прошивки Arduino IDE, properties:show, avrdude*2.
7 C-robootikalabor*3 дополнить чего не хватает: enum, static, ??
8 ST (Petrov) tl;dr.. конспект
9 Arduino, новости из музея Arduino PLC IDE

*0) Что такое дребезг.

*1) http://kirill.tpt.edu.ee/arduino_serial-N3E.html

*2)

$LCN="C:\Users\alien\AppData\Local\Arduino15\packages\"
$LCN+="arduino\tools\avrdude\6.3.0-arduino17"
cd $LCN
/bin/avrdude -C$LCN+"/etc/avrdude.conf" -v -patmega2560 `
             -cwiring -PCOM11 -b115200 -D `
             -Uflash:w:my_sketch.hex:i 

*3) https://robolabor.ee/homelab/et/programming/c/crashcourse

 ~

Lennuanalüüs (KEE-22, B-B315, 24.03.2023)

  1. ¿ʎɐ.ɹn: ʞɐʞ o⊔dǝჩǝѵиꓕ৭ ssʅ ɔǝdꓕифиʞɐꓕ ɔɐиꓕɐ (https://fsymbols.com/upside-down-question/)

Kuidas ma saan teada, milline SSL-sertifikaat on saidi jaoks välja antud?
https://qna.habr.com/q/205503?ysclid=lflus4a221268430431

..Üldiselt peate klõpsama turvalise ühenduse ikoonile, ülejäänud sammud sõltuvad kasutatavast brauserist. Siit saate lugeda rohkem:

https://www.instantssl.su/news/277-kak-ssl-sertifikaty-pomogayut-zaschititsya-ot-internet-moshennichestva

Translated with www.DeepL.com/Translator (free version)

PowerShell 7.3.3

PS C:\Users\alien> nslookup kirill.tpt.edu.ee 8.8.8.8
Server:  dns.google
Address:  8.8.8.8
Non-authoritative answer:
Name:    kirill.tpt.edu.ee
Address:  193.40.160.60

PS C:\Users\alien> nslookup wiki.tptlive.ee 8.8.8.8
Server:  dns.google
Address:  8.8.8.8
Non-authoritative answer:
Name:    wiki.tptlive.ee
Address:  217.146.69.45
  1. VS-2015

    Kui keegi saab installeerimisel vigu, siis siin on vihje MSDNist (minul töötas):
    Visual Studio taastamise katsel tekib viga, installeerimise vahemälu võib olla rikutud. Vahemälu taastamiseks järgige järgmisi samme.

    1. Sulgege Visual Studio.
    2. Avage käsurea kõrgendatud õigustega.
    3. Sisestage järgmised käsud:
      cd "C:\ProgramData\Package Cache"
      (Del|Erase) /F /S *.msiDelete /F /S *.cab
      
    4. Proovige uuesti installida Visual Studio.
  2. Breadboard Simulator 1.0.

    1. Leitud 'fork'id, 'backend' ei tööta, simbe.exe tuleb võtta algsest saidist binaarsest versioonist.
    2. 'fork'id on ehitatud moodsama stuudioga, kus on C-tools v.142 (VS 2019)
    3. cp res/breadboard/* res/objects/

 ~

Разбор полётов (EV-21, B-B316, 26.01.2023)

Если совсем коротко, то с Thonny работать крайне неудобно, поскольку 1. он очень мало подсказывает, даже когда очень попросишь. Пример от WallySalami TKGPIO: led5.<CTRL+SPACE>. Но можно настроить его "правильно"*). 2. То, что вышедшая две недели назад версия 4.02 укомплектована не самой новой версией Питона (3.10 медленнее 3.11 в среднем на 20%), погоды не делает и в учебном процессе роли не играет. Кроме того, 3. уже достаточно давно жива ошибка в установщике -- в режиме "для всех пользователей": интерпретатор 'not found'. Как я писал уже несколько лет назад: "за двумя зайцами погонишься ни одного не поймаешь -- поэтому зайцев должно быть не менее трех". Установка Питона 3.11 вместе с Visual Studio Code описана в отдельной заметке в разделе программирование.

--

*) Мне удалось "разговорить" Thonny только после того, как я сделал установку Python 3.11.1 и Pip (с сайта python.org) в C:\Program Files\Python311, запустил в окне администратора Powershell pip install tkgpio, добавил в путь системы (Settings -> Edit system environment variables):

C:\Program Files\Python311\
C:\Program Files\Python311\Scripts

Код для XOR (для Logisim показывал в начале урока):

# in preferences: open user settings
# "python.defaultInterpreterPath": 
# "C:\\Users\\kirill.nelus\\AppData\\Local\\
#     Programs\\Thonny\\python.exe"

from tkgpio import TkCircuit

# initialize the circuit inside the GUI

configuration = {
    "width": 300,
    "height": 200,
    "leds": [
        {"x": 70, "y": 20, "name": "LED A", "pin": 22},
        {"x": 70, "y": 140, "name": "LED B", "pin": 23},
        {"x": 160, "y": 80, "name": "LED Y", "pin": 26},
    ],
    "buttons": [
        {"x": 20, "y": 20, "name": "A", "pin": 8},
        {"x": 20, "y": 140, "name": "B", "pin": 9},
    ],
 }

circuit = TkCircuit(configuration)
@circuit.run
def main ():
    
    # now just write the code you would use on a real Raspberry Pi
    
    from gpiozero import LED, Button
    from time import sleep
    
    def decide():
        if led1.is_active and not led2.is_active or \
               led2.is_active and not led1.is_active:
            led5.on()
        else:
            led5.off()

    def buttonA_pressed():
        led1.toggle()
        decide()

    def buttonB_pressed():
        led2.toggle()
        decide()
    
    led1 = LED(22)
    led2 = LED(23)

    led5 = LED(26)

    buttonA = Button(8)
    buttonB = Button(9)
    
    buttonA.when_pressed = buttonA_pressed
    buttonB.when_pressed = buttonB_pressed
    
    while True:
        sleep(0.1)

Код для варианта 99 показывать не буду: даже этот пример написан с нарушением принципа DRY (don't repeat yourself), функция decide() грязная (side effects), вам в этом копаться рано, ну а мне лень (поздно :) )

 ~

Разбор полётов (EV-21, B-B316, 19.01.2023)

  1. От домашних заготовок толку было маловато так как первая пара*1 ушла на знакомство, знакомство с помещением и еnv.

--

*1) урок 1 ач (академический час). 1 ач = 45 минут, ПАРА 2 урока подряд.

*2) How?

Draft.