Translate

Membuat Audiometer / Audiometri dan Mengakses GLCD Graphic ST7920 Dengan Arduino Untuk Audiometri

Membuat Audiometer / Audiometri dan Mengakses GLCD Graphic ST7920 Dengan Arduino Untuk Audiometri / Audiometer


        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara mengakses GLCD ST7920 dengan Arduino yang digunakan untuk menampilkan nilai dari nilai frekuensi dan intensitas suaranya, alat ini bertujuan untuk audiometri yaitu alat ukur untuk mendeteksi apakah pasien menderita penyakit pada pendengarannya ataukah tidak, alat ini memiliki fitur bisa merubah frekuensi dari 250 Hz sampai 8000 Hz. penampil yang digunakan adalah GLCD ST7920. sensor intensitas suara yang dipakai bisa FC04 atau sensor suara yang lain yang umum digunakan untuk Arduino. untuk lebih jelasnya berikut adalah program dan skemanya.






a. Arduino Mega





b. GLCD ST7920






c. Sensor Suara





d. Headset 






e. Program Arduino TEST GLCD

#include "U8glib.h" 

//Utilize a linha abaixo para utilizar a comunicacao serial
//(Enable, RW, RS, RESET)
//U8GLIB_ST7920_128X64_1X u8g(2, 3, 4 ,5);

//Utilize a linha abaixo para utilizar a comunicacao paralela (8 bits)
//(d0, d1, d2, d3, d4, d5, d6, d7, en, di, rw, reset)
U8GLIB_ST7920_128X64_1X u8g(6, 7, 8, 9, 10, 11, 12, 13, 2, 4, 3, 5);

int display = 1; 
  
void u8g_prepare()

  u8g.setFont(u8g_font_6x10); 
  u8g.setFontRefHeightExtendedText(); 
  u8g.setDefaultForegroundColor(); 
  u8g.setFontPosTop(); 

  
void u8g_Tela1()  //Tela 1 - Arduino e Cia - Retangulos 
{
  u8g.setFont(u8g_font_unifont); 
  u8g.drawStr( 11, 35, "YANUAR M"); 
  u8g.drawStr( 12, 35, "YANUAR M");
  u8g.drawFrame(0,0,128,64); 
  u8g.drawFrame(2,2,124,60);  

  
void u8g_Tela2() //Tela 2 - Linhas horizontais e verticais
{
  for (int i = 0; i<127 ; i=i+2)
  {
    u8g.drawLine(i,0,i,64);
  }
  for (int c = 0; c<64 ; c=c+2)
  {
    u8g.drawLine(0,c,128,c);
  }


void u8g_Tela3() //Tela 3 - Arduino e Cia - Retangulo preenchido 
{
  u8g.setFont(u8g_font_unifont); 
  u8g.drawBox(0,0,128,64); 
  u8g.drawBox(2,2,124,60);  
  u8g.setColorIndex(0); 
  u8g.drawStr( 11, 35, "YANUAR M"); 
  u8g.drawStr( 12, 35, "YANUAR M"); 
  u8g.drawFrame(2,2,124,60); 
}  
  
void draw() //Rotina Desenho 
{
  u8g_prepare(); 
  switch(display) //Carrega a tela correspondente 
  {
   case 1: 
    u8g_Tela1(); 
    break; 
   case 2: 
    u8g_Tela2(); 
    break; 
   case 3: 
    u8g_Tela3(); 
    break; 
  } 

  
void setup()

  // assign default color value 
  if ( u8g.getMode() == U8G_MODE_R3G3B2 )  
   u8g.setColorIndex(255);   // white 
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) 
   u8g.setColorIndex(1);     // max intensity 
  else if ( u8g.getMode() == U8G_MODE_BW ) 
   u8g.setColorIndex(1);     // pixel on 

  
void loop()


  for (display =1; display < 4; display++) 
  { 
    u8g.firstPage();  
    do
    { 
    draw(); 
    }
    while( u8g.nextPage() ); 
    delay(3000); 
  } 
}    





f. Program Arduino Audiometri

#include "U8glib.h" 
#include <PWM.h>

//Utilize a linha abaixo para utilizar a comunicacao serial
//(Enable, RW, RS, RESET)
//U8GLIB_ST7920_128X64_1X u8g(2, 3, 4 ,5);

//Utilize a linha abaixo para utilizar a comunicacao paralela (8 bits)
//(d0, d1, d2, d3, d4, d5, d6, d7, en, di, rw, reset)
U8GLIB_ST7920_128X64_1X u8g(6, 7, 8, 9, 10, 11, 12, 13, 2, 4, 3, 5);

int display = 1; 
char tmp_string[8];
char tmp_string2[8];
int dataadc;   
int pwmpin = 46;        
int duty = 125;         // nilai duty cycle
int button;
int frek = 150;


void draw() 
{
  //konversi ke string
  //dtostrf(dataadc, 4, 2, tmp_string);
  itoa(dataadc,tmp_string,8);
  itoa(frek,tmp_string2,8);
 
  //pilih font
  u8g.setFont(u8g_font_u8glib_4);
  //u8g.setFont(u8g_font_profont11);
  //u8g.setFont(u8g_font_unifont);
 
  //x,y
  u8g.drawStr( 0, 4, "FREK= ");  
  u8g.drawStr( 27, 4, tmp_string2);
  u8g.drawStr( 0, 10, "DB= ");  
  u8g.drawStr( 27, 10, tmp_string);
 

  
void setup()

 
  pinMode(14,INPUT);
  digitalWrite(14,HIGH);
   
  // assign default color value 
  if ( u8g.getMode() == U8G_MODE_R3G3B2 )  
   u8g.setColorIndex(255);   // white 
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) 
   u8g.setColorIndex(1);     // max intensity 
  else if ( u8g.getMode() == U8G_MODE_BW ) 
   u8g.setColorIndex(1);     // pixel on 

  

void loop()


 dataadc = analogRead(A0);

 int32_t frequency = 0; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, 0);
 //bool success = SetPinFrequencySafe(pwmpin, frek);
 
  pwmWrite(pwmpin, 0);
 
 button = digitalRead(14);
 
  if(button == 0){
  delay(200);
  frek = frek + 10;
       
  int32_t frequency = frek; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
 //bool success = SetPinFrequencySafe(pwmpin, frek); 
  pwmWrite(pwmpin, duty);
  delay(20);
 
  }
 
 
    u8g.firstPage();  
    do
    { 
    draw(); 
    }
    while( u8g.nextPage() ); 
    delay(200); 

}    





