Anda di halaman 1dari 23

Tugas 12 PLC dan Mikrokontroller

Nama : INDRA AGRA

BP : 1710911014

1. Isi lah kolom yang masih kosong pada table berikut ini :

Sistem Open Catatan


Operas sourc
i e (gratis) /
Close source
(berbayar)

TinyOS Open source Dirancang untuk perangkat


nirkabel berdaya rendah
Contiki Open source Menghubungkan
mikrokontroler kecil
berbiaya rendah dan berdaya
rendah ke Internet
Raspbian Open source Dirancang untuk Raspberry
Pi, berbasis Linux
Debian

Freescal Open source Dirancang untuk


e MQX mengontrol
sesuatu yang memiliki

elektronika didalamnya

Apache Open source Menghubungkan


myNewt jaring
an internet, Bluetooth,
wifi

Android Open source Dirancang untuk android


Things
Particle Close source Dirancang untuk menciptakan
sesuatu yang inovatif, dan
dapat memanajemen dan
ekstrak data

Ubuntu Close source Menghubungkan rumah pintar,


IoT drone, robot, bahkan sistem
industri
2. Jelaskan perbedaan antara Sistem Operasi Open Source dan Sistem
Operasi Close Source serta kelebihan dan kekurangan masing-
masingnya.

Jawab :

Perangkat lunak sumber terbuka (OSS) didistribusikan di bawah


perjanjian lisensi yang memungkinkan kode komputer untuk
dibagikan, dilihat dan dimodifikasi oleh pengguna dan organisasi
lain atau dalam bahasa yang sedikit lebih ramah pengguna,
perangkat lunak open source tersedia untuk masyarakat umum untuk
digunakan dan dimodifikasi dari desain aslinya secara gratis.
Artinya adalah bahwa perangkat lunak dapat berevolusi dan
diiterasi oleh pengembang lain di mana pun di dunia. Idealnya,
ini berarti bahwa perangkat lunak ditingkatkan dari waktu ke
waktu, tetapi seringkali dapat mengambil banyak liku-liku yang
menarik dengan semua evolusi itu dan dapat mengubah bentuk dan
bentuk seluruhnya sedangkan Perangkat lunak sumber tertutup dapat
didefinisikan sebagai perangkat lunak berpemilik yang
didistribusikan di bawah perjanjian lisensi kepada pengguna resmi
dengan pembatasan modifikasi, penyalinan, dan penerbitan ulang
pribadi atau dalam istilah awam, kode sumber tidak dibagikan
kepada publik untuk dilihat atau diubah oleh siapa pun. Sumber
tertutup adalah kebalikan dari sumber terbuka. Sumber tertutup
sebenarnya adalah jenis pengaturan yang Anda harapkan dari
sebagian besar bisnis, melindungi produk mereka dan ingin
mempertahankan kendali atas merek mereka dan pengalaman pengguna
yang ditawarkan kepada pelanggan mereka. Pikirkan Apple daripada
Android.

2. Perbedaan antara Sistem Operasi Open Source dan Sistem


Operasi Close Source :

a. Inovasi

Perangkat lunak sumber terbuka memberikan banyak fleksibilitas dan


kebebasan untuk mengubah perangkat lunak tanpa batasan. Namun,
inovasi ini mungkin tidak diteruskan ke semua pengguna dan masih
diperdebatkan apakah perubahan yang disesuaikan pada kode sumber
asli dapat membatasi dukungan dan pertumbuhan perangkat lunak di
masa mendatang. Sekali lagi, penyedia perangkat lunak sumber terbuka
sering kesulitan untuk menarik penelitian dan pengembangan berskala
besar.

b.Kegunaan

Kegunaan seringkali menjadi area kritik utama untuk perangkat lunak


open source karena teknologinya umumnya tidak ditinjau oleh ahli
kegunaan dan melayani pengembang daripada sebagian besar pengguna
awam. Panduan pengguna tidak diwajibkan oleh hukum dan karena itu
sering diabaikan. Saat manual ditulis, seringkali manual tersebut
diisi dengan jargon yang sulit untuk diikuti.
Untuk perangkat lunak tertutup atau berpemilik, kegunaan
adalah nilai jual yang tinggi (pikirkan Apple lagi)
karena pengujian kegunaan ahli untuk audiens yang lebih
ditargetkan. Panduan pengguna juga disediakan untuk
referensi langsung dan pelatihan cepat, sementara
layanan dukungan membantu memaksimalkan penggunaan
perangkat lunak. Pengembang dan sistem pihak ketiga juga
dapat menggunakan berbagai mekanisme untuk meningkatkan
perangkat lunak sumber "tertutup".

