ahmad aris syaefuddin | 01.38 | | Be the first to comment! | +1














Instruksi Serial dengan Arduino

if(serial)     : untuk memeriksa port serial sudah siap
available()     : memeriksa jumlah bit dalam buffer serial yang telah diterima,
                      hasil (jumlah bit yang telah siapdibaca)
parseint()     : mendapatkan nilai dalam bentuk bilangan bulat, dan melakukan lompatan untuk data yang diterima berupa karakter atau tanda minus. hasil(bilangan bulat bertipe integer)
parsefloat()   : sama dengan parse int, cuma untuk bilangan desimal.
read()     : memebaca data karakter pertama yang diterima sebagai data ASCII.
hasil(byte pertama yang diterima, atau 1 jika tidak ada data yang diterima).
readString() : membaca karakter dari serial buffer dan menyimpannya dalam bentuk string
write() : mengirim data dalam 1 byte (dalam bentuk biner)
print() : mengirim data dalam bentuk karakter ASCII. perbedaannya dengan "write()". perintah ini mempunyai beberapa bentuk pengiriman tipe data tergantung parameter yang diberikan
Serial.Print(78,BIN) memberikan "1001110"
Serial.Print(78,OCT) >> 116
Serial.Print(78,DEC) >> 78
Serial.Print(78,HEX) >> 4E
Serial.Print(1.2345,0) >> 1
Serial.Print(1.2345,2) >> 1,23
Serial.Print(1.2345,4) >> 1.2345

Perbedaan Serial.read() dengan Serial.readString adalah tipe data yang akan disimpan oleh perintah tersebut.
jika Serial.read() memabaca data sebagai karakter ASCII dan menyimpannya dalam bentuk integer, maka
Serial.readString memebaca data yang diterima sebagai karakter ASCII dan menyimpannya dalam bentuk string.

contoh.1 penggunaan Serial.readString


string kalimat;

void setup()
{ Serial.begin(9600);
while(!Serial){;}; //menunggu port serial siap
}



Void Loop()
{ if(Serial.available()>0)
{ while(Serial.available()>0)
{ kalimat= Serial.readString();
Serial.println(kalimat)
}
}
}

contoh.2 penggunaan Serial.read

int angka;

void setup()
{ Serial.begin(9600);
while(!Serial){;}; //menunggu port serial siap
}

Void Loop()
{ if(Serial.available()>0)
{ angka= Serial.read();
Serial.println(angka)
}
}

Skema Sensor Pintu Otomatis + Software dengan AVR Studio 5





ahmad aris syaefuddin | 05.20 | In | 3 Comments so far | +1








Assalamu'alaikum rekan,
Kali ini saya mencoba membuat skema rangkaian sensor pintu otomatis yang dikontrol dengan Atmega 8535 beserta bahasa C untuk pemrograman Atmeganya..


berikut adalah gambar skemanya :


plan pcbnya seperti ini :


dan perkiraan jadinya seperti  ini :


dan yang terakhir adalah bahasa C untuk Atmega 8535 :
/*
 * firmware_kontrol_pintu_otomatis.c
 *
 * Created: 29/01/2015 6:18:27
 *  Author: ahmad
 */ 

#include <avr/io.h>
#include <avr/delay.h>

int main(void)
{
 DDRA=0x00;
 DDRB=0xff;
 PORTA=0xff;
 PORTB=0xff;
 unsigned char keadaan; 
    while(1)
ulang:
    {
        keadaan = PINA;
if((bit_is_clear(PINA,0)) || (bit_is_clear(PINA,1)))
goto pintu_open;
else
goto bebas;
    }
pintu_open:
keadaan|=0xff;
PORTB=keadaan;
_delay_ms(500);
goto ulang;
bebas:
keadaan=~keadaan;
PORTB=keadaan;
goto ulang;
}


untuk mendapatkan file saya, silakan klik di sini.

terimakasih untuk kunjungannya, kritik dan saran sangat saya harapkan...

Transformasi-z dan simulasi dengan Delphi





ahmad aris syaefuddin | 01.11 | | Be the first to comment! | +1





(Solve LTI systems using Z - Transform and how to generate this algorithm in Delphi language)


Mari kita mencoba menyelesaikan LTI sistem dengan transformasi-z, kemudian membuat algoritmanya dengan bahasa Delphi.

Cara menyelesaikan sistem LTI dangan transformasi-Z  


Dibawah ini adalah kode script yang saya buat dengan menggunakan bahasa Delphi :

procedure TForm1.BitBtn_generateClick(Sender: TObject);
var
    frek_respon   :array[0..100] of real;
    frek_respon_db:array[0..100] of real;
    phase_respon  :array[0..100] of real;
    frequence     :array[0..100] of real;
    freq_sampling :real;
    angel         :real;
    rad           :real;
    rad_limit     :real;
    i             :integer;