g. Program Versi baru

// program ini menggunakan tombol sebagai SAVE atau menyimpan data
// jadi saat pasien mendengarkan bunyi maka akan menekan tombol
// jika tidak terdengar maka jangan tekan tombol
// pada tampilan akhir akan muncul frekuensi yang didengar pada GLCD
// dan tidak akan menampilkan frekuensi yang tidak didengar pada GLCD
// frekuensi bisa dirubah sesuai selera

#include "U8glib.h" 
#include <PWM.h>

//Utilize a linha abaixo para utilizar a comunicacao serial
//(Enable, RW, RS, RESET)
//U8GLIB_ST7920_128X64_1X u8g(2, 3, 4 ,5);

//Utilize a linha abaixo para utilizar a comunicacao paralela (8 bits)
//(d0, d1, d2, d3, d4, d5, d6, d7, en, di, rw, reset)
U8GLIB_ST7920_128X64_1X u8g(6, 7, 8, 9, 10, 11, 12, 13, 2, 4, 3, 5);

int go = 1;
int display = 1; 
char tmp_string[8];
char tmp_string2[8];
int dataadc;   
int pwmpin = 46;        
int duty = 125;         // nilai duty cycle
int button;
int frek = 150;
int i;

int ax = 0;
int bx = 0;
int cx = 0;
int dx = 0;
int ex = 0;
int fx = 0;
int gx = 0;
int hx = 0;
int ix = 0;
int jx = 0;


