Sabtu, 26 Desember 2020

Cara mengetahui ip address raspberry atau perangkat lain yg terhubung pada wifi yg sama

1. Install nmap [jika belum ada]:

sudo apt install nmap

2. Cek ip address komputer (yg akses ke wifi yang sama):

ip addr

misal hasilnya 192.168.8.25/24 maka basenya adalah 192.168.8.xxx

sehingga kita bisa scan ip lain (di wifi yg sama) dgn base tersebut.

3. scan ip address yg terkonek di wifi address yg sama:

sudo nmap -sn 192.168.8.0/24

Note: sesuaikan dengan ip basenya.


Referensi:

https://www.howtogeek.com/423709/how-to-see-all-devices-on-your-network-with-nmap-on-linux/

Set Up Sublime Text 3 to use Python 3 (with venv virtual environment) on Ubuntu 20.04

A. Set up virtual environment

1. I assume that you already have python on your computer (linux)

2. Install venv:

sudo apt install -y python3-venv

3. Create virtual environment inside your project directory (example for me: inside data-science folder ):

python3 -m venv venv_01

4. Activate virtual environment:

source venv_01/bin/activate

5. Deactivate virtual environment:

deactivate


B. Set up Sublime:

1. Open Sublime

2. Add new build system on your Sublime:

Tools -> Build System -> New Build System

3. Edit as follow:

{

    "cmd": ["/home/<username>/Desktop/data_science/venv_01/bin/python", "$file"],

    "file_regex": "^[ ]File \"(...?)\", line ([0-9]*)",

    "selector": "source.activate"

}

Replace <username> with your username.

/home/<username>/Desktop/data_science/venv_01 --> this is my virtual environment path (change with your path).

4. Save and give the name (example: python3_venv_01)


C. Test your set up:

1. Try to create simple python code in sublime. For example:

import sys

print(sys.version)

2. Let save as tes.py and save inside your project directory (which is the same folder with your virtual environment).

3. Set Build System 

Tools -> Build System -> python3_venv_01

4. To test if the app is working, press CTRL + B


References:

https://medium.com/@hariyanto.tan95/set-up-sublime-text-3-to-use-python-3-c845b742c720

https://towardsdatascience.com/python-virtual-environments-made-easy-fe0c603fe601

https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-programming-environment-on-an-ubuntu-20-04-server

Minggu, 06 Desember 2020

instalasi ROS Kinetic pada Ubuntu 16.04 menggunakan Virtualbox

Tahapan instalasi ROS Kinetic pada Ubuntu 16.04 menggunakan Virtualbox

 

 

1. Setting virtualisasi

2. Install virtualbox

3. Install Ubuntu 16.04 di Virtualbox

4. Setting Full Screen Ubuntu di virtualbox (jika belum full screen)

5. Install ROS Kinetic (dan Gazebo) di Ubuntu 16.04 

 

 

 

Setting virtualisasi

 

lCek apakah virtualisasi sudah aktif melalui task manager


 

https://support.bluestacks.com/hc/en-us/articles/115003174386-How-can-I-enable-virtualization-VT-on-my-PC-

 

lJika belum aktif maka bisa diaktifkan melalui BIOS setting. Silahkan cek link berikut kemudian pilih cara setting sesuai jenis komputer/laptop masing-masing

 

https://2nwiki.2n.cz/pages/viewpage.action?pageId=75202968#:~:text=Press%20F2%20key%20at%20startup,changes%20and%20Reboot%20into%20Windows.

  

 

  

Install virtualbox

  

lDownload virtualbox melalui link berikut

Windows

https://download.virtualbox.org/virtualbox/6.1.16/VirtualBox-6.1.16-140961-Win.exe

 

OS X

https://download.virtualbox.org/virtualbox/6.1.16/VirtualBox-6.1.16-140961-OSX.dmg

 

Linux

https://www.virtualbox.org/wiki/Linux_Downloads

 

