Twitter Delicious Facebook Digg Stumbleupon Favorites More

Selasa, 16 Juni 2015

Controlling car by light using Arduino + L293 +LDR (Pengendalian mobil dengan cahaya menggunakan Arduino + L293 + LDR)


IC L293 adalah IC Quadruple Half H Driver yang dapat digunakan sebagai driver 2 arah  untuk arus yang cukup besar (1A, untuk tipe L293D maks 600mA). datasheet ICL293 dapat diunduh disini .
Sebagaimana kita ketahui bahwa pin digital Arduino (umumnya) hanya bisa meng handle arus sekitar 40 mA, sehingga untuk menggerakan motor DC, stepper Motor, ataupun beban lainnya yang memerlukan arus besar perlu driver.
Tulisan ini menjelaskan cara menggerakan motor DC (asumsi motor DC 5V dengan konsumsi arus di bawah 500mA) dengan menggunakan IC L293 pada Arduino. Dengan formasi Biderectional Motor Control (informasi lanjut lihat data sheet) ,satu IC L293 dapat mengendalikan 2 motorDC dan masing2 motor dapat dikendalikan pada dua arah  (bidirectional) putaran (ClockWise atau CounterClockWise), dan arah putaran dapat dianalogikan sebagai maju dan mundur.
Berikut ini dibuat suatu aplikasi  Kendali 2 motor DC untuk maju ,berhenti dan mundur yang ditentukan oleh kekuatan cahaya, bila cahaya cukup, motor tidak bergerak (berhenti),  bila terang, motor bergerak kearah tertentu (maju) dan  bila  gelap, motor bergerak kearah yg berlawanan (mundur).Sensor cahaya yang digunakan adalah LDR yang dihubungan ke analog input (A0) dan secara sederhana dalam tulisan ini pembagian daerah kerja sensor thd respon cahaya dibagi 3 daerah yaitu daerah gelap (nilai sensor 0-341), daerah cukup cahaya (342-682) dan daerah terang (683-1023), artinya pada program variabel batasbawah=341 dan batasatas=682;  Tentu saja untuk nilai daerah kerja (batasbawah dan batasatas) yang sebenarnya thd lingkungan anda buat harus disesuaikan dengan kondisi cahaya setempat.



 (dalam percobaan ini menggunakan parameter batasbawah=700 dan batasatas=860)

demo video




Skema rangkaian



List Program:

/*
 Kendali 2 motor DC untuk maju ,berhenti dan mundur 
 yang ditentukan oleh kekuatan cahaya
 bila cahaya cukup motor tidak bergerak (berhenti)
 bila terang, motor bergerak kearah tertentu (maju) dan
 bila  gelap, motor bergerak kearah yg berlawanan (mundur)
 Motor 1 dan Motor 2 dihubungkan ke IC L293 (lihat skema)
 sensor menggunakan 1 buah LDR sambung ke pin A0 dan Vcc
 pin A0 ke ground pasang R = 10KOhm
 Oleh : Aan Darmawan
 Blog : http://valfa.blogspot.com
 Date : 14 Februari 2011  */

const int batasbawah=341;
const int batasatas=682;
// set batas atas dan bawah (threshold) dibagi 3 daerah sama rata
// (0-341) gelap, (342-682) cukup, (683-1023)terang
// nilai batas atas dan bawah ini bisa diubah sesuai dengan kondisi cahaya

int s1; // variabel untuk sensor

void setup() {                
  pinMode(2,OUTPUT);  // kendali motor 1
  pinMode(3,OUTPUT);  // motor 1 +
  pinMode(4,OUTPUT);  // motor 1 -
  pinMode(5,OUTPUT);  // kendali motor 2
  pinMode(6,OUTPUT);  // motor 2 +
  pinMode(7,OUTPUT);  // motor 2 - 
}
void maju(void){
  digitalWrite(2,LOW);
  digitalWrite(5,LOW);     
  delayMicroseconds(100);
  digitalWrite(3,LOW);
  digitalWrite(4,HIGH);     
  delayMicroseconds(100);
  digitalWrite(6,LOW);
  digitalWrite(7,HIGH);     
  delayMicroseconds(100);
  digitalWrite(2,HIGH);
  digitalWrite(5,HIGH);     
  delayMicroseconds(200);
}

