Arduino-cli - ์•„๋‘์ด๋…ธ ๋ช…๋ น๋ผ์ธ ์‚ฌ์šฉ

Intro arduino-cli๋Š” ์•„๋‘์ด๋…ธ IDE์˜ ๋ช…๋ น๋ผ์ธ ํˆด์ด๋‹ค. (์†Œํ”„ํŠธ์›จ์–ด ํˆด) Shell Script๋กœ ์—ฌ๋Ÿฌ ๋ฒˆ๊ฑฐ๋กœ์šด ์ž‘์—…์„ ์ž๋™ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค. nvim ์ด๋‚˜ vim์—์„œ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. nvim์„ ์ค‘์‹ฌ์œผ๋กœ ์ฝ”๋“œ ์ž‘์„ฑ, ์ปดํŒŒ์ผ, ๋””๋ฒ„๊น…์„ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ค์น˜ ๋ฐ ์‚ฌ์šฉํ™˜๊ฒฝ: windows, windows-wsl2-alpine, linux-ubuntu Intall: Windows reference: https://dumblebots.com/2020/08/02/arduino-cli-getting-started-windows/ ์œˆ๋„์šฐ์ฆˆ์šฉ arduino-cli.exe๋ฅผ ๋‹ค์šด๋ฐ›์•„ ์„ค์น˜, dos-shell ๋˜๋Š” powershell์—์„œ ๊ฒฝ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  ์‚ฌ์šฉ ์ด๋ฅผ ์œˆ๋„์šฐ์ฆˆ wsl2 ๊ธฐ๋ฐ˜์˜ ๋ฆฌ๋ˆ…์Šค์—์„œ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ /mnt/c/<์ดํ•˜๊ฒฝ๋กœ>๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค. PATH์— ์ถ”๊ฐ€. Install: Linux ์ผ๋ฐ˜์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ ~/bin์— ์„ค์น˜: PATH์— ์ถ”๊ฐ€ curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh Install: windows-wsl2-alpine reference: https://github.com/dorssel/usbipd-win/wiki/WSL-support ์•„๋‘์ด๋…ธ ์žฅ์น˜๋ฅผ USB์— ์—ฐ๊ฒฐํ•œ๋‹ค. wsl2-alpine - gcompat, usbip, hwdata ์„ค์น˜ gcompat์€ ardunino-cli๋กœ ์ปดํŒŒ์ผํ•  ๋•Œ ld-linux-x86-64.so.2 ์‚ฌ์šฉํ•˜๋Š”๋ฐ alpine์€ musl ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ํ˜ธํ™˜ ์ง€์› ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค. usbip๋Š” usbipd์˜ ํด๋ผ์ด์–ธํŠธ ํŒจํ‚ค์ง€ hwdata๋Š” USB๋“ฑ์˜ ์žฅ์น˜ํŒŒ์ผ ardunino-cli ์‚ฌ์šฉ์ž ์„ค์น˜์‹œ์— USB์žฅ์น˜ ์†Œ์œ ๊ถŒ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์žฅ์น˜ ์†Œ์œ ๊ถŒ์„ ํ•ด๋‹น ์‚ฌ์šฉ์ž๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. windows - usbipd-win ์„ค์น˜ ๋ฐ ์„ค์ • usbipd๋Š” ์œˆ๋„์šฐ์ฆˆ์—์„œ wsl2 ๋“ฑ์— USB ์žฅ์น˜๋ฅผ ๊ณต์œ ํ•ด์ฃผ๋Š” ๋ฐ๋ชฌ ํ”„๋กœ๊ทธ๋žจ ๋ฐ˜๋“œ์‹œ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰ํ•ด ์ฃผ์–ด์•ผํ•œ๋‹ค. ์•„๋‘์ด๋…ธ ์žฅ์น˜๋ฅผ wsl2์— ๋ถ™์—ฌ ์ฃผ์—ˆ์„ ๊ฒฝ์šฐ ์œˆ๋„์šฐ์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ด ๋ฐ๋ชฌ์€ usbip ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ํ†ตํ•ด USB์žฅ์น˜(์—ฌ๊ธฐ์—์„œ๋Š” ์•„๋‘์ด๋…ธ)๋ฅผ ๊ณต์œ  # WSL2-Alpine Linux: Pre-Package Install doas apk update doas apk add gcompat linux-tools-usbip hwdata # Windows-Powershell # ๊ด€๋ฆฌ์ž๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰, ์œˆ๋„์šฐ์ฆˆ ์žฌ๋ถ€ํŒ…์‹œ ๋‹ค์‹œ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. # ์—ฐ๊ฒฐ์‹œ ์ž๋™ attach ๋ฐฉ๋ฒ•์„ ๋ชจ์ƒ‰ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. # usbipd๋ฅผ ์„ค์น˜ํ•˜๊ณ  wsl list๋ฅผ ํ†ตํ•ด ์•„๋‘์ด๋…ธ์˜ busid๋ฅผ ํ™•์ธํ•˜๊ณ  ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ํ™•์ธ. winget usbipd usbipd wsl list usbipd wsl attach --busid=2-2 usbipd wsl list # WSL2-Alpine Linux: arduino-cli Install # usb ์ง€์›์—ฌ๋ถ€ ํ™•์ธ # ardunino-cli ์„ค์น˜ ๋ฐ ํŒจ์Šค ์„ค์ • # ์žฅ์น˜ ์†Œ์œ ๊ถŒ ํ˜„ ์‚ฌ์šฉ์ž๋กœ ๋ณ€๊ฒฝ lsusb curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh export PATH=$PATH:$HOME/bin arduino-cli board list doas chown -R <user_id>:<user_id> /dev/ttyACM0 arduino-cli --help Install: debian, ubuntu lsusb curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh export PATH=$PATH:$HOME/bin arduino-cli board list sudo chown -R <user_id>:<user_id> /dev/ttyACM0 arduino-cli --help ์‹œ์ž‘ํ•˜๊ธฐ reference: https://arduino.github.io/arduino-cli/0.35/getting-started/ ์•„๋ž˜๋Š” Ardunino UNO์˜ ๊ฒฝ์šฐ # ๋„์›€๋ง arduino-cli help arduino-cli help core # ์„ค์ • ํŒŒ์ผ ์ดˆ๊ธฐํ™” (~/.arduino15/arduino-cli.yaml) arduino-cli config init # ์žฅ์น˜์™€ ์—ฐ๊ฒฐํ•˜๊ธฐ (Arduino UNO) arduino-cli board list arduino-cli core update-index arduino-cli core install arduino:avr arduino-cli board listall mkr # list์˜ ๋ณด๋“œ๊ฐ€ Unknown์œผ๋กœ ๋‚˜์˜ฌ ๊ฒฝ์šฐ arduino-cli board list # ์†Œ์Šค ์ž‘์„ฑ (๋™์ผํ•œ ์Šค์ผ€์น˜ ์ด๋ฆ„์˜ ํด๋”์™€ ํŒŒ์ผ์ด ํ•„์š”) # ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•: arduino-cli sketch new myfirst && vim myfirst/myfirst.ino mkdir myfirst cat<<EOF > myfirst/myfirst.ino void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); } # ์ปดํŒŒ์ผ๊ณผ ์—…๋กœ๋“œํ•˜๊ธฐ (upload์‹œ ์ž๋™ ์ปดํŒŒ์ผ) # ์žฅ์น˜๋ช… ํ™•์ธ: ardunino-cli board list # ์ปดํŒŒ์ผ(-b) arduino-cli compile --fqbn arduino:avr:uno myfirst # ์—…๋กœ๋“œ (-u) arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:avr:uno myfirst # ์ปดํŒŒ์ผ(-b) & ์—…๋กœ๋“œ(-u) arduino-cli compile -p /dev/ttyACM0 -u arduino:avr:uno myfirst REFERENCE ardunino-cli ์„ค์น˜ ๋ฐ ์‹œ์ž‘ - https://arduino.github.io/arduino-cli/0.35/getting-started/ ์œˆ๋„์šฐ์ฆˆ ์„ค์น˜ ๋ฐ ์•ˆ๋‚ด - https://dumblebots.com/2020/08/02/arduino-cli-getting-started-windows/ wsl2์—์„œ usb์žฅ์น˜ ์—ฐ๊ฒฐ - https://github.com/dorssel/usbipd-win ardunino-cli linux install - https://m.blog.naver.com/roboholic84/221815428642