void draw() 
{
  //konversi ke string
  //dtostrf(dataadc, 4, 2, tmp_string);
  itoa(dataadc,tmp_string,8);
  itoa(frek,tmp_string2,8);
 
  //pilih font
  u8g.setFont(u8g_font_u8glib_4);
  //u8g.setFont(u8g_font_profont11);
  //u8g.setFont(u8g_font_unifont);
 
  //x,y
  
//  u8g.drawStr( 27, 4, tmp_string2);
//  u8g.drawStr( 0, 10, "DB= ");  
//  u8g.drawStr( 27, 10, tmp_string);
if(ax == 1){
  u8g.drawStr( 0, 4,  "FREK= 250");
}
if(bx == 1){
  u8g.drawStr( 0, 10, "FREK= 500");
}
if(cx == 1){
  u8g.drawStr( 0, 16, "FREK= 1000");
}
if(dx == 1){
  u8g.drawStr( 0, 22, "FREK= 2000");
}
if(ex == 1){
  u8g.drawStr( 0, 28, "FREK= 3000");
}
if(fx == 1){
  u8g.drawStr( 0, 34, "FREK= 4000");
}
if(gx == 1){
  u8g.drawStr( 0, 40, "FREK= 5000");
}
if(hx == 1){
  u8g.drawStr( 0, 46, "FREK= 6000");
}
if(ix == 1){
  u8g.drawStr( 0, 52, "FREK= 7000");
}
if(jx == 1){
  u8g.drawStr( 0, 58, "FREK= 8000");

  delay(1000);
 
if(go == 1){  
step1();
 
step2();

step3();

step4();

step5();

step6();

step7();
 
step8();

step9();

step10();
}


  
  
void setup()

 
  pinMode(14,INPUT);
  digitalWrite(14,HIGH);
   
  // assign default color value 
  if ( u8g.getMode() == U8G_MODE_R3G3B2 )  
   u8g.setColorIndex(255);   // white 
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) 
   u8g.setColorIndex(1);     // max intensity 
  else if ( u8g.getMode() == U8G_MODE_BW ) 
   u8g.setColorIndex(1);     // pixel on 

  
  
  
  
void loop()



    u8g.firstPage();  
    do
    { 
    draw(); 
    }
    while( u8g.nextPage() ); 
    delay(200); 


}    


void step1(){

  int32_t frequency = 250; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  ax = 1;
  }
  delay(30); 
  }
 
  return;
}


void step2(){

  int32_t frequency = 500; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  bx = 1;
  }
  delay(30); 
  }
 
 
  return; 
}


void step3(){
  int32_t frequency = 1000; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
  
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
  //bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  cx = 1;
  }
  delay(30); 
  }
 
  return; 
}



void step4(){
  int32_t frequency = 2000; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  dx = 1;
  }
  delay(30); 
  }
 
  return; 
}



void step5(){
  int32_t frequency = 3000; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  ex = 1;
  }
  delay(30); 
  }
 
  return; 
}


void step6(){
  int32_t frequency = 4000; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  fx = 1;
  }
  delay(30); 
  }
 
  return; 
}



void step7(){
  int32_t frequency = 5000; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  gx = 1;
  }
  delay(30); 
  }
 
  return; 
}



void step8(){
  int32_t frequency = 6000; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  hx = 1;
  }
  delay(30); 
  }
 
  return; 
}


void step9(){
  int32_t frequency = 7000; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  ix = 1;
  }
  delay(30); 
  }
 
  return; 
}

void step10(){
  int32_t frequency = 8000; //frequency (in Hz)
  InitTimersSafe();
  bool success = SetPinFrequencySafe(pwmpin, frequency);
  pwmWrite(pwmpin, duty);
  delay(20);
 
  frequency = 0; //frequency (in Hz)
  InitTimersSafe();
//  bool success = SetPinFrequencySafe(pwmpin, 0); 
  pwmWrite(pwmpin, 0);
 
  for(i=0;i<100;i++){ 
  button = digitalRead(14);
  if(button == 0){
  jx = 1;
  }
  delay(30); 
  }
 
  go = 2;

  return; 
}





h. VIDEO HASILNYA
















Membuat Simulasi Traffic Light Mikrokontroller Tampilan 7-segment Display

Membuat Simulasi Traffic Light Mikrokontroller Tampilan 7-segment Display


        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang berfungsi untuk simulasi traffic light dengan penampil 7-segment, jadi pada alat ini terdapat 9 buah 7-segment yang akan menampilkan tiap-tiap angka secara count-down atau hitungan mundur. tidak hanya itu alat ini dilengkapi 3 buah led untuk traffic light yaitu merah, kuning dan hijau. kemudian 2 led lagi untuk penyebrang jalan yaitu merah dan hijau. dua angka diatas diperuntukkan bagi kendaraan, kemudian satu digit dibawah diperuntukkan bagi pejalan kaki yang ingin menyebrang. alat ini menggunakan mikrokontroller ATMega16 dan IC decoder 74138 sebanyak 2 buah. untuk skema dan program berikut adalah penjelasannya.




a. Minimum System ATMega16





b. 7-segment dan LED 







c. IC 74138 Decoder






d. Program Bascom AVR

$regfile = "m16def.dat"
$crystal = 12000000

Ddra.0 = 1
Ddra.1 = 1
Ddra.2 = 1
Ddra.3 = 1
Ddra.4 = 1