c.Keamanan

Keamanan open source sering menjadi perhatian bagi perusahaan besar


karena perangkat lunak tidak selalu dikembangkan dalam lingkungan
yang terkendali (begitulah asal mula bencana Panama Papers).

d. Biaya

Salah satu keuntungan utama dari perangkat lunak open source adalah
biaya; namun, bila diterapkan pada Perangkat Lunak Sumber Terbuka,
istilah "gratis" tidak terlalu berkaitan dengan biaya keseluruhan
dan lebih berkaitan dengan kebebasan dari pembatasan.

e. Layanan

Perangkat lunak sumber terbuka bergantung pada komunitas pengguna


daring yang setia dan terlibat untuk memberikan dukungan melalui
forum dan blog, tetapi dukungan ini sering kali gagal memberikan
tanggapan tingkat tinggi yang diharapkan banyak konsumen (dan dapat
diterima dengan perangkat lunak berpemilik) .

3. Cari perbedaan, kelebihan dan kekurangan antara Bahasa C vs


Python.
Jawab:

a. Bahasa C merupakan Bahasa pemrograman yang sangat Powerfull,


efisien dan sangat populer di perangkat keras yang meilki
kemampuan terbatas (memori terbatas / daya pemrosesan) tetapi
agak cukup sulit bagi programmer pemula untuk menguasainya.
Bahasa C Bekerja pada ‘Low Level' yang berarti bawaha bahasa
C langsung berinteraksi dengan baik dengan perangkat keras dan
I / O yang digunakan. Bahasa C membutuhkan Compiler untuk
dapat menterjemahkan code yang ditulis ke bahasa mesin.

Kelebihan Bahasa C :
1. Manipulatif

Bahasa C memiliki kemungkinan untuk memanipulasi data. Hal ini


tentu akan membuat pemrogram bisa memanipulasi data dari
bentuk bit ke byte atau memanipulasi sebuah alamat dari data
atau pointer yang ada.

2. Tersedia hampir di semua jenis komputer

Bahasa C terdapat hampir di semua jenis komputer. Mulai dari


komputer mikro,makro, hingga komputer mini. Ini menjadi salah
satu kelebihan karena bahasa ini menjadi bahasa yang awam
digunakan dan proses mempelajarinya pun menjadi lebih mudah
bagi sebagian pemrogram yang masih pemula.

3. Bersifat Portable

Bahasa C memiliki sifat portable. Portable dalam hal ini


berarti bahwa bahasa C yang ditulis di satu komputer, bisa
dipindahkan di komputer lain tanpa mengotak-atik, atau jika
diperlukan untuk mengotak-atik, tidak muncul kerumitan dalam
memodifikasinya.

4. Banyak Struktur

Bahasa C dilengkapi dengan banyak sekali struktur data dan


pengendalian proses. Bahasa C memiliki struktur bahasa yang
baik sehingga mampu dengan mudah dipelajari dan dapat dengan
mudah pula diketahui kesalahan dari sebuah program. Selain itu
juga memudahkan dokumentasi sebuah program.

5. Lebih mudah dipahami

Bahasa C lebih mudah dipahami. Hal ini memudahkan pemrogram


karena ia tak perlu memahami seluruh komponen komputer secara
utuh. Selain itu, bahasa C ini memiliki orientasi pada masalah
bukan pada mesin. Sehingga jika ditemukan kesalahan pada
program, ia akan lebih cepat menyelesaikannya.

Kekurangan Bahasa C :
1. Terlalu Fleksibel

Bahasa C yang terlalu fleksibel dan memiliki banyak operator


membuat penggunanya kebingungan. Karena saking banyaknya
operator, bagi sebagian orang yang baru pertama kali
menggunakan bahasa C akan kesulitan untuk beradaptasi.

2. Pointer

Dalam bahasa C, pointer adalah satu bagian yang paling penting.


Dalam bagian ini orang yang menggunakan bahasa C bisa
menggunakannya dengan baik dan maksimal. Akan tetapi, banyak
sekali pengguna yang masih belum paham akan kegunaan pointer
dan bagaimana cara menggunakannya.
b. Python adalah bahasa scripting, yang tidak seperti C yang mana
pada python tidak perlu dikompilasi agar program dapat
berjalan. Python adalah bahasa pemrograman yang paling disukai
digunakan pada Raspberry Pi, dan Python sangat mudah
dipelajari dengan dukungan dari komunitas yang besar yang
dapat membantu ketika medapati kendala dalam mempelajari dan
menggunakan python.