lInstall virtualbox --> double klik file hasil download atau sesuai instruksi cara install di masing masing operating system yang digunakan.

lBisa juga mengikuti instruksi seperti di link berikut:

https://www.nitrotekno.com/cara-install-virtualbox-di-windows-10-8-7-update-maret-2020/

 

 

https://www.nitrotekno.com/cara-install-virtualbox-di-windows-10-8-7-update-maret-2020/

 

 

 

Install Ubuntu 16.04 di Virtualbox

 

Download Ubuntu 16.04

lDownload Ubuntu 16.04 melalui link berikut:

https://releases.ubuntu.com/16.04/

lPilih Download Dekstop Image (64-bit PC (AMD64) desktop image atau 32-bit PC (i386) desktop image). Pilih sesuai spesifikasi komputer anda (umumnya untuk komputer sekarang sudah menggunakan 64 bit).

lSimpan file ubuntu berextension .iso ke dalam folder yang mudah dicari

 

Setting virtual machine

lBuka/jalankan virtualbox

lClick New

lTuliskan nama (terserah masing-masing), Type --> Linux, Version --> Ubuntu_64

lClick Next

lMemory Size --> Sy rekomendasikan 4 GB atau lebih (tetapi jangan sampai batas merah)

lClick Next

lCreate your virtual machine's virtual hard drive --> biarkan default tidak apa-apa

lUntuk ukuran hard drive saran Saya sekitar 20GB karena untuk instalasi Ubuntu, ROS dan software pendukung jika diperlukan

lClick Create

 

Install Ubuntu 16.04

lInstall ubuntu di virtualbox dengan click start

 

 

https://www.wikihow.com/Install-Ubuntu-on-VirtualBox

 

lPilih file Ubuntu (.iso) yg telah didownload sebelumnya dengan mengclick tombol bergambar folder sebelah kiri bawah. Kemudian click Start.

 

https://www.wikihow.com/Install-Ubuntu-on-VirtualBox

 

lClick Install Ubuntu

 

 

https://ubuntu.com/tutorials/install-ubuntu-desktop-1604#3-boot-from-dvd

 

lIkuti wizard pada saat instalasi (anda bisa membiarkan settingan default atau disesuaikan sesuai kebutuhan anda)

lSetting login: Nama dan Password --> jangan lupa untuk diingat passwordnya

lTunggu sampai proses instalasi selesai. Kemudian click Restart Now

 

 

https://ubuntu.com/tutorials/install-ubuntu-desktop-1604#3-boot-from-dvd

 

lIngat restart ini adalah restart virtual machine. Jangan lupa memilih “Power off the machine” kemudian click Ok.

lSetelah itu untuk menggunakan Ubuntu --> open virtualbox --> pilih virtual machine yg diinginkan --> click start --> gunakan password untuk login.

 

 

 

Setting Full Screen Ubuntu di virtualbox (jika belum full screen)

  

lStep 1: Open Ubuntu in VirtualBox and Login .

lStep 2: Now, Click on Devices .

lStep 3: Click on 'Insert Guest Additions CD image', Provide Password.


 

lStep 4: Once,Installation is done, Hit Enter to Return.

lStep 5: Now, Shut down the virtual Machine and restart it again.

lStep 6: Press Right CTRL+F on your Keyboard and You will see Ubuntu in FullScreen.

 

 

 

Install ROS Kinetic (dan Gazebo) di Ubuntu 16.04

  

1. Jalankan Ubuntu

2. Buka Terminal di Ubuntu dengan shortcut CTRL+ALT+T atau click kanan --> Open Terminal

3. Ketik/copy (gunakan mouse untuk copy paste di terminal) command berikut di terminal dan tekan enter (jika perlu password maka masukkan password anda):

a) sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

b) sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

 

atau

 

curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -

c) sudo apt-get update

d) sudo apt-get install ros-kinetic-desktop-full

e) echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc

f) source ~/.bashrc

g) sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

h) sudo apt install python-rosdep

i) sudo rosdep init

j) rosdep update

 

4. Informasi lebih lanjut dapat dilihat pada --> http://wiki.ros.org/kinetic/Installation/Ubuntu

5. Note: jika ada error biasanya karena gagal download. Maka ulangi langkah sebelumnya sehingga akan melakukan download file yg belum terdownload.

6. Cek instalasi ros dengan perintah “printenv | grep ROS” --> akan menunjukkan environment dari ROS yang terinstall

 

 

  

7. Cek instalasi gazebo di ROS dengan perintah “roslaunch gazebo_ros empty_world.launch” --> akan muncul simulator gazebo

 

 

 

8. Jika step 6 dan/atau 7 ada error maka periksa kembali (atau ulangi) instalasi anda

 

 

 

 

 

 

 

Referensi:

https://support.bluestacks.com/hc/en-us/articles/115003174386-How-can-I-enable-virtualization-VT-on-my-PC-

https://www.nitrotekno.com/cara-install-virtualbox-di-windows-10-8-7-update-maret-2020/

https://www.wikihow.com/Install-Ubuntu-on-VirtualBox

https://ubuntu.com/tutorials/install-ubuntu-desktop-1604#3-boot-from-dvd

https://linuxconfig.org/how-to-open-a-terminal-on-ubuntu-xenial-xerus-16-04-linux

http://wiki.ros.org/kinetic/Installation/Ubuntu

Selasa, 25 Desember 2018

cv2 (opencv-python) not working (Python on Visual Studio Code)

Problem 1: cv2 (opencv-python) not working (Python on Visual Studio Code)

Solution: 
1. Install the cv2 package with pip3 install --upgrade opencv-python
2. OR,  pip install --upgrade opencv-python
3. OR, If you're using a virtual or conda environment then use Python: Create Terminal and install cv2 either using conda or python -m pip install --upgrade opencv-python.
 
Reference issue: 
1. https://github.com/Microsoft/vscode-python/issues/1993
2. https://github.com/DonJayamanne/pythonVSCode/issues/623



Problem 2: cv2 module members are not recognized (Python on Visual Studio Code)

Solution: 
1. Use the Cmd+shift+p shortcut (or ctrl instead of cmd) and type "open settings (json)". 
2. Add this line to the settings: "python.linting.pylintArgs": ["--extension-pkg-whitelist=cv2"]

Reference Issue: 
1. https://github.com/PyCQA/pylint/issues/2426
2. https://github.com/DonJayamanne/pythonVSCode/issues/623 









Kamis, 13 September 2018

Belajar Pemrograman Python: membuat fractal segitiga (Rekursif)

Postingan ini adalah kelanjutan dari postingan sebelumnya Belajar Pemrograman Python: membuat fractal segitiga. Pembahasan kali ini lebih ke arah penggunaan teknik rekursif untuk pemecahan masalah yang sama. (Sebaiknya pelajari terlebih dahulu postingan sebelumnya tentang Belajar Pemrograman Python: membuat fractal segitiga)

Pada postingan sebelumnya terdapat lima (5) buah function utama untuk bisa menggambar (membuat fractal segitiga). kelima function itu adalah:

      triangle_1(some_pen,size)   #untuk membuat segitiga kecil (level 0)
      triangle_2(some_pen,size)   #untuk membuat segitiga lebih besar (level 1)
      triangle_3(some_pen,size)   #untuk membuat segitiga lebih besar (level 2)
      triangle_4(some_pen,size)   #untuk membuat segitiga lebih besar (level 3)
      draw()                      #untuk setting pena dan menjalankan triangle_4

dari kelima function tersebut, Kita akan fokus pada 4 function utama untuk membuat susunan segitiga fractal yaitu triangle+1, triangle_2, triangle_3, dan triangle_4. Perhatikan lagi bahwa function yang dipanggil adalah triangle_4, dan saat triangle_4 dieksekusi maka dia akan memanggil triangle_3, saat triangle_3 dieksekusi maka akan memanggil triangle_2, dan saat triangle_2 dieksekusi akan memanggil triangle_1. 