Ddrb.0 = 1
Ddrb.1 = 1
Ddrb.2 = 1
Ddrb.3 = 1
Ddrb.4 = 1

Ddrb.5 = 1
Ddrb.6 = 1
Ddrb.7 = 1



Ddrd.0 = 1
Ddrd.1 = 1
Ddrd.2 = 1
Ddrd.3 = 1
Ddrd.4 = 1

Ddrd.5 = 1
Ddrd.6 = 1
Ddrd.7 = 1



Ddrc.0 = 1
Ddrc.1 = 1
Ddrc.2 = 1
Ddrc.3 = 1
Ddrc.4 = 1
Ddrc.5 = 1
Ddrc.6 = 1
Ddrc.7 = 1

Dim Datas As Byte
Dim Count As Integer

Dim X1 As Integer
Dim X2 As Integer
Dim X3 As Integer
X1 = 0
X2 = 3
X3 = 1


Dim Y1 As Integer
Dim Y2 As Integer
Dim Y3 As Integer
Y1 = 0
Y2 = 7
Y3 = 5


Dim Z1 As Integer
Dim Z2 As Integer
Dim Z3 As Integer
Z1 = 1
Z2 = 1
Z3 = 9


Dim X As Integer
Dim Y As Integer
Dim Z As Integer
X = 1
Y = 1
Z = 1

Dim Kondisi As Integer
Kondisi = 1

Porta = &B00111111
Portb = &B00111111
Portd = &B00111111

Portc = &B11111111
Waitms 2



Do


Do


If X1 = 1 And X2 >= 0 Then
Porta = &B00001110                                          'merah
Elseif X1 = 0 And X2 > 3 Then
Porta = &B00001110
Elseif X1 = 0 And X2 <= 3 Then
Porta = &B00011001                                          'hijau
End If

If X1 = 0 And X2 = 0 Then
Porta.4 = 1
Porta.3 = 0
Porta.2 = 1
End If

If Y1 = 1 And Y2 >= 0 Then
Portb = &B00001110                                          'merah
Elseif Y1 = 0 And Y2 > 3 Then
Portb = &B00001110
Elseif Y1 = 0 And Y2 <= 3 Then
Portb = &B00010011                                          'hijau
End If

If Y1 = 0 And Y2 = 0 Then
Portb.0 = 1
Portb.1 = 0
Portb.2 = 1
End If


If Z1 = 1 And Z2 >= 0 Then
Portd = &B00001110                                          'merah
Elseif Z1 = 0 And Z2 > 3 Then
Portd = &B00001110
Elseif Z1 = 0 And Z2 <= 3 Then
Portd = &B00010011                                          'hijau
End If

If Z1 = 0 And Z2 = 0 Then
Portd.0 = 1
Portd.1 = 0
Portd.2 = 1
End If


Datas = Lookup(x1 , Data7seg)
Portc = Datas

Portd.5 = 0
Portd.6 = 0
Portd.7 = 0
Waitms 2

Datas = Lookup(x2 , Data7seg)
Portc = Datas

Portd.5 = 1
Portd.6 = 0
Portd.7 = 0
Waitms 2

Datas = Lookup(x3 , Data7seg)
Portc = Datas

Portd.5 = 0
Portd.6 = 1
Portd.7 = 0
Waitms 2

Datas = Lookup(y1 , Data7seg)
Portc = Datas

Portd.5 = 1
Portd.6 = 1
Portd.7 = 0
Waitms 2

Datas = Lookup(y2 , Data7seg)
Portc = Datas

Portd.5 = 0
Portd.6 = 0
Portd.7 = 1
Waitms 2

Datas = Lookup(y3 , Data7seg)
Portc = Datas

Portd.5 = 1
Portd.6 = 0
Portd.7 = 1
Waitms 2


Datas = Lookup(z1 , Data7seg)
Portc = Datas

Portb.5 = 0
Portb.6 = 0
Portb.7 = 0
Waitms 2


Datas = Lookup(z2 , Data7seg)
Portc = Datas

Portb.5 = 1
Portb.6 = 0
Portb.7 = 0
Waitms 2

Datas = Lookup(z3 , Data7seg)
Portc = Datas

Portb.5 = 0
Portb.6 = 1
Portb.7 = 0
Waitms 2


Incr Count


Loop Until Count > 100



Decr X2
Decr Y2
Decr Z2

Decr X3
Decr Y3
Decr Z3


If X3 < 0 Then
X3 = 0
End If

If Y3 < 0 Then
Y3 = 0
End If