void mundur(void){
  digitalWrite(3,HIGH);
  digitalWrite(4,LOW);     
  delayMicroseconds(100);
  digitalWrite(6,HIGH);
  digitalWrite(7,LOW);     
  delayMicroseconds(100);
  digitalWrite(2,HIGH);
  digitalWrite(5,HIGH);     
  delayMicroseconds(200);
}        

void henti(void){
  // berhenti
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);     
  delayMicroseconds(100);
  digitalWrite(6,LOW);
  digitalWrite(7,LOW);     
  delayMicroseconds(100);
  digitalWrite(2,LOW);
  digitalWrite(5,LOW);     
  delayMicroseconds(200);
}

// main program 
void loop() {
  s1=analogRead(A0);  // ambil nilai dr sensor LDR
  if(s1<=batasbawah) { //mundur 
    mundur();
  }
  if(s1>batasbawah && s1<=batasatas) { // berhenti
    henti();
  }
  if(s1>batasatas) { //maju
    maju();
  }
  delay(10);              // tunggu 10 mdetik
}

Jumat, 08 Mei 2015

SJF Preemptiv

PENDAHULUAN
Penjadwalan merupakan kumpulan kebijaksanaan dan mekanisme di sistem operasi yang berkaitan dengan urutan kerja yang dilakukan sistem komputer. Penjadwalan bertugas memutuskan proses yang harus berjalan dan kapan atau berapa lama proses itu berjalan.
Penjadwalan proses merupakan basis sistem operasi multiprogramming. Dengan mengalih–alihkan pemroses di antara proses–proses yang ada, sistem operasi membuat sistem komputer menjadi lebih produktif dan efisien. Sasaran multiprogramming adalah mempunyai proses yang berjalan (dieksekusi) disetiap waktu untuk memaksimumkan utilitasi pemproses.

Jenis-jenis algoritma penjadwalan:
1.  Nonpreemptive, menggunakan konsep :
a. FIFO (First In First Out) atau FCFS (First Come First Serve)
b. SJF (Shortest Job First)
c. HRN (Highest Ratio Next)
d. MFQ (Multiple Feedback Queues)
2.  Preemptive, menggunakan konsep :
a. RR (Round Robin)
b. SRF (Shortest Remaining First) / PSJF (Preemptive Shortest Job First)
c. PS (Priority Schedulling)
d. GS (Guaranteed Schedulling)
 
Penjadwalan preemptive
Proses diberi jatah waktu oleh pemroses, maka pemroses dapat diambil alih proses lain, sehingga proses disela sebelum selesai dan harus dilanjutkan menunggu jatah waktu pemroses tiba kembali pada proses itu.
Penjadwalan secara preemptive baik tetapi harus dibayar mahal. Peralihan proses memerlukan overhead (banyak tabel yang dikelola). Supaya efektif, banyak proses harus berada di memori utama sehingga proses-proses tersebut dapat segera running begitu diperlukan.
Sistem operasi yang menerapkan penjadwalan Preemptive
·         Linux 2.6,
·         Windows 95
·         Windows XP
·         Unix
·         AmigaOS
·         MacOS
·         Windows NT 


b. Preemptive
Proses akan di-preemptive jika ada proses masuk, dah penjadwalan dilakukan ulang dengan membandingkan proses yang masuk dengan proses yang sedang dijalankan. Sebagai contoh pada tabel ketika P1 dijalankan dengna membutuhkan 8 ms, akan tetapi datang burst dari proses P2 dengan burst time 4 ms pada deti ke-1. Proses akan berhenti pada detik 1 kemudian membandingkan proses P1 dengan P2. Karena P2 < P1 maka proses P1 akan dikembalikan ke ready queue dengan P1 = 7 dan memproses P2. Demikian seterusnya.
Gant chart :