Dari sini dapat kita pelajari bahwa function triangle_2, triangle_3, dan triangle_4 sangat identik sehingga dapat diringkas menjadi suatu function yang bersifat rekursif. 

Sedangkan triangle_1 adalah sebagai function paling dasar. Oleh karena itu pada saat membuat function rekursif maka triangle_1 akan menjadi bagian paling ujung (stoping, penyetop fungsi rekursif).

Baik, berikut adalah function rekursif (saya namakan fractal) yg sudah Saya buat berdasar function triangle sebelumnya.

def fractal(level,some_pen,size):
    if (level==0):
        some_pen.begin_fill()
        some_pen.right(60)
        for i in range(1,3):
            some_pen.forward(size)
            some_pen.right(120)
        some_pen.forward(size)
        some_pen.end_fill()
    else:
        fractal(level-1,some_pen,size)
        some_pen.right(120)
        some_pen.forward((2**(level-1))*size)
        some_pen.left(60)
        fractal(level-1,some_pen,size)
        some_pen.left(120)
        some_pen.forward((2**(level-1))*size)
        some_pen.right(180)
        fractal(level-1,some_pen,size)
        some_pen.forward((2**(level-1))*size)



function ini memiliki tiga parameter input yaitu level, some_pen, dan size. Kalo dibandingkan dengan function triangle sebelumnya yang hanya dua parameter maka ada satu parameter tambahan yang berbeda yaitu "level". Parameter "level" ini menentukan mau membuat gambar segitiga fraktal sampai level berapa. Dengan catatan level 0 adalah saat hanya menggambar segitiga kecil saja. sebagai contoh dipostingan sebelumnya Saya hanya menggambar segitiga fraktal sampai dilevel 3 atau sampai di triangle_4.

Perhatikan bahwa if (level==0) berisi barisan perintah persis seperti function triangle_1. Karena ini akan menjadi bagian ujung (tidak lagi memanggil function yang lain saat dijalankan).

Sedangkan pada bagian else, berisi barisan perintah yang hampir sama dengan function triangle_2, triangle_3 dan triangle_4. Yang mana "function fractal" ini juga memanggil "dirinya sendiri" pada level yang lebih rendah. Hal ini juga terjadi pada function triangle_4 yang memanggil triangle_3 dan seterusnya.

Dengan menggunakan "function fractal" ini, jika kita ingin membuat segitiga fraktal level 7 misalnya, maka cukup memanggil function ini dengan menyertakan level 7 sebagai input. Tidak perlu membuat function ulang triangle_7, triangle_6, triangle_5, dan seterunya. Sehingga source code lebih ramping dan lebih mudah dibaca. (Pada contoh kasus ini lebih efisien).

Berikut adalah kode lengkapnya:


import turtle

def fractal(level,some_pen,size):
    if (level==0):
        some_pen.begin_fill()
        some_pen.right(60)
        for i in range(1,3):
            some_pen.forward(size)
            some_pen.right(120)
        some_pen.forward(size)
        some_pen.end_fill()
    else:
        fractal(level-1,some_pen,size)
        some_pen.right(120)
        some_pen.forward((2**(level-1))*size)
        some_pen.left(60)
        fractal(level-1,some_pen,size)
        some_pen.left(120)
        some_pen.forward((2**(level-1))*size)
        some_pen.right(180)
        fractal(level-1,some_pen,size)
        some_pen.forward((2**(level-1))*size)

def draw():
    window = turtle.Screen()
    window.bgcolor("red")

    pen = turtle.Turtle()

    pen.penup()
    pen.sety(200)
    pen.pendown()

    pen.shape("turtle")
    pen.color("blue")
    pen.speed(1)

    fractal(5,pen,10)

    window.exitonclick()