If Z3 < 0 Then
Z3 = 0
End If


If X1 = 1 And X2 >= 0 Then
Porta = &B00001110                                          'merah
Elseif X1 = 0 And X2 > 3 Then
Porta = &B00001110
Elseif X1 = 0 And X2 <= 3 Then
Porta = &B00011001                                          'hijau
End If


If Y1 = 1 And Y2 >= 0 Then
Portb = &B00001110                                          'merah
Elseif Y1 = 0 And Y2 > 3 Then
Portb = &B00001110
Elseif Y1 = 0 And Y2 <= 3 Then
Portb = &B00010011                                          'hijau
End If


If Z1 = 1 And Z2 >= 0 Then
Portd = &B00001110                                          'merah
Elseif Z1 = 0 And Z2 > 3 Then
Portd = &B00001110
Elseif Z1 = 0 And Z2 <= 3 Then
Portd = &B00010011                                          'hijau
End If




'==================================================

If X2 < 0 And X = 1 And X1 <> 0 Then
X1 = 0
X2 = 9
X = 2
End If

If X2 < 0 And X = 1 And X1 = 0 Then
X1 = 1
X2 = 1
X3 = 9
X = 1
End If

If X2 < 0 And X = 2 Then
X1 = 1
X2 = 1
X3 = 9
X = 1
End If


'====================================================

If Y2 < 0 And Y = 1 And Y1 <> 0 Then
Y1 = 0
Y2 = 9
Y = 2
End If


If Y2 < 0 And Y = 1 And Y1 = 0 Then
Y1 = 1
Y2 = 1
Y3 = 9
Y = 1
End If


If Y2 < 0 And Y = 2 Then
Y1 = 1
Y2 = 1
Y3 = 5
Y = 1
End If


'====================================================

If Z2 < 0 And Z = 1 And Z <> 0 Then
Z1 = 0
Z2 = 9
Z = 2
End If


If Z2 < 0 And Z = 1 And Z1 = 0 Then
Z1 = 1
Z2 = 1
Z3 = 9
Z = 1
End If


If Z2 < 0 And Z = 2 Then
Z1 = 1
Z2 = 1
Z3 = 9
Z = 1
End If


Count = 0

Loop


Data7seg:
Data &B11000000                                             '0
Data &B11111001                                             '1
Data &B10100100                                             '2
Data &B10110000                                             '3
Data &B10011001                                             '4
Data &B10010010                                             '5
Data &B10000010                                             '6
Data &B11111000                                             '7
Data &B10000000                                             '8
Data &B10010000                                             '9






e. VIDEO HASILNYA










Membuat Robot ARDUINO Kendali Wireless Menggunakan Visual Basic 6 dan NRF24L01

Membuat Robot  ARDUINO Kendali Wireless Menggunakan Visual Basic 6 dan NRF24L01


        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat dan mengakses sebuah robot yang dapat dikendalikan menggunakan komputer / laptop via wireless, jadi robot ini menggunakan GUI interface yang terdapat di komputer yang mana fungsinya adalah untuk kendali arah jalan robot, fitur yang tersedia pada GUI interface VB 6 adalah jalan lurus, mundur, stop, belok kanan, dan belok kiri. driver motor yang digunakan adalah L298 dan wireless modulnya menggunakan NRF24L01, prinsip kerjanya yaitu transmitter mengirimkan kode berupa angka 1 samapi 5 sehingga pihak receiver akan menangkap data tersebut dan akan mengolah data itu, outputnya adalah kendali roda pada robot. untuk lebih jelasnya berikut adalah skema dan programnya.




 
a. Arduino Uno





b. Wireless Modul NRF24L01



  • Connect the following pins to your Arduino:
  • Pin 9 - CE
  • Pin 10 - CS(N)
  • Pin 11 - MOSI
  • Pin 12 - MISO
  • Pin 13 - SCK
  • 3.3v - VCC
  • GND - GND




c. Driver Motor L298






d. Program Receiver Arduino IDE

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

int msg[1];

RF24 radio(9,10);

const uint64_t pipe = 0xE8E8F0F0E1LL;

int mtr1 = A5;
int mtr2 = A4;
int mtr3 = A3;
int mtr4 = A2;