2023-10-30 ยท (updated 2023-10-31) ยท 437 words

Lua - Interactive Mode

2023-08-11: rlwarp + readline์„ ํ™œ์šฉํ•œ ํ‚ค์›Œ๋“œ ์™„์„ฑ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ Intro ์ฝ”๋”ฉ์„ ํ•˜๊ธฐ ์ „ ๋˜๋Š” ๋น ๋ฅธ ํ™•์ธ์„ ์œ„ํ•ด ์ธํ„ฐ์—‘ํ‹ฐ๋ธŒ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉ ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ๋‚˜ ๋ช‡๊ฐ€์ง€ ์‹คํ—˜์„ ํ•ด๋ณด๋Š” ์šฉ๋„๋กœ์„œ ์ข‹๋‹ค. ilua๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด jupyter console, notebook ๋“ฑ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. Execute String $ lua -e 'print("hello world")' hello world Interactive Mode lua -i ๋˜๋Š” luajit -i ๋กœ interactive mode๋กœ ์ง„์ž… -i ์˜ต์…˜์ด ์—†์–ด๋„ ์ง„์ž… ๊ฐ€๋Šฅ local ๋ณ€์ˆ˜๊ฐ€ ๋‹ค์Œ ๋ผ์ธ์—์„œ ์ธ์‹๋˜์ง€ ์•Š๋Š”๋‹ค. ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ $ lua -i -- ๋˜๋Š” luajit -i > local a = 'hello world' -- local ๋ณ€์ˆ˜ ์„ค์ • > print(a) -- print nil -- ๊ฒฐ๊ณผ: nil > a = 'hello world' -- Global ๋ณ€์ˆ˜ ์„ค์ • > print(a) -- print hello world -- ๊ฒฐ๊ณผ: hello world > os.exit() -- ์ข…๋ฃŒ: ๋˜๋Š” Ctrl+d, Ctrl+c Opening Lua File > f = assert(loadfile('foo.lua') -- luaํŒŒ์ผ ๋กœ๋“œ > f() -- ์‹คํ–‰ > dofile('foo.lua') -- ๋กœ๋“œ ๋ฐ ์‹คํ–‰ > m = require('mymodule') -- mymodule.lua ๋ชจ๋“ˆ ๋กœ๋“œ > m.parse() -- ๋ชจ๋“ˆ๋‚ด ํ•จ์ˆ˜ ์‹คํ–‰ Load Libary Example -- file 'lib1.lua' function norm(x,y) local n2 = x^2 + y^2 return math.sqrt(n2) end function twice(x) return 2*x end > dofile('lib1.lua') -- load your library > n = norm(3.4, 1.0) -- using lib1.lua functions > print(twice(n)) -- using twice functions Command Line Arguments (-- /dev/null ์˜ต์…˜ ์ฃผ๋ชฉ) $ lua -i -- /dev/null one two three > print(arg[1]) -- one > print(arg[2]) -- two > print(arg[3]) -- three > print(arg[0]) -- /dev/null Lua, LuaJit line completion like in bash bash์—์„œ line completion๊ณผ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ rlwrap ํ™œ์šฉ - -a:always-readline,-c:complete-filenames,-e:extra-char-after-completion $ sudo apt install rlwrap $ alias luajit='rlwrap -ac -e "" -pRed luajit' # add this line to ~/.bashrc $ luajit > = 2 + 2 4 > = 2 + 2 --> ํ™”์‚ดํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ์ƒ์œ„ ๋ช…๋ น๋ผ์ธ์„ ๋ถˆ๋Ÿฌ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. rlwarp์˜ readline์„ ํ™œ์šฉํ•œ ๋ช…๋ น์–ด ์™„์„ฑ: Dictionary ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉ. $ echo "print local assert string ..." > ~/.luadict $ alias luajit='rlwrap -b "" -f $HOME/.luadic -pRed -ca -e "" luajit' $ luajit > ass(-> Press Tab Key anc Check) iLua : with Jupyter Jupyter์˜ ๋ง‰๊ฐ•ํ•œ ์ง€์›์•„๋ž˜ ์ฝ˜์†”ํ˜• ์ธํ„ฐ์—‘ํ‹ฐ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฝ”๋“œ์™„์„ฑ ๋ฐ vi edit mode ๊ทธ๋ฆฌ๊ณ  ๋ณ€์ˆ˜๋ฅผ ์ง์ ‘ ์ถœ๋ ฅ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฌผ๋ก  ํŠน์„ฑ์ƒ local ๋ณ€์ˆ˜๋Š” ์—ญ์‹œ ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค. ํ˜„์žฌ๋กœ์„œ๋Š” ๊ทธ๋ ‡๋‹ค. ~/.local ์ดํ•˜์— jupyter ๋ฐ ilua๊ฐ€ ์„ค์น˜๋œ๋‹ค. ์•„๋ž˜์ฒ˜๋Ÿผ vi edit mode๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋”์šฑ ํŽธ๋ฆฌํ•˜๋‹ค. $ pip install ilua $ echo "c.ZMQTerminalInteractiveShell.editing_mode='vi'" > ~/.jupyter/jupyter_console_config.py $ jupyter console -h # help $ jupyter kernelspec list # ๋‚ด์žฅ ์ปค๋„ ์ŠคํŽ™ ํ™•์ธ $ ~/.local/bin/ilua -i lua[jit] # ์‹คํ–‰ $ echo "alias ilua='ilua -i luajit'" >> ~/.bashrc # luajit ์ „์šฉ alias $ source ~/.bashrc $ ilua Links https://www.lua.org/pil/1.1.html https://www.tutorialspoint.com/command-line-arguments-in-lua https://lua-users.org/wiki/InteractiveLua https://github.com/guysv/ilua https://jupyter-console.readthedocs.io/en/latest/config_options.html

2022-09-22 ยท (updated 2023-08-11) ยท 422 words