Kelebihan Bahasa Python :

1. Mudah dipelajari

Dibanding bahasa pemrograman lain, Phyton relatif lebih mudah


dipelajari. Bahasa ini memiliki sintaks-sintaks yang cukup
sederhana dan gampang dimengerti. Bahasa ini sangat dinamis dan
dibangun berdasarkan tingkat keterbacaan kode yang tinggi.

2. Mudah diaplikasikan

Kelebihan lainnya dari bahasa pemrograman Python adalah


kemudahannya dalam diaplikasikan dalam mengembangkan sebuah
produk, baik itu situs, software, aplikasi situs, maupun video
game.

Selain memiliki keterbacaan kode yang tinggi, sehingga kode


mudah dipahami, bahasa pemrograman ini memiliki library yang
sangat banyak dan luas. Berbagai macam jenis library ini memuat
beragam perlengkapan dan fungsionalitas, sehingga kemudahan
membangun program menjadi salah satu yang ditawarkan oleh
Phyton.

3. Dukung IoT

Bahasa pemrograman Python mendukung ekosistem Internet of


Things (IoT) dengan sangat baik. IoT sedang marak dibicarakan
atau bahkan dikembangkan di kalangan maker. Internet of Things
merupakan sebuah teknologi yang menghubungkan benda-benda di
sekitar kita ke dalam sebuah jaring-jaring yang saling
terhubung.
Bahasa ini menjadi sangat populer, lantaran banyak sistem
dengan Internet of Things yang menggunakan bahasa ini. Terdapat
berbagai macam board yang digunakan menjalankan sistem IoT
menggunakan bahasa pemrograman ini sebagai basisnya, termasuk
Raspberry Pi.

4. Fleksibel

Program yang ditulis menggunakan Python dapat dijalankan di


hampir semua sistem operasi (Unix, Windows, Mac OS X, dll.),
termasuk untuk perangkatperangkat selular.
Melalui mekanisme tertenu, kode Python dapat diintegrasikan
dengan aplikasi yang ditulis dalam bahasa pemograman lain.
Sebagai contoh, kode Python dapat dipanggil dari kode C/C++,
dan begitu juga perkembangan .NET Framework.

5. Meningkatkan produktivitas

Karena memiliki library yang luas dan desain berorientasi objek


yang bersih, penggunaan bahasa pemrograman Python dapat
menunjang produktivitas programer dibanding saat menggunakan
bahasa pemrograman lain seperti Java dan C++.

6. Free dan open source

Tidak hanya dapat diunduh secara gratis, bahasa Python juga


dikembangkan di bawah lisensi open source yang disetujui OSI,
yang berarti bahasa pemrograman ini bebas untuk digunakan,
dikembangkan dan didistribusikan, termasuk untuk tujuan
komersial.

Kekurangan Bahasa Python :

1. Kurangnya dukungan multiprosesor

Multiprocessing adalah bagian penting dalam penulisan aplikasi.


Python memang mendukung multiprocessing, namun mungkin tidak
sefleksibel atau senyaman bahasa lain. Itu sebabnya mungkin
ini dapat sedikit membatasi kamu saat menulis kode.

2. Lebih sedikit developers yang berpengalaman

Saat kamu membuat aplikasi, kamu pasti ingin para developer


paling berpengalaman yang melakukan pekerjaan itu. Namun,
tidak sesederhana itu dengan Python karena tidak banyak ahli
programmer yang menggunakan bahasa ini terutama jika
dibandingkan dengan Java.

3.Tidak ideal untuk memory intensive task

Python adalah bahasa yang dikenal dengan fleksibilitas tipe


datanya. Hal ini membuatnya menghasilkan konsumsi memori yang
cukup tinggi dan menjadi tidak nyaman digunakan untuk memory
intensive task.
4. Kurang populer untuk mobile app development

Python bukan bahasa pemrograman yang populer untuk mobile


development. Hanya sedikit perusahaan yang menggunakan bahasa
pemrograman ini untuk tujuan tersebut. Karena itu kamu juga
akan sulit menemukan developer yang berpengalaman dalam mobile
development yang menggunakan Python.
5. Batasan desain

Python diketik secara dinamis sehingga memiliki banyak batasan


desain. Python bahkan terlihat membutuhkan lebih banyak waktu
pengujian dan kesalahan yang muncul ketika aplikasi akhirnya
dijalankan.

6. Batasan kecepatan

Python sering dikritik karena kecepatannya yang lebih lambat