void setup(void){
 
 Serial.begin(9600);
 radio.begin();
 radio.openReadingPipe(1,pipe);
 radio.startListening();
 pinMode(mtr1, OUTPUT);
 pinMode(mtr2, OUTPUT);
 pinMode(mtr3, OUTPUT);
 pinMode(mtr4, OUTPUT);

 }


 void loop(void){
   
 if (radio.available()){
   bool done = false;   
   while (!done){
     done = radio.read(msg, 1);     
     Serial.println(msg[0]);
    
     if (msg[0] == 1){    
     delay(10);
     digitalWrite(mtr1, HIGH);
     digitalWrite(mtr2, LOW);
     digitalWrite(mtr3, HIGH);
     digitalWrite(mtr4, LOW);  
     delay(200);
     }
     if (msg[0] == 2){    
     delay(10);
     digitalWrite(mtr1, HIGH);
     digitalWrite(mtr2, LOW);
     digitalWrite(mtr3, LOW);
     digitalWrite(mtr4, LOW);  
     delay(200);
     }
     if (msg[0] == 3){    
     delay(10);
     digitalWrite(mtr1, LOW);
     digitalWrite(mtr2, LOW);
     digitalWrite(mtr3, HIGH);
     digitalWrite(mtr4, LOW);  
     delay(200);
     }
     if (msg[0] == 4){    
     delay(10);
     digitalWrite(mtr1, LOW);
     digitalWrite(mtr2, HIGH);
     digitalWrite(mtr3, LOW);
     digitalWrite(mtr4, HIGH);  
     delay(200);
     }
     if (msg[0] == 5){    
     delay(10);
     digitalWrite(mtr1, LOW);
     digitalWrite(mtr2, LOW);
     digitalWrite(mtr3, LOW);
     digitalWrite(mtr4, LOW);  
     delay(200);
     }
    
     delay(10);
   }
  
 }
 else{
 Serial.println("No radio available");

 }
 }





e. Program Transmitter Arduino IDE

#include  <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

int msg[1];
int datain;

RF24 radio(9,10);

const uint64_t pipe = 0xE8E8F0F0E1LL;

void setup(void){
 
 Serial.begin(9600);
 radio.begin();
 radio.openWritingPipe(pipe);

 pinMode(13,OUTPUT);

 }


void loop(void){

 msg[0] = datain;
 radio.write(msg, 1);
 //Serial.println(msg[0]);

if (Serial.available() > 0)
{
datain = Serial.parseInt();
//Serial.println(datain);
}

delay(10);
 }




f. Program VB 6



 Dim arrdata()
Dim TotalBaca As Integer
Dim BMI As Single
Dim Keterangan As String
Const MAKSBACA = 10
'-----------------------------
Private Sub atas_Click()
MSComm2.Output = "1" + Chr(13)  'mengirimkan angka 1 ke serial
End Sub
'-----------------------------
Private Sub bawah_Click()
MSComm2.Output = "4" + Chr(13)  'mengirimkan angka 2 ke serial
End Sub
'-----------------------------
Private Sub berhenti_Click()
  start.Enabled = True
    berhenti.Enabled = False
    TimerBaca.Enabled = False
End Sub
'-----------------------------

Private Sub BUZZ_Click()
MSComm2.Output = "6" + Chr(13)
End Sub

Private Sub Command1_Click()
MSComm2.Output = "5" + Chr(13)
End Sub

'-----------------------------
Private Sub Command2_Click()
Unload Me
End Sub


Private Sub Down_Click()

End Sub

'-----------------------------
Private Sub Form_Load()
Dim i As Byte
For i = 1 To 16
    ComboCOM.AddItem (i)
Next i
End Sub

Private Sub kanan_Click()
MSComm2.Output = "2" + Chr(13)
End Sub

Private Sub kiri_Click()
MSComm2.Output = "3" + Chr(13)
End Sub

'----------------------------
Private Sub start_Click()
Dim u As Integer
    On Error GoTo ada_eror
    MSComm2.CommPort = ComboCOM.Text
    MSComm2.Settings = "9600,N,8,1"
    MSComm2.RThreshold = 15
    MSComm2.InputLen = 15
    MSComm2.InputMode = comInputModeText
    MSComm2.PortOpen = True
    ReDim arrdata(1 To MAKSBACA + 1)
    For u = 1 To MAKSBACA
        arrdata(u) = 0
    Next
    TotalBaca = 0
    start.Enabled = False
    berhenti.Enabled = True
    TimerBaca.Enabled = True
ada_eror:
 If ComboCOM.ListIndex < 1 Then
    MsgBox "COM berada di Nomor : " & Err.Number & vbCrLf & Err.Description, vbCritical + vbOKOnly, "ERROR"
    start.Enabled = True
    berhenti.Enabled = True
    ComboCOM.Text = "Pilih COM"