Waiting Time P1 = 0 + (10-1) = 9
Waiting Time P2 = 1-1 = 0
Waiting Time P3 = 17-2 = 15
Waiting Time P4 =  5-3 = 2
Average Waiting Time = (9 + 0 + 15 + 2 )/4 =  6.5 ms


Shortest Remaining First (SRF)
Kelemahan
·         Mempunyai overhead lebih besar dibanding SJF. PSJF perlu penyimpanan waktu  layanan yang telah dihabiskan job dan kadang-kadang harus menangani peralihan.
·         Tibanya proses-proses kecil akan segera dijalankan.
·         Job-job lebih lama berarti dengan lama dan variasi waktu tunggu lebih lama dibanding pada SJF.
·         SRF perlu menyimpan waktu layanan yang telah dihabiskan , menambah overhead. Secara teoritis, PSJF memberi waktu tunggu minimum tetapi karena overhead peralihan, maka pada situasi tertentu SFJ bisa memberi kinerja lebih baik dibanding PSJF.

Misalnya ada 2 buah proses yang datang berurutan yaitu P1 dengan arrival time pada 0.0 ms dan burst time 10 ms, P2 dengan arrival time pada 2.0 ms dan burst time 2 ms.
Process
Arrival Time
Burst Time
P1
0.0
10
P2
2.0
2
Capture
waiting time PSJF nya :
P1 = 0 + ( 4 ms – 2 ms ) = 2 ms
P2 = 0
Average waiting time : (2 ms + 0 ms ) / 2 = 2 ms
Average turn around : (12 ms + 0 ) / 2 = 12 ms

Tabel Solusi
Process
Arrival Time
Burst Time
Waktu Mulai
Waktu selesai
Waiting Time
Turn Around
P1
0
10
0
12
2
12
P2
2
2
0
4
0
0
Average
2
12


QUESTION
PERBEDAAN SHORT JOB FIRST DAN PREEMPTIVE SJF
Pada PSJF,  proses dengan sisa waktu jalan diestimasi terendah dijalankan, termasuk proses-proses yang baru tiba.Pada SJF, begitu proses dieksekusi, proses dijalankan sampai selesai.Pada PSJF, proses yang sedang berjalan (running) dapat diambil alih proses baru dengan sisa waktu jalan yang diestimasi lebih rendah.


keuntungan Penjadwalan Preemptive 
yaitu sistem lebih responsif daripada sistem yang memakai penjadwalan Non Preemptive.


Penjadwalan Preemptive  mempunyai arti kemampuan sistem operasi untuk memberhentikan sementara proses yang sedang berjalan untuk memberi ruang kepada proses yang prioritasnya lebih tinggi. Penjadwalan Preemptive memungkinkan sistem untuk lebih bisa menjamin bahwa setiap proses mendapat sebuah slice waktu operasi. Dan juga membuat sistem lebih cepat merespon terhadap event dari luar (contohnya seperti ada data yang masuk) yang membutuhkan reaksi cepat dari satu atau beberapa proses. Membuat penjadwalan yang Preemptive mempunyai .

[TUTORIAL] Mengontrol LED dengan Android menggunakan Arduino dan Bluetooth Module

   [TUTORIAL] Mengontrol LED dengan Android menggunakan Arduino dan Bluetooth Module

Pada sesi kali ini saya akan menerangkan cara untuk menyalakan LED dengan menggunakan Android.
Langsung saja cekidot..