draw()
 


Dan berikut adalah hasil runningnya:




Developed by: 
Muhammad Nurul Puji
Project-H

Senin, 10 September 2018

Belajar Pemrograman Python: membuat fractal segitiga

Saat ini banyak sekali media-media pembelajaran online baik gratis maupun berbayar. Nah saat ini Saya mencoba untuk memanfaatkan pembelajaran online melalui Udacity. Udacity menyediakan kursus gratis maupun paket berbayar. Yang akan Saya share di sini adalah salah satu tugas dari kursus "Programming Foundations with Python" di Udacity, kursus ini gratis kok (sejauh ini gratis.hehe). Nah kira-kira salah satu tugasnya adalah membuat program untuk menggambar segitiga sebagai berikut:

Salah satu tugas di Udacity
Sebenernya di forum diskusi yang disediakan sudah ada peserta lain yang share codenya sih, tapi karena agak ribet maka Saya putuskan untuk mencoba menyelesaikan tugas ini sendiri.
Baik, Kalo kita perhatikan maka komponen dasar pembentuk gambar tersebut adalah segitiga kecil berwarna biru. Kemudian segitiga kecil ini disusun sedemikian hingga, sehigga terbentuk segitiga besar. Oiya abaikan gambar kura-kura dibagian atas, karena itu hanya ujung pena untuk menggambar (library yang digunakan adalah turtle). Intinya library ini digunakan untuk menggambar hehe. Lebih detil silahkan pelajari dokumentasi Library turtle.

Pertama gambar segitiga kecil berikut:

segitiga kesatu

Berikut adalah function tiangle_1 untuk menggambar segitiga biru kecil (segitiga kesatu):

 def triangle_1(some_pen,size):
    some_pen.begin_fill()
    some_pen.right(60)

    some_pen.forward(size)
    some_pen.right(120)
    some_pen.forward(size)
    some_pen.right(120)

    some_pen.forward(size)
    some_pen.end_fill()

Penjelasan: Gambar kura-kura menunjukkan pena/bulpoint. Default awalnya adalah pena menghadap ke kanan secara horisontal. Oiya untuk membuat segitiga diperlukan tiga garis. Dalam program ini Saya menggambar dari atas, samping kanan, bawah, samping kiri, dan balik ke atas. 

Karena awalnya pena menghadap ke kanan, maka perlu Saya putar sebesar 60 derajat kekanan (some_pen.right(60)), kemudian pena saya gerakkan sepanjang ukuran yang dikehendaki (some_pen.forward(size)). Sampai sini terbentuk garis samping kanan.

Untuk melanjutkan pergerakan pena membentuk garis dibagian bawah maka pena diputar 120 derajat kekanan (some_pen.right(120)) dan kemudian pena saya gerakkan sepanjang ukuran yang dikehendaki (some_pen.forward(size)). Sampai sini terbentuk garis bagian bawah.

Sekarang saatnya melanjutkan untuk menggambar garis sebelah kiri. Untuk itu maka pena saya putar lagi sebesar 120 derajat kekanan (some_pen.right(120)) dan kemudian pena saya gerakkan sepanjang ukuran yang dikehendaki (some_pen.forward(size)). Sampai sini terbentuk garis samping kiri.

Posisi pena terakhir adalah di bagian puncak atas menghadap ke atas (miring)

Perhatikan dibagian awal terdapat perintah some_pen.begin_fill() dan dibagian akhir terdapat some_pen.end_fill(). Hal ini untuk membuat segitiga terisi dengan warna (biru) ditengahnya.

Sekali lagi perhatikan bahwa terdapat adanya pengulangan kode dibagian tengah, sehingga kode dapat disimplifikasi menggunakan loop. Berikut kode (function) membuat segitiga menggunakan loop:

def triangle_1(some_pen,size):
    some_pen.begin_fill()
    some_pen.right(60)
    for i in range(1,3):
        some_pen.forward(size)
        some_pen.right(120)
    some_pen.forward(size)
    some_pen.end_fill()


Kedua, Gambar susunan segitiga berikut: 

segitiga kedua

Berikut adalah function untuk menggambar segitiga kedua:

def triangle_2(some_pen,size):
    triangle_1(some_pen,size)
    some_pen.right(120)
    some_pen.forward(size)
    some_pen.left(60)
    triangle_1(some_pen,size)
    some_pen.left(120)
    some_pen.forward(size)
    some_pen.right(180)
    triangle_1(some_pen,size)
    some_pen.forward(size) 
Perhatikan bahwa gambar segitiga kedua tersusun dari tiga segitiga kesatu. Secara umum langkahnya adalah membuat segitiga kecil atas, kemudian kanan bawah, kemudian kiri bawah.

sehingga langkah pertama adalah menggambar segitiga atas dengan memanfaatkan function triangle_1:
    triangle_1(some_pen,size)

kemudian memindahkan pena kebagian bawah kanan dari segitiga kesatu (dan juga setelah sampai dibawah, arahkan pena kembali mendatar kearah kanan, karena untuk menggambar segitiga kecil defaultnya adalah pena mendatar kekanan):
    some_pen.right(120)
    some_pen.forward(size)
    some_pen.left(60)  #untuk mengarahkan pena kembali mendatar arah kanan

Kemudian menggambar segitiga kanan bawah dengan memanfaatkan function triangle_1:
    triangle_1(some_pen,size)

kemudian memindahkan pena kebagian bawah kiri dari segitiga kesatu (dan juga setelah sampai dibawah, arahkan pena kembali mendatar kearah kanan, karena untuk menggambar segitiga kecil defaultnya adalah pena mendatar kekanan):
    some_pen.left(120)
    some_pen.forward(size)
    some_pen.right(180) 
#untuk mengarahkan pena kembali mendatar arah kanan

Kemudian menggambar segitiga kiri bawah dengan memanfaatkan function triangle_1:
    triangle_1(some_pen,size)

Untuk memudahkan routing berikutnya maka dibagian akhir, Posisi pena adalah selalu di bagian puncak atas menghadap ke atas (miring):
    some_pen.forward(size)  #untuk memindahkan pena ke puncak atas (miring)


Ketiga, Gambar susunan segitiga berikut:
 
segitiga ketiga

Perhatikan dengan seksama bahwa gambar segitiga kedua tersusun dari tiga segitiga kedua. Secara umum langkahnya adalah membuat segitiga kedua dibagain atas, kemudian kanan bawah, kemudian kiri bawah. Langkah ini sangat mirip dengan langkah pada saat menggambar segitiga kedua.

Jika pada saat menggambar segitiga kedua adalah memanfaatkan segitiga kesatu (triangle_1). Maka untuk menggambar segitiga ketiga ini memanfaatkan segitiga kedua (triangle_2). 

Berikut adalah function untuk menggambar segitiga ketiga:

def triangle_3(some_pen,size):
    triangle_2(some_pen,size)
    some_pen.right(120)
    some_pen.forward(2*size)   #perpindahan masing-masing sisi menjadi dua kali
    some_pen.left(60)
    triangle_2(some_pen,size)
    some_pen.left(120)
    some_pen.forward(2*size)  
#perpindahan masing-masing sisi menjadi dua kali
    some_pen.right(180)
    triangle_2(some_pen,size)
    some_pen.forward(2*size)  
#perpindahan masing-masing sisi menjadi dua kali
 


Keempat, Gambar susunan segitiga berikut:
 
segitiga keempat
Berikut adalah function untuk menggambar segitiga keempat:

def triangle_4(some_pen,size):
    triangle_3(some_pen,size)
    some_pen.right(120)
    some_pen.forward(2*2*size)
    some_pen.left(60)
    triangle_3(some_pen,size)
    some_pen.left(120)
    some_pen.forward(2*2*size)
    some_pen.right(180)
    triangle_3(some_pen,size)
    some_pen.forward(2*2*size)