End If
End Sub
'-----------------------------------
Private Sub TimerBaca_Timer()
Dim strInput As String
Dim strPotong As String
Dim singleInput As Single
Dim u As Integer
'    strInput = MSComm2.Input
    '    strPotong = strInput
        'Text1.Text = Text1.Text + strPotong + vbCrLf
     '   singleInput = Val(strPotong)
      '  If TotalBaca >= MAKSBACA Then
       '     TimerBaca.Enabled = False
       '     If MSComm2.PortOpen = True Then MSComm2.PortOpen = False
       '     Call berhenti_Click
       ' End If
End Sub






g. Video Hasilnya








  

Membuat Alat Saklar Otomatis Gelap - Terang Menggunakan Relay dan LDR

Membuat Alat Saklar Otomatis Gelap - Terang Menggunakan Relay dan LDR


        Pada kesempatan ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang bisa berguna untuk saklar otomatis menggunakan sensor cahaya tanpa mikrokontroller, jadi setting intensitas cahaya menggunakan potensio dan juga saklar tegangan AC menggunakan relay 5v, yang harus diperhatikan yaitu op-amp yang digunakan adalah IC 741 sehingga tegangan optimal adalah 12 volt, jika ingin menggunakan battery atau adaptor juga bisa yang penting tegangannya tidak lebih dari 12 volt dan juga ampernya yang kecil saja lebih baik. aplikasi alat ini biasanya digunakan untuk switch otomatis lampu smarthome atau lampu kebun, bisa juga untuk penerang jalan sehingga pemilik tidak perlu repot-repot menghidupkan lampu atau mematikan lampu. berikut adalah skemanya.



a. Skema / Rangkaian 

 
ket:

1. LDR
2. Resistor 10K, 1K dan 470 ohm
3. Capasitor 220uF / 16v
4. IC 741
5. Dioda 1N4007
6. Relay 5v / 12v
7. Transistor BD139 atau 2N2222





b. Video Hasilnya












Cara Melakukan Uji Two Way anova Univariate / ANOVA BLOCK DESIGN Menggunakan SPSS

Cara Melakukan Uji Two Way anova Univariate / ANOVA BLOCK DESIGN Menggunakan SPSS


        Pada kesempatan kali ini akan dijelaskan mengenai bagaimana cara melakukan uji analisis data terkait suatu alat atau suatu kadar yang mana data tersebut perlu dilakukan uji analsis agar didapat suatu kesimpulan yang dapat dipertanggung jawabkan hasilnya, maka dari itu penting sekali untuk melakukan hal demikian untuk suatu data yang diperoleh. uji yang akan dilakukan disini yaitu uji univariate test. hipotesa yang dipakai yaitu H0 - tidak ada perbedaan pengaruh antara sebelum dan sesuadan perlakuan, dan H1 - ada perbedaan sebelum dan sesudah perlakuan. untuk lebih jelasnya berikut adalah caranya.



a. Disediakan data seperti berikut

kadar hb   blok   perlakuan
12.0            1           1
14.0            2           1
14.0            3           1
11.5            5           1
13.0            5           1
13.0            1           2
11.0            2           2
11.0            3           2
12.0            4           2
12.0            2           3
12.0            2           3
12.0            3           3
10.0            3           3
11.0            5           3
13.0            1           3
12.0            1           3
10.0            2           4
10.0            3           4
10.0            4           4
10.0            5           4





b. Masukkan ke variabel view






c. Menguji apakah data terdistribusi normal atau tidak
    Pilih Analyze - Non Parameteric Test - legacy dialogs - sample K-S








d. Hasil Outputnya
    Kesimpulan : bahwa data terdistribusi normal






 e. Lakukan Uji Univariate Test












f. Output Hasilnya






g. Kesimpulan

          Bahwa nilai perlakuan adalah 0.008 yang mana artinya kurang dari 0.05 sehingga H0 ditolak dan hipotesis yang dipakai adalah ada pengaruh dari perlakuan pada tiap-tiap kelompok, kemudian blok nilainya 0.727 yang mengartikan bahwa blok tidak mempengaruhi perlakuan dikarenakan nilainya lebih dari 0.05 sehingga H0 diterima.













Melakukan Uji Data Menggunakan Multivariate Test / MANOVA