Yang dibutuhkan :
1.                  Arduino Uno
2.                  LED
3.                  Bluetooth Module
4.                  Resistor 330 Ohm
5.                  Breadboard
6.                  Kabel Jumper
7.                  dan jangan lupa HP yang bagus :D
Langkah langkahnya yaitu

·                     Susun rangkaian sebagai berikut
Disini saya menggunakan 2 LED (bebas warnanya), jika ingin menggunakan 1 LED saja juga tidak masalah.
·                     Setelah itu buka program Arduino, jika belum punya bisa download di sini
·                     Unduh scriptnya di sini
#define digital 10
#define analog 11
#define maksimum 255
#define duwur 3
#define cendak 2
void setup()
{
  Serial.begin(9600);
  Serial.flush();
}
void loop()
{
  Serial.flush();
 
  int perintah = 0;
  int nomor = 0;
  int value = 0;
 
  if (Serial.available() < 1) return;
 
  perintah = Serial.parseInt();
  nomor = Serial.parseInt();
  value = Serial.parseInt();
 
  if (perintah == digital)
  {
    if (value == cendak) value = LOW;
    else if (value == duwur) value = HIGH;
    else return;
    set_digitalwrite (nomor, value);
    return;
  }
 
  if (perintah == analog)
  {
    analogWrite (nomor, value);
    return;
  }
}
void set_digitalwrite(int nomor, int value)
  {
    switch (nomor)
    {
    case 13:
      pinMode(13, OUTPUT);
      digitalWrite(13, value); 
      break;
   
    case 12:
      pinMode(12, OUTPUT);
      digitalWrite(12, value);  
      break;
   
    case 11:
      pinMode(11, OUTPUT);
      digitalWrite(11, value);         
      break;
   
    case 10:
      pinMode(10, OUTPUT);
      digitalWrite(10, value);        
      break;
   
    case 9:
      pinMode(9, OUTPUT);
      digitalWrite(9, value);        
      break;
   
    case 8:
      pinMode(8, OUTPUT);
      digitalWrite(8, value);        
      break;
    case 7:
      pinMode(7, OUTPUT);
      digitalWrite(7, value);        
      break;
     
    case 6:
      pinMode(6, OUTPUT);
      digitalWrite(6, value);        
      break;
 
    case 5:
      pinMode(5, OUTPUT);
      digitalWrite(5, value);
      break;
 
    case 4:
      pinMode(4, OUTPUT);
      digitalWrite(4, value);        
      break;
 
    case 3:
      pinMode(3, OUTPUT);
      digitalWrite(3, value);        
      break;
 
    case 2:
      pinMode(2, OUTPUT);
      digitalWrite(2, value);
      break;     
    }
}    

·                     Klik Tools > Board > klik Arduino Uno
·                     Klik Verify
·                     Koneksikan Arduino dengan PC/Laptop
·                     Klik Upload
Jika terdapat tulisan seperti ini

Cabut kabel Jumper yang menghubungkan Bluetooth Module dengan VCC dan GROUNDKemudian klik Upload, dan pasang kembali VCC dan GROUND-nya
·                     Disini saya menggunakan aplikasi ArduDroid yang bisa didapat gratis di PlayStore, untuk linknya ada di sini
·                     Setelah terinstall pada Android, jalankan aplikasinya
·                     Koneksikan Smartphone dengan Bluetooth Module, caranya klik Menu > Connect me to a Bluetooth device
·                     Pair-kan Smartphone dengan Bluetooth Module (untuk PIN standard nya 0000 atau 1234)
·                     Selamat Mencoba :) 
Twitter Facebook Google Plus Instagram RSS Feed Email

Yang Meng-KEPO

Flag Counter
Blog ini dibuat untuk men-sharing. Copy-Paste masih di perbolehkan asal mencantumkan sumber URL :). Diberdayakan oleh Blogger.
Copyright © = = = 9 I M M 6 = = = | Powered by Blogger
Design by SimpleWpThemes | Blogger Theme by NewBloggerThemes.com