dibanding bahasa pemrograman yang dikompilasi seperti C atau
C++ karena metode berbeda yang digunakannya untuk menerjemahkan
kode.

4. Jelaskan fungsi-fungsi berikut ini yang umumnya digunakan pada


pemrograman Arduino dan contoh sederhana penggunaannya tiap-tiap
fungsi tersebut.

Jawab :

a. digitalRead()

int ledPin = 13; // LED connected to digital pin 13 int


inPin = 7; // pushbutton connected to digital pin 7 int
val = 0; // variable to store the read value

void setup() {
pinMode(ledPin, OUTPUT); // sets the digital pin 13 as
output // sets the digital pin 7 as
pinMode(inPin, INPUT);
input

}
void loop() { // read the input pin

val = digitalRead(inPin);
Membaca nilai dari pin digital tertentu, high atau low

b. digitalWrite()
void setup() {
pinMode(13, OUTPUT); // sets the digital pin 13 as
output
}
digitalWrite(13, HIGH); // sets the digital pin 13 on
delay(1000); // waits for a second
digitalWrite(13, LOW); // sets the digital pin 13 off
delay(1000); // waits for a second

Tulis nilai high atau low ke pin digital.


}

c. pinMode()

Mengonfigurasi pin yang ditentukan untuk berperilaku sebagai

void setup() {
pinMode(13, OUTPUT); // sets the digital pin 13 as
output
}
digitalWrite(13, HIGH); // sets the digital pin 13 on
delay(1000); // waits for a second
digitalWrite(13, LOW); // sets the digital pin 13 off
delay(1000); // waits for a second

masukan atau keluaran. Lihat Pin Digital Halamanuntuk detail


tentang fungsionalitas pin.
}

d. analogRead()
Membaca nilai dari pin analog yang ditentukan. Papan Arduino berisi
konverter analog ke digital multisaluran 10-bit. Ini berarti akan
memetakan tegangan input antara 0 dan tegangan operasi (5V atau
3.3V) menjadi nilai integer antara 0 dan 1023. Pada Arduino UNO,
misalnya, ini menghasilkan resolusi antara pembacaan: 5 volt / 1024
unit atau , 0,0049 volt (4,9 mV) per unit. Lihat tabel di bawah
untuk pin yang dapat digunakan, tegangan operasi, dan resolusi
maksimum untuk beberapa papan Arduino.

int analogPin = A3; // potentiometer wiper (middle terminal)


connected to analog pin 3
// outside leads to ground and +5V int
val = 0; // variable to store the value read
void setup() {
Serial.begin(9600); // setup serial
}
void loop() { // read the input pin

val = analogRead(analogPin); // debug value


}

e. analogReference()
Mengonfigurasi tegangan referensi yang digunakan untuk masukan
analog (yaitu nilai yang digunakan sebagai bagian atas kisaran
masukan).

f. analogWrite()
Menulis nilai analog (gelombang PWM) ke pin. Dapat digunakan untuk
menyalakan LED pada berbagai kecerahan atau menggerakkan motor
dengan berbagai kecepatan. Setelah panggilan ke analogWrite (), pin
akan menghasilkan gelombang
persegi panjang yang stabil dari siklus tugas yang ditentukan hingga
panggilan berikutnya ke analogWrite () (atau panggilan ke
digitalRead () atau digitalWrite ()) pada pin yang sama.

int ledPin = 9; // LED connected to digital pin 9 int


analogPin = 3;
// potentiometer connected to analog pin
3 // variable to store the read value

void setup() {

pinMode(ledPin, OUTPUT); // sets the pin as output


}
void loop() {
val = analogRead(analogPin); // read the input pin
}

g. delay()

Menjeda program selama jangka waktu (dalam milidetik) yang

int ledPin = 13; // LED connected to digital


pin 13
void setup() { // sets the digital pin as
pinMode(ledPin, OUTPUT);
output
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second

ditentukan sebagai parameter. (Ada 1000 milidetik dalam satu


detik.)
}

h. delayMicroseconds()

Menjeda program selama jangka waktu (dalam mikrodetik) yang


ditentukan oleh parameter. Ada seribu mikrodetik dalam satu
milidetik dan satu juta mikrodetik dalam satu detik.
int outPin = 8; // digital pin 8

void setup() {
pinMode(outPin, OUTPUT); // sets the digital pin as
output
}
digitalWrite(outPin, HIGH); // sets the pin on
delayMicroseconds(50); // pauses for 50 microseconds
digitalWrite(outPin, LOW); // sets the pin off
delayMicroseconds(50); // pauses for 50 microseconds
}