##pembahasan sama dengan bagian ketiga


Bagian kelima:
Bagian kelima ini adalah bertugas untuk mempersiapkan pena dan memanggil fungsi untuk menggambar (triangle_4). Disini Saya membuat function bernama draw sebagai berikut:

def draw():
    window = turtle.Screen()   #instansiasi screen (aktivasi screen)
    window.bgcolor("red")      #set background screen berwarna merah

    pen = turtle.Turtle()      #instansiasi pena

    pen.penup()                #angkat pena (supaya bisa dipindahkan posisinya)
    pen.sety(100)              #memindahkan posisi pena (optional)
    pen.pendown()              #menurunkan pena (siap untuk menulis/menggambar)

    pen.shape("turtle")        #set bentuk pena (berbentuk kura-kura)
    pen.color("blue")          #set warna pena
    pen.speed(1)               #set kecepatan gerak pena

    triangle_4(pen,20)         #memanggil fungsi triangle_4 untuk menggambar

    window.exitonclick()       #menutup window hanya jika diklik (setelah selesai menggambar)


Bagian keenam:
Dibagian ini Saya tunjukkan secara utuh source codenya. Termasuk import modul turtle. Dan dibagian akhir adalah dengan memanggil function draw().

Berikut source code keseluruhan:

import turtle

def triangle_1(some_pen,size):
    some_pen.begin_fill()
    some_pen.right(60)
    for i in range(1,3):
        some_pen.forward(size)
        some_pen.right(120)
    some_pen.forward(size)
    some_pen.end_fill()

def triangle_2(some_pen,size):
    triangle_1(some_pen,size)
    some_pen.right(120)
    some_pen.forward(size)
    some_pen.left(60)
    triangle_1(some_pen,size)
    some_pen.left(120)
    some_pen.forward(size)
    some_pen.right(180)
    triangle_1(some_pen,size)
    some_pen.forward(size)

def triangle_3(some_pen,size):
    triangle_2(some_pen,size)
    some_pen.right(120)
    some_pen.forward(2*size)
    some_pen.left(60)
    triangle_2(some_pen,size)
    some_pen.left(120)
    some_pen.forward(2*size)
    some_pen.right(180)
    triangle_2(some_pen,size)
    some_pen.forward(2*size)

def triangle_4(some_pen,size):
    triangle_3(some_pen,size)
    some_pen.right(120)
    some_pen.forward(2*2*size)
    some_pen.left(60)
    triangle_3(some_pen,size)
    some_pen.left(120)
    some_pen.forward(2*2*size)
    some_pen.right(180)
    triangle_3(some_pen,size)
    some_pen.forward(2*2*size)

def draw():
    window = turtle.Screen()
    window.bgcolor("red")

    pen = turtle.Turtle()

    pen.penup()
    pen.sety(100)
    pen.pendown()

    pen.shape("turtle")
    pen.color("blue")
    pen.speed(1)

    triangle_4(pen,20)

    window.exitonclick()

draw()


Berikut adalah hasil runningnya:


Dengan menggunakan kode diatas kita juga dapat memodifikasi untuk membuat segitiga serupa yang lebih besar tingkatannya, namun harus menambah kode misal triangle_5, triangle_6, dst. 

Teman-teman juga dapat menyederhanakan koding tersebut dengan teknik rekursif. Dengan teknik rekursif maka akan lebih simple jika kita menginginkan gambar pada tingkat tertentu.

Developed by: 
Muhammad Nurul Puji
Project-H

Cara mengetahui ip address raspberry atau perangkat lain yg terhubung pada wifi yg sama

1. Install nmap [jika belum ada]: sudo apt install nmap 2. Cek ip address komputer (yg akses ke wifi yang sama): ip addr misal hasilnya 192....