begin
    //clear the chart
    chart1.Series[0].Clear;
    chart1.Series[1].Clear;
    chart2.Series[0].Clear;
    chart3.Series[0].Clear;
    chart3.Series[0].Clear;

    //generate the magnitude frequency respons
    rad_limit:=strtofloat(edit_rad_limit.Text);
    rad:=0;
    i:=0;
    repeat
        frek_respon[i]:=1/(sqrt(sqr(1+0.5*cos(pi*rad)+0.2*cos(2*pi*rad))+sqr(-0.5*sin(pi*rad)-0.2*sin(2*pi*rad))));
        chart1.Series[0].AddXY(i,frek_respon[i],'');
        chart1.Series[1].AddXY(i,frek_respon[i],'');
        i:=i+1;
        rad:=rad+0.25;
    until rad>rad_limit;

    //generate the magnitude frequency respons in Decibels
    rad:=0;
    i:=0;
    repeat
        frek_respon_db[i]:=20*math.LogN(10,frek_respon[i]);
        chart3.Series[0].AddXY(i,frek_respon_db[i],'',clblue);
        i:=i+1;
        rad:=rad+0.25;
    until rad>rad_limit;

    //generate phase respons
    rad:=0;
    i:=0;
    repeat
        angel:=arctan((-0.5*sin(rad))-(0.2*sin(2*rad))/(1+0.5*cos(rad)+0.2*cos(2*rad)));
        phase_respon[i]:=radtodeg(angel);
        chart4.Series[0].AddXY(i,phase_respon[i],'',clyellow);
        i:=i+1;
        rad:=rad+0.25;
    until rad>rad_limit;

    //generate frequence
    rad:=0;
    i:=0;
    freq_sampling:=strtofloat(edit_freq_sampling.Text);
    repeat
        frequence[i]:=(rad/2)*freq_sampling;
        chart2.Series[0].AddXY(i,frequence[i],'',clgreen);
        i:=i+1;
        rad:=rad+0.25;
    until rad>rad_limit;
end;




untuk aplikasi delphinya silakan download di sini
Demikian, kritik dan saran sangat saya harapkan

Bahasa C untuk Aproksimasi Integral dengan teknik komputasi





ahmad aris syaefuddin | 22.27 | In | 1 Comment so far | +1




   
    Untuk menghitung integral dengan bahasa pemrograman, terlebih dahulu kita mengubah bentuk matematis dari integral menjadi bentuk komputasi. 
    Cara tersebut akan kita bahas dalam posting kali ini.



1.     Aproksimasi Integral dengan cara matematika





Untuk meng-aproksimasi luas daerah A, yang dibatasi oleh kurva y=f(x), sumbu x dan ordinat x1=a, dan x2=b diberikan oleh persamaan :

Permasalahan.1
Misalkan diketahui  y=x2 dengan ordinat x1=2 dan x2=4, carilah luas daerah yang dibatai oleh kurva f(x), dan ordinat x.
→ Penyelesaian matematis :


        2.    Aproksimasi Integral dengan teknik komputasi

Salah satu metode komputasi yang dapat digunakan untuk meng-aproksimasi nilai integral seperti permasalahan diatas dapat dituliskan dengan :
                             

Misalkan diberikan permasalahan yang sama seperti diatas,  y=x2 dengan ordinat x1=2 dan x2=4 dan kita disuruh menentukan luas daerah yang dibatasi oleh kurva f(x), dan ordinat x. Bila diberikan nilai   delta x=0,01
Maka dapat dituliskan persamaannya sebagai berikut :


        3. Program untuk menghitung Integral dengan bahasa C

Algoritma untuk mensimulasikan persamaan komputasi diatas, dapat dilakukan dengan menggunakan bahasa C.

Ini melibatkan fungsi header stdio.h untuk mengakses librarry yang berhubungan dengan input output dan header math.h untuk mengakses librarry operasi matematis.  

Kode selengkapnya dapat dilihat dibawah :

#include <stdio.h>
#include <math.h>
float f_x(float x);
main()
{
     float integral;
     float x1;
     float x2;
     float dx;
    
     printf("Aproksimasi Integral dengan teknik komputasi\n");
     printf("Oleh : Ahmad Aris Syefudin, NIM: 123600012\n");
     printf("\nMasukan x1     : ");
     scanf("%f",&x1);
     printf("Masukan x2     : ");
     scanf("%f",&x2);
     printf("Masukan delta x: ");
     scanf("%f",&dx);
    
     do
     {
          integral=integral+(f_x(x1)*dx);
          x1=x1+dx;
                  
     }
     while (x1<=x2);
     printf("\nnilai integral=%f\n",integral);
     scanf("");        
}
float f_x(float x)
{
     return pow(x,2);
}




 Gbr. 1. Hasil eksekusi program

~~~~Terima kasih~~~