{"id":339,"date":"2020-02-10T14:28:01","date_gmt":"2020-02-10T07:28:01","guid":{"rendered":"http:\/\/wiki.rdd-tech.com\/?post_type=ht_kb&#038;p=339"},"modified":"2020-03-19T10:44:38","modified_gmt":"2020-03-19T03:44:38","slug":"pengenalan-input-dan-output-pada-mikrokontroler","status":"publish","type":"ht_kb","link":"https:\/\/wiki.rdd-tech.com\/index.php\/knowledge-base\/pengenalan-input-dan-output-pada-mikrokontroler\/","title":{"rendered":"Pengenalan Input dan Output pada Mikrokontroler"},"content":{"rendered":"\n<p><em>Input<\/em> dan <em>output<\/em> pada mikrokontroler dibagi menjadi dua yaitu digital dan analog. Digital merupakan<em> input <\/em>atau <em>output<\/em> yang berisi isyarat biner (1 atau 0; <em>High<\/em> atau <em>Low<\/em>). Sedangkan analog berisi sinyal-sinyal analog, contohnya sinus, PWM, dan lain sebagainya. <\/p>\n\n\n\n<h3 id=\"a-digital-input\" >A. <strong>Digital Input<\/strong><\/h3>\n\n\n\n<p>Seperti yang telah dijelaskan di atas, digital input hanya menerima isyarat biner yakni 1 atau 0; <em>High<\/em> atau <em>Low<\/em>. Isyarat biner 1 berarti tegangan <em>supply<\/em> mikrokontroler (VCC\/VDD) diberikan pada digital input mikrokontroler, tegangan supply ini bisa bervariasi tergantung jenis dan tipe mikrokontrolernya. Isyarat biner 0 berarti tegangan 0 V atau <em>ground <\/em>diberikan pada digital input mikrokontroler. Telah disinggung sebelumnya, bahwa tegangan isyarat biner 1 adalah memberikan tegangan supply mikrokontroler pada digital input dan isyarat biner 0 adalah memberikan <em>ground<\/em> pada digital input. Namun kita juga dapat memberikan <em>logic<\/em> (isyarat biner) dengan cara memberikan tegangan yang spesifik <em>(voltage logic level<\/em>) pada <em>digital input<\/em> mikrokontroler, hal ini tergantung pada jenis mikrokontrolernya (CMOS atau TTL).  <\/p>\n\n\n\n<p>Berikut merupakan<em> voltage logic level<\/em> untuk CMOS dan TTL :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"523\" height=\"241\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/TTL.png\" alt=\"\" class=\"wp-image-340\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/TTL.png 523w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/TTL-300x138.png 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/TTL-50x23.png 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/TTL-320x147.png 320w\" sizes=\"(max-width: 523px) 100vw, 523px\" \/><figcaption>Input dan Output Voltage Level CMOS<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"550\" height=\"231\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/CMOS.png\" alt=\"\" class=\"wp-image-341\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/CMOS.png 550w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/CMOS-300x126.png 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/CMOS-50x21.png 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/CMOS-320x134.png 320w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><figcaption><em>Input<\/em> dan <em>output<\/em> <em>logic voltage level<\/em> CMOS<\/figcaption><\/figure>\n\n\n\n<p>Tiap-tiap jenis dan tipe mikrokontroler memiliki jumlah <em>pin digital input<\/em> yang berbeda-beda. Contohnya seperti mikrokontroler Arduino Uno dan Leonardo memiliki 14 <em>pin <\/em>yang dapat dikonfigurasi menjadi <em>digital input<\/em> atau <em>digital output<\/em>. Sedangkan Arduino Mega memiliki 54 <em>pin<\/em> yang dapat dikonfigurasi menjadi <em>digital input<\/em> atau <em>digital output<\/em>.<\/p>\n\n\n\n<p>Berikut merupakan percobaan pembacaan <em>digital input<\/em> menggunakan mikrokontroler Arduino MKR1000 :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"846\" height=\"252\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/PB_SIMPLE.png\" alt=\"\" class=\"wp-image-852\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/PB_SIMPLE.png 846w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/PB_SIMPLE-300x89.png 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/PB_SIMPLE-768x229.png 768w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/PB_SIMPLE-50x15.png 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/PB_SIMPLE-600x179.png 600w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/PB_SIMPLE-320x95.png 320w\" sizes=\"(max-width: 846px) 100vw, 846px\" \/><figcaption><em>Wiring diagram<\/em><\/figcaption><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/Program Intro Digital Input : Digital Read Serial &amp; LCD\n\/\/RDD-TEAM (14-01-2020)\n\/\/www.rdd-tech.com\n\n#include &lt;Wire.h>\n#include \"DFRobot_RGBLCD.h\"\n\nconst int colorR = 255;\nconst int colorG = 255;\nconst int colorB = 255;\n\nDFRobot_RGBLCD lcd(16,2);\n\nconst int  buttonPin = 7;\nbool buttonState = 0;\n\nvoid setup() \n{\n  Serial.begin(115200);\n  \n  lcd.init();\n  lcd.setRGB(colorR, colorG, colorB);\n  lcd.setCursor(0, 0);\n  lcd.print(\"Button State:\");\n\n  pinMode(buttonPin, INPUT);\n}\n\nvoid loop() \n{\n  buttonState = digitalRead(buttonPin);\n  if (buttonState == 1)\n    {\n      Serial.print(\"Button State: \");\n      Serial.println(\"HIGH\");\n      lcd.setCursor(0, 1);\n      lcd.print(\"HIGH\");\n      lcd.print(\" \");\n    }\n  else\n    {\n      Serial.print(\"Button State: \");\n      Serial.println(\"LOW\");\n      lcd.setCursor(0, 1);\n      lcd.print(\"LOW\");\n      lcd.print(\" \");\n    }\n  delay(1);\n}<\/code><\/pre>\n\n\n\n<p>Program diatas memerintahkan mikrokontroler agar membaca <em>digital input <\/em>pada<em> pin<\/em> 7 dan mencetak hasil pembacaannya pada serial monitor dan LCD.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"768\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_084827_vHDR_Auto-1024x768.jpg\" alt=\"\" class=\"wp-image-854\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_084827_vHDR_Auto-1024x768.jpg 1024w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_084827_vHDR_Auto-300x225.jpg 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_084827_vHDR_Auto-768x576.jpg 768w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_084827_vHDR_Auto-50x38.jpg 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_084827_vHDR_Auto-1536x1152.jpg 1536w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_084827_vHDR_Auto-2048x1536.jpg 2048w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_084827_vHDR_Auto-920x690.jpg 920w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_084827_vHDR_Auto-600x450.jpg 600w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_084827_vHDR_Auto-320x240.jpg 320w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption><em>Wiring<\/em> rangkaian<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"601\" height=\"341\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/1-3.png\" alt=\"\" class=\"wp-image-857\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/1-3.png 601w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/1-3-300x170.png 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/1-3-50x28.png 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/1-3-320x182.png 320w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/><figcaption> Tampilan pada serial monitor ketika <em>push button<\/em> tidak ditekan  <\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"602\" height=\"340\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/2-1.png\" alt=\"\" class=\"wp-image-858\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/2-1.png 602w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/2-1-300x169.png 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/2-1-50x28.png 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/2-1-600x339.png 600w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/2-1-320x181.png 320w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/><figcaption>    Tampilan pada serial monitor ketika <em>push button<\/em> ditekan   <\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/V_20200127_101632_vHDR_Auto1.mp4\"><\/video><figcaption>Tampilan pada layar LCD<\/figcaption><\/figure>\n\n\n\n<h3 id=\"b-analog-input\" >B. <strong>Analog Input<\/strong><\/h3>\n\n\n\n<p>Fenomena fisika alam seperti temperatur, intensitas cahaya, tekanan udara, aliran debit air di sungai, dan lain sebagainya dapat disampling menjadi sinyal-sinyal analog yang bisa dibaca oleh mikrokontroler melalui analog input. Sinyal-sinyal analog ini bersifat kontinu, oleh karena itu mikrokontroler perlu men-diskritkan sinyal-sinyal analog agar dapat diolah olehnya. Komponen pendiskrit sinyal ini (ADC atau <em>Analog to Digital Converter<\/em>) biasanya telah terpasang didalam mikrokontroler. Biasanya resolusi ADC dinyatakan dengan bit. Contohnya 10bit ADC memiliki rentang nilai dari 0 sampai 1023. Jika melakukan pembacaan sinyal dengan nilai maksimal sebesar 5V dan nilai minimal 0V, maka jika diberikan nilai 2.5V mikrokontroler akan membaca <em>analog input<\/em> sebesar 511. Semakin besar resolusi ADC maka sinyal yang terbaca oleh mikrokontroler akan semakin mendekati nilai sebenarnya. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"446\" height=\"358\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/signal.png\" alt=\"\" class=\"wp-image-342\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/signal.png 446w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/signal-300x241.png 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/signal-50x40.png 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/signal-320x257.png 320w\" sizes=\"(max-width: 446px) 100vw, 446px\" \/><figcaption>Sinyal Analog dan Sinyal Diskrit<\/figcaption><\/figure>\n\n\n\n<p>Tiap-tiap jenis dan tipe mikrokontroler memiliki jumlah <em>pin<\/em> <em>analog input<\/em> yang berbeda-beda. Contohnya seperti mikrokontroler Arduino Uno dan Leonardo memiliki 6 <em>pin<\/em> analog input, Arduino Mega memiliki 16 pin analog input, sedangkan Arduino MKR1000 memiliki 7 pin analog input.<\/p>\n\n\n\n<p>Berikut merupakan percobaan pembacaan <em>analog input<\/em> menggunakan mikrokontroler Arduino MKR1000: <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"862\" height=\"258\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Pot_SIMPLE.png\" alt=\"\" class=\"wp-image-861\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Pot_SIMPLE.png 862w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Pot_SIMPLE-300x90.png 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Pot_SIMPLE-768x230.png 768w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Pot_SIMPLE-50x15.png 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Pot_SIMPLE-600x180.png 600w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Pot_SIMPLE-320x96.png 320w\" sizes=\"(max-width: 862px) 100vw, 862px\" \/><figcaption> <em>Wiring diagram<\/em> <\/figcaption><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/Program Intro Analog Input : Analog Read Serial &amp; LCD\n\/\/RDD-TEAM (14-01-2020)\n\/\/www.rdd-tech.com\n#include &lt;Wire.h>\n#include \"DFRobot_RGBLCD.h\"\n\nconst int colorR = 255;\nconst int colorG = 255;\nconst int colorB = 255;\n\nDFRobot_RGBLCD lcd(16,2);\n\nint potPin = A0;\nint potValue = 0;\nfloat potValue_V_1 = 0.00;\nfloat potValue_V = 0.00;\n\n\nvoid setup()\n{\n  Serial.begin(115200);\n  \n  lcd.init();\n  lcd.setRGB(colorR, colorG, colorB);\n  lcd.setCursor(0, 0);\n  lcd.print(\"Pot Value:\");\n  lcd.setCursor(7, 1);\n  lcd.print(\"\/\");\n  lcd.setCursor(15, 1);\n  lcd.print(\"V\");\n\n  analogReadResolution(12); \/\/ADC pada MKR1000 memiliki resolusi max 12bit\n  analogReference(AR_DEFAULT);\n}\n\nvoid loop()\n{\n  potValue = analogRead(potPin);\n  potValue_V_1 = potValue;\n  potValue_V = (potValue_V_1\/4095)*5; \/\/konversi dari nilai ADC ke tegangan\n  \n  Serial.print(4095);\n  Serial.print(\" \");\n  Serial.print(potValue);\n  Serial.print(\" \");\n  Serial.println(0);\n\n  lcd.setCursor(0, 1);\n  lcd.print(potValue);\n  lcd.print(\" \");\n  lcd.setCursor(8, 1);\n  lcd.print(potValue_V);\n  lcd.print(\" \");\n  \n  delay(10);\n}<\/code><\/pre>\n\n\n\n<p>Program diatas memerintahkan mikrokontroler untuk membaca nilai tegangan yang dimasukan pada kaki A0 dengan jeda (<em>delay<\/em>) 10 milidetik tiap pembacaannya. Lalu, mencetak hasilnya pada serial monitor maupun serial plotter dan LCD.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"768\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_105331_vHDR_Auto1-1024x768.jpg\" alt=\"\" class=\"wp-image-862\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_105331_vHDR_Auto1-1024x768.jpg 1024w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_105331_vHDR_Auto1-300x225.jpg 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_105331_vHDR_Auto1-768x576.jpg 768w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_105331_vHDR_Auto1-50x38.jpg 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_105331_vHDR_Auto1-1536x1152.jpg 1536w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_105331_vHDR_Auto1-2048x1536.jpg 2048w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_105331_vHDR_Auto1-920x690.jpg 920w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_105331_vHDR_Auto1-600x450.jpg 600w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_105331_vHDR_Auto1-320x240.jpg 320w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption> <em>Wiring<\/em> rangkaian <\/figcaption><\/figure>\n\n\n\n<p>Setelah potensiometer diputar-putar berikut hasil pembacaan <em>analog input<\/em> yang ditampilkan melalui serial plotter:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"603\" height=\"342\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/1-4.png\" alt=\"\" class=\"wp-image-863\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/1-4.png 603w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/1-4-300x170.png 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/1-4-50x28.png 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/1-4-600x340.png 600w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/1-4-320x181.png 320w\" sizes=\"(max-width: 603px) 100vw, 603px\" \/><figcaption>    Tampilan pada serial plotter<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/V_20200127_105352_vHDR_Auto1.mp4\"><\/video><figcaption>    Tampilan pada layar LCD<\/figcaption><\/figure>\n\n\n\n<h3 id=\"c-digital-output\" >C. <strong>Digital Output<\/strong><\/h3>\n\n\n\n<p>Sama seperti<em> digital input<\/em>, <em>digital output<\/em> hanya dapat mengeluarkan isyarat biner (1 atau 0; <em>High<\/em> atau <em>Low<\/em>. Sinyal <em>digital output<\/em> biasanya digunakan untuk men-<em>drive<\/em> beban yang besar, seperti <em>relay<\/em> yang terhubung dengan motor atau <em>fan<\/em>, <em>power<\/em> MOSFET yang digunakan untuk menyalakan lampu <em>High Powered <\/em>LED (HPL) dan lain sebagainya.<\/p>\n\n\n\n<p>Seperti yang telah dibahas sebelumnya, Arduino Uno dan Leonardo memiliki 14 <em>pin<\/em> digital I\/O (<em>input output<\/em>). 1 <em>pin<\/em> hanya dapat digunakan untuk 1 fungsi saja, misalnya <em>pin<\/em> 13 dikonfigurasi menjadi <em>digital output<\/em> dan tidak bisa dikonfigurasi menjadi <em>digital input<\/em> secara bersamaan.<\/p>\n\n\n\n<p>Berikut adalah percobaan digital output menggunakan mikrokontroler Arduino MKR1000 :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"393\" height=\"350\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Intro_DO-2.png\" alt=\"\" class=\"wp-image-871\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Intro_DO-2.png 393w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Intro_DO-2-300x267.png 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Intro_DO-2-50x45.png 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Intro_DO-2-320x285.png 320w\" sizes=\"(max-width: 393px) 100vw, 393px\" \/><figcaption>  <em>Wiring diagram<\/em>  <\/figcaption><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/Program Intro Digital Output : Running LED \n\/\/RDD-TEAM (14-01-2020)\n\/\/www.rdd-tech.com\n\n#include &lt;Wire.h>\n#include \"DFRobot_RGBLCD.h\"\n\nconst int colorR = 255;\nconst int colorG = 255;\nconst int colorB = 255;\n\nDFRobot_RGBLCD lcd(16,2);\n\nint pin = 0;\nint state;\n\nvoid setup()\n{\n  pinMode(0, OUTPUT);\n  pinMode(1, OUTPUT);\n  pinMode(2, OUTPUT);\n  pinMode(3, OUTPUT);\n\n  Serial.begin(115200);\n  Serial.println(\"Running LED\");\n  \n  lcd.init();\n  lcd.setRGB(colorR, colorG, colorB);\n  lcd.setCursor(0, 0);\n  lcd.print(\"Running Mode:\");\n  \n  state = 1;\n}\n\nvoid loop()\n{\n  if (state == 1)\n    {\n      lcd.setCursor(0, 1);\n      lcd.print(\"Forward    \");\n      Serial.println(\"Forward\");\n      digitalWrite (pin, HIGH);\n      delay(250);\n      digitalWrite (pin, LOW);\n      pin++;\n      if (pin == 3)\n        {\n          state = 2;\n          lcd.print(\" \");\n        }\n     }\n  if (state == 2)\n     {\n      lcd.setCursor(0, 1);\n      lcd.print(\"Reverse   \");\n      Serial.println(\"Reverse\");\n      digitalWrite(pin, HIGH);\n      delay(250);\n      digitalWrite(pin, LOW);\n      pin--;\n      if (pin &lt; 0)\n        {\n          pin =0;\n          state = 3;\n          lcd.print(\" \");\n        }\n     }\n   if (state == 3)\n     {\n      lcd.setCursor(0, 1);\n      lcd.print(\"Center-Back\");\n      Serial.println(\"Center-Back\");\n      digitalWrite(1, HIGH);\n      digitalWrite(2, HIGH);\n      delay(250);\n      digitalWrite(1, LOW);\n      digitalWrite(2, LOW);\n      delay(250);\n      digitalWrite(0, HIGH);\n      digitalWrite(3, HIGH);\n      delay(250);\n      digitalWrite(0, LOW);\n      digitalWrite(3, LOW);\n      delay(250);\n      state = 4;\n      lcd.print(\" \");\n     }\n   if (state == 4)\n     {\n      lcd.setCursor(0, 1);\n      lcd.print(\"Back-Center\");\n      Serial.println(\"back-Center\");\n      digitalWrite(0, HIGH);\n      digitalWrite(3, HIGH);\n      delay(250);\n      digitalWrite(0, LOW);\n      digitalWrite(3, LOW);\n      delay(250);\n      digitalWrite(1, HIGH);\n      digitalWrite(2, HIGH);\n      delay(250);\n      digitalWrite(1, LOW);\n      digitalWrite(2, LOW);\n      delay(250);\n      state = 1;\n      lcd.print(\" \");\n     }\n  else\n     {\n      digitalWrite(0, LOW);\n      digitalWrite(1, LOW);\n      digitalWrite(2, LOW);\n      lcd.print(\" \");\n     }\n}<\/code><\/pre>\n\n\n\n<p>Program diatas memerintahkan mikrokontroler untuk menyalakan dan memadamkan LED yang terpasang pada pin 0 sampai 3 dengan berbagai mode.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"768\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_114556_vHDR_Auto1-1024x768.jpg\" alt=\"\" class=\"wp-image-869\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_114556_vHDR_Auto1-1024x768.jpg 1024w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_114556_vHDR_Auto1-300x225.jpg 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_114556_vHDR_Auto1-768x576.jpg 768w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_114556_vHDR_Auto1-50x38.jpg 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_114556_vHDR_Auto1-1536x1152.jpg 1536w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_114556_vHDR_Auto1-2048x1536.jpg 2048w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_114556_vHDR_Auto1-920x690.jpg 920w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_114556_vHDR_Auto1-600x450.jpg 600w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_114556_vHDR_Auto1-320x240.jpg 320w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption> <em>Wiring<\/em> rangkaian <\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/V_20200127_114615_vHDR_Auto1.mp4\"><\/video><figcaption><em>Running <\/em>LED<\/figcaption><\/figure>\n\n\n\n<h3 id=\"d-analog-output\" >D. <strong>Analog Output<\/strong><\/h3>\n\n\n\n<p><em>Analog output<\/em> adalah kebalikan dari <em>analog input<\/em>, pada <em>analog input<\/em> sinyal yang masuk diubah menjadi sinyal digital oleh ADC. Namun pada analog output sinyal digital diubah menjadi sinyal analog (DAC atau <em>Digital to Analog Converter<\/em>) dengan menggunakan pendekatan PWM (<em>Pulse Width Modulation<\/em>). PWM pada mikrokontroler juga memiliki resolusi sama seperti ADC. Contohnya Arduino Uno, Leonardo, Mega dan MKR1000 memiliki PWM dengan resolusi 8 bit (0 sampai 255).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"717\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Pwm-1024x717.png\" alt=\"\" class=\"wp-image-387\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Pwm-1024x717.png 1024w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Pwm-300x210.png 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Pwm-768x538.png 768w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Pwm-50x35.png 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Pwm-920x644.png 920w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Pwm-600x420.png 600w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Pwm-320x224.png 320w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/Pwm.png 1500w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption><em>Pulse Width Modulation<\/em> (PWM)<\/figcaption><\/figure>\n\n\n\n<p><em>Pin<\/em> PWM pada mikrokontroler Arduino memiliki lambang gelombang disamping marker angka pin. Contohnya seperti pada gambar dibawah ini. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"768\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_120059_vHDR_Auto-1024x768.jpg\" alt=\"\" class=\"wp-image-874\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_120059_vHDR_Auto-1024x768.jpg 1024w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_120059_vHDR_Auto-300x225.jpg 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_120059_vHDR_Auto-768x576.jpg 768w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_120059_vHDR_Auto-50x38.jpg 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_120059_vHDR_Auto-1536x1152.jpg 1536w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_120059_vHDR_Auto-2048x1536.jpg 2048w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_120059_vHDR_Auto-920x690.jpg 920w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_120059_vHDR_Auto-600x450.jpg 600w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_120059_vHDR_Auto-320x240.jpg 320w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption> Pin yang dapat mengeluarkan PWM diberi kotak merah <\/figcaption><\/figure>\n\n\n\n<p>Pada Arduino Uno atau Leonardo ini terdapat 2 frekuensi gelombang PWM yaitu 490Hz dan 980Hz. <em>Pin<\/em> dengan frekuensi 490Hz adalah <em>pin<\/em> 5, 6, dan 9. Sedangkan<em> pin<\/em> dengan frekuensi 980Hz adalah pin 3, 11, dan 13. Namun pada Arduino MKR1000 semua pin PWMnya (pin D2, D3, D4, dan D5) memiliki frekuensi yang sama sekitar 733Hz.<\/p>\n\n\n\n<p>Berikut adalah percobaan<em> analog output<\/em> menggunakan mikrokontroler Arduino MRK1000 : <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"399\" height=\"347\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/AO_SIMPLE.png\" alt=\"\" class=\"wp-image-876\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/AO_SIMPLE.png 399w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/AO_SIMPLE-300x261.png 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/AO_SIMPLE-50x43.png 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/AO_SIMPLE-320x278.png 320w\" sizes=\"(max-width: 399px) 100vw, 399px\" \/><figcaption>   <em>Wiring diagram<\/em>   <\/figcaption><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/Program Intro Analog Output : Fading LED\n\/\/RDD-TEAM (14-01-2020)\n\/\/www.rdd-tech.com\n\n#include &lt;Wire.h>\n#include \"DFRobot_RGBLCD.h\"\n\nconst int colorR = 255;\nconst int colorG = 255;\nconst int colorB = 255;\n\nDFRobot_RGBLCD lcd(16,2);\n\nint ledPin0 = 2; \nint ledPin1 = 3;\nint ledPin2 = 4;\nint ledPin3 = 5;\n\nvoid setup()\n{ \n  lcd.init();\n  lcd.setRGB(colorR, colorG, colorB);\n  lcd.setCursor(0, 0);\n  lcd.print(\"Fading Value:\");\n}\n\nvoid loop()\n{\n  for (int fadeValue = 0; fadeValue &lt;= 255; fadeValue +=5)\n    {\n      analogWrite(2, fadeValue);\n      analogWrite(3, fadeValue);\n      analogWrite(4, fadeValue);\n      analogWrite(5, fadeValue);\n      lcd.setCursor(0, 1);\n      lcd.print(fadeValue);\n      delay(50);\n      lcd.print(\" \");\n    }\n  for (int fadeValue = 255; fadeValue >= 0; fadeValue -=5)\n    {\n      analogWrite(2, fadeValue);\n      analogWrite(3, fadeValue);\n      analogWrite(4, fadeValue);\n      analogWrite(5, fadeValue);\n      lcd.setCursor(0, 1);\n      lcd.print(fadeValue);\n      delay(50);\n      lcd.print(\" \");\n    }\n}<\/code><\/pre>\n\n\n\n<p>Program diatas memerintahkan mikrokontroler untuk menyalakan dan memadamkan LED secara perlahan yang terpasang tiap <em>pin<\/em> PWM.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"768\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_134445_vHDR_Auto-1024x768.jpg\" alt=\"\" class=\"wp-image-878\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_134445_vHDR_Auto-1024x768.jpg 1024w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_134445_vHDR_Auto-300x225.jpg 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_134445_vHDR_Auto-768x576.jpg 768w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_134445_vHDR_Auto-50x38.jpg 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_134445_vHDR_Auto-1536x1152.jpg 1536w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_134445_vHDR_Auto-2048x1536.jpg 2048w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_134445_vHDR_Auto-920x690.jpg 920w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_134445_vHDR_Auto-600x450.jpg 600w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/P_20200127_134445_vHDR_Auto-320x240.jpg 320w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption> <em>Wiring<\/em> rangkaian  <\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/V_20200127_140355_vHDR_Auto1.mp4\"><\/video><figcaption><em>Fading<\/em> LED<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/01\/V_20200127_134635_vHDR_Auto1.mp4\"><\/video><figcaption>Nilai RMS PWM pada osiloskop<\/figcaption><\/figure>\n\n\n\n<p>Pada osiloskop terlihat nilai RMS gelombang berubah bersamaan dengan terang\/redup LED.<\/p>\n","protected":false},"author":4,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0},"ht_kb_category":[4,10],"ht_kb_tag":[24,25,31],"_links":{"self":[{"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/ht_kb\/339"}],"collection":[{"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/ht_kb"}],"about":[{"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/comments?post=339"}],"version-history":[{"count":33,"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/ht_kb\/339\/revisions"}],"predecessor-version":[{"id":1238,"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/ht_kb\/339\/revisions\/1238"}],"wp:attachment":[{"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/media?parent=339"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/ht_kb_category?post=339"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/ht_kb_tag?post=339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}