Melakukan Uji Data Menggunakan Multivariate Test / MANOVA


         Pada kesempatan kali ini akan dijelaskan mengenai bagaimana cara melakukan uji analisis data terkait suatu alat atau suatu kadar yang mana data tersebut perlu dilakukan uji analsis agar didapat suatu kesimpulan yang dapat dipertanggung jawabkan hasilnya, maka dari itu penting sekali untuk melakukan hal demikian untuk suatu data yang diperoleh. uji yang akan dilakukan disini yaitu uji multivariate test. hipotesa yang dipakai yaitu H0 - tidak ada perbedaan pengaruh antara orang memakai sepatu A, B dan C. sebaliknya H1 - ada perbedaan pada sepatu A, B dan C maka dari itu untuk mengetahuinya dipakailah uji multivariate test menggunakan SPSS.



a. Disediakan data seperti berikut.

A      B     C
10    12    13
11    12    12
12    13    13
11    12    14
11    11    12
12    12    13
12    14    14
13    15    14
12    13    14
10    11    12





b. Masukkan ke variabel view






c. Menguji apakah data terdistribusi normal atau tidak
    Pilih Analyze - Non Parameteric Test - legacy dialogs - sample K-S







d. Hasil Outputnya
    Kesimpulan : bahwa data terdistribusi normal






e. Lakukan Uji Multivariate Test








f. Output Hasilnya








g. Kesimpulan
 
 H0 diterima jika P > 0.05
 H0 ditolak jika P < 0.05

        Dengan menggunakan 4 jenis pengujian yaitu Wilks’lambda, Pillai’s trace, Lawley-Hotelling trace serta  Roy’s largest root dapat dilihat bahwa kesimpulan yang diperoleh sama yaitu 0.000. Nilai signifikansi keempat pengujian tersebut menunjukkan besaran di bawah 0.05 sehingga hipotesis H0 ditolak yang mana artinya ada perbedaan antara ketiga nilai sepatu tersebut












Cara membandingkan 2 data berbeda menggunakan analisis ONE WAY ANOVA pada SPSS

Cara membandingkan 2 data berbeda menggunakan analisis ONE WAY ANOVA  pada SPSS


        Pada kesempatan kali ini akan dijelaskan mengenai bagaimana cara melakukan uji analisis data terkait suatu alat atau suatu kadar yang mana data tersebut perlu dilakukan uji analsis agar didapat suatu kesimpulan yang dapat dipertanggung jawabkan hasilnya, maka dari itu penting sekali untuk melakukan hal demikian untuk suatu data yang diperoleh. uji yang akan dilakukan disini yaitu Uji one way anova. hipotesa yang dipakai yaitu H0 - tidak ada perbedaan sebelum dan sesudah perlakukan dan H1 - ada perbedaan sebelum dan sesudah perlakuan. berikut adalah cara uji one way anova bertujuan untuk mengetahui perbedaan sebelum dilakukan treatment dan sesudah dilakukan treatment dan juga homogenitasnya. syaratnya yaitu data terdistribusi normal. H0 ditolak jika P < alpha ( 5% ). langkah -langkah analisisnya yaitu seperti berikut ini.




a. Disediakan data seperti berikut.

Kadar HB   kelompok
11.5                1
11.7                1
12.5                1
12.0                1
12.4                1
12.0                1
12.4                2
11.6                2
12.1                2
11.8                 2
11.8                 2
12.3                 2
12.2                 2
12.1                 2
11.1                 3
10.5                 3
11.2                 3
10.5                 3
11.2                 3
10.6                 3





b. Masukkan ke variabel view






c. Menguji apakah data terdistribusi normal atau tidak
    Pilih Analyze - Non Parameteric Test - legacy dialogs - sample K-S







d. Hasil Outputnya
    Kesimpulan : bahwa data terdistribusi normal






e. Lakukan Uji ONE WAY ANOVA











f. Hasil Outputnya










g. Kesimpulan
 
 H0 diterima jika P > 0.05
 H0 ditolak jika P < 0.05

        Dari hasil bisa disimpulkan bahwa nilai p adalah 0.000 artinya 0.000 < 0.005 sehingga H0 ditolak yang mana menghasilkan statement yaitu terdapat perbedaan antara ke tiga kelompok tersebut, namun yang mana yang berbeda, yaitu bisa dilihat pada tabel POST HOC TEST, dan dari dara homogeneus subsets disimpulkan bahwa tanpa terapi berbeda dengan hasil dari terapi akupuntur dan terapi herbal, untuk terapi akupuntur dan herbal keduanya memiliki nilai yang mirip dan hampir sama yaitu tidak lebih dari 0.05 atau 5 persen.