i. micros()

Mengembalikan jumlah mikrodetik sejak papan Arduino mulai


menjalankan program saat ini. Jumlah ini akan melimpah (kembali
ke nol), setelah kira-kira 70 menit. Pada papan Arduino 16 MHz
(misalnya Duemilanove dan Nano), fungsi ini memiliki resolusi
empat mikrodetik (yaitu nilai yang dikembalikan selalu
unsigned long time;

void setup() {
Serial.begin(9600);

}
void loop() {
Serial.print("Time: ");
time = micros();

kelipatan empat). Pada papan Arduino 8 MHz (misalnya LilyPad),


fungsi ini memiliki resolusi delapan mikrodetik.
}

j. millis()

Mengembalikan jumlah milidetik yang berlalu sejak papan Arduino


mulai menjalankan program saat ini. Jumlah ini akan melimpah
(kembali ke nol), setelah kira-kira 50 hari.
unsigned long time;

void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("Time: ");
time = millis();

k. attachInterrupt()

Parameter pertama untuk attachInterrupt () adalah nomor


interupsi. Biasanya Anda harus menggunakan
digitalPinToInterrupt (pin) untuk menerjemahkan pin digital
aktual ke nomor interupsi tertentu. Misalnya, jika Anda

const byte ledPin = 13; const


byte interruptPin = 2;
volatile byte state = LOW;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin),
blink, CHANGE);
}
void loop() {
digitalWrite(ledPin, state);
terhubung ke pin 3, gunakan digitalPinToInterrupt (3) sebagai
parameter pertama untuk melampirkanInterrupt ().
}

l. detachInterrupt()

Mematikan interupsi yang diberikan


m. interrupts()

Mengaktifkan kembali interupsi (setelah dinonaktifkan oleh


noInterrupts (). Interupsi memungkinkan tugas penting tertentu
terjadi di latar belakang dan diaktifkan secara default.
Beberapa fungsi tidak akan berfungsi saat interupsi
dinonaktifkan, dan komunikasi yang masuk dapat diabaikan.
Namun, interupsi
dapat sedikit mengganggu waktu kode, dan mungkin

void setup() {}
void loop() {
noInterrupts();
// critical, time-sensitive code here
interrupts(); // other code here

dinonaktifkan untuk bagian kode yang sangat penting.


}

n. noInterrupts()

Menonaktifkan interupsi (Anda dapat mengaktifkannya kembali


dengan interrupts ()). Interupsi memungkinkan tugas penting
tertentu terjadi di latar belakang dan diaktifkan secara
default. Beberapa fungsi tidak akan berfungsi saat interupsi
dinonaktifkan, dan komunikasi yang masuk dapat diabaikan.
void setup() {}

void loop() {
noInterrupts();
// critical, time-sensitive code here
interrupts(); // other code here
Namun, interupsi dapat sedikit mengganggu waktu kode, dan
mungkin dinonaktifkan untuk bagian kode yang sangat penting.
}

o. Serial

Digunakan untuk komunikasi antara papan Arduino dan komputer


atau perangkat lain. Semua papan Arduino memiliki setidaknya
satu port serial (juga dikenal sebagai UART atau USART), dan
beberapa memiliki beberapa

p. Stream

Stream adalah kelas dasar untuk aliran berbasis karakter dan


biner. Ini tidak dipanggil secara langsung, tetapi dipanggil
setiap kali Anda menggunakan fungsi yang bergantung padanya.
q. abs()

Menghitung nilai absolut sebuah angka.

r. max()

sensVal = max(sensVal, 20); // assigns sensVal to the larger


of sensVal or 20
// (effectively ensuring that it
Menghitung maksimal dua angka.
is at least 20)

s. min() Menghitung minimal


dua angka
sensVal = min(sensVal, 100); // assigns sensVal to the
smaller of sensVal or 100

// ensuring that it never gets

above 100.

t. pow()

Menghitung nilai angka yang dipangkatkan. pow () dapat


digunakan untuk menaikkan angka menjadi pangkat pecahan. Ini
berguna untuk menghasilkan pemetaan nilai atau kurva secara
eksponensial.
z = pow(x, y);

u. sq()

Menghitung kuadrat dari sebuah angka: angka tersebut dikalikan

int input = Serial.parseInt(); // keep other operations


outside the sq function
dengan dirinya sendiri.
int inputSquared = sq(input);

v. sqrt()

Menghitung akar kuadrat dari sebuah angka

Anda mungkin juga menyukai