Translate

Membuat Alat HeartRate / HeartBeat (BPM) , Respiration Rate, dan Suhu Tubuh

Membuat Alat HeartRate / HeartBeat (BPM) , Respiration Rate, dan Suhu Tubuh


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat untuk monitoring HeartBeat / HeartRate, Respiration Rate dan suhu tubuh, alat ini menggunakan sensor finger clip dan amplifier pendukung untuk heartbeat yang mana outputnya berupa sinyal kotak, untuk respiration rate menggunakan sensor suara dan micondenser yang outputnya berupa tegangan, terakhir yaitu suhu tubuh menggunakan sensor LM35 yang sudah umum digunakan. BPM dan RR digunakan sampling 100 ms selama satu menit. untuk lebih jelasnya berikut program dan skemanya.


a. Minimum System





b. Finger clip






c. Sensor Suara





d. Sensor Suhu LM35





e. Program Bascom AVR

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

Config Lcdpin = Pin , Rs = Portc.7 , E = Portc.6 , Db4 = Portc.5
Config Lcdpin = Pin , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2
Config Lcd = 16 * 2

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Dim Databpm As Word
Dim Dataadc As Word
Dim Datarr As Word

Dim Suhu As Single

Dim A As Integer
Dim B As Integer
Dim C As Integer

Dim W As Integer
Dim Y As Integer
Dim Z As Integer

Ddrd.5 = 0
Set Portd.5

A = 0
B = 0
C = 0

W = 0
Y = 0
Z = 0

Cls
Cursor Off

Start Adc

Do

If Pind.5 = 0 Then
Cls
Waitms 200

Do
Databpm = Getadc(0)

If Databpm > 300 And A = 0 Then
Incr B
A = 1
End If

If Databpm < 300 And A = 1 Then
A = 0
End If

Waitms 100

Upperline
Lcd "Detak = " ; B

Incr C

Loop Until C = 600
Cls

Wait 1

Do
Datarr = Getadc(2)

If Datarr < 1000 And Z = 0 Then
Incr Y
Z = 1
End If

If Datarr > 1000 And Z = 1 Then
Z = 0
End If

Waitms 100

Upperline
Lcd "RR = " ; Y

Incr W

Loop Until W = 600
Cls

Dataadc = Getadc(1)

Suhu = Dataadc * 5
Suhu = Suhu / 1023
Suhu = Suhu * 100

Print "BPM = " ; B
Print "SUHU = " ; Fusing(suhu , "#.#")
Print "Respiration Rate = " ; Y
Print ""

Upperline
Lcd "BPM = " ; B ; " RR = " ; Y
Lowerline
Lcd "Suhu = " ; Fusing(suhu , "#.#")

Wait 10

A = 0
B = 0
C = 0

W = 0
Y = 0
Z = 0

Cls

Else

Upperline
Lcd "Tekan START"

End If

Loop





f. Cara Penggunaan Alat

           Pertama hubungkan alat dengan power supply, kemudian pasangkan finger clip ke jari telunjuk dan respiration rate ke hidung, lalu sensor suhu tubuh diletakkan di antara ketiak. setelah semua terpasang, tekan tombol start untuk memulai pengukuran, jika telah selesai pengukuran maka akan ada tampilan hasilnya seperti hasil BPM, RR dan suhunya pada LCD.






Membuat JAM DIGITAL dilengkapi SET ALARM dan STOPWATCH menggunakan ARDUINO

Membuat JAM DIGITAL dilengkapi SET ALARM dan STOPWATCH menggunakan ARDUINO


           Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang memiliki fitur jam digital, setting alarm dan stopwatch, sistem kerjanya yaitu alat ini menggunakan Arduino sebagai kendali atau kontroller yang akan mengakses RTC, buzzer dan tombol. terdapat 5 buah tombol yang akan digunakan sebagai selektor menu dan kendali tampilan, buzzer sebagai output alarmnya dan RTC sebagai pemberi data jam dan tanggal. Untuk tampilan display menggunakan LCD 16x2 dengan backlight warna kuning. untuk lebih jelasnya berikut program dan skema alatnya.



a. Arduino UNO





b. LCD Display 16x2






c. RTC DS1307



*KET :
SCL = PIN A5
SDA = PIN A4




d. PUSH BUTTON






e. BUZZER






f. Program Arduino IDE

#include "Wire.h"
#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

#define DS3231_I2C_ADDRESS 0x68
// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
  return( (val/10*16) + (val%10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
  return( (val/16*10) + (val%16) );
}

const int buttonPin1 = A0;     // the number of the pushbutton pin
const int buttonPin2 = A1;     // the number of the pushbutton pin
const int buttonPin3 = A2;     // the number of the pushbutton pin
const int buttonPin4 = 9;     // the number of the pushbutton pin
const int buttonPin5 = 10;     // the number of the pushbutton pin

int buttonState1 = 0;       
int buttonState2 = 0;
int buttonState3 = 0;
int buttonState4 = 0;
int buttonState5 = 0;

int a = 0;
int mmz = 0;
int detz = 0;
int menz = 0;
int jamz = 0;

int stm = 0;
int stj = 0;
int savestj = 0;
int savestm = 0;

void setup()
{
  lcd.begin(16, 2);
  lcd.clear();
  lcd.noCursor();
  Wire.begin();
  pinMode(8, OUTPUT);
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(buttonPin3, INPUT);
  pinMode(buttonPin4, INPUT);
  pinMode(buttonPin5, INPUT);
 
 
  //Serial.begin(9600);
  // set the initial time here:
  // DS3231 seconds, minutes, hours, day, date, month, year
  // setDS3231time(0,12,02,2,5,1,16);
}
void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year)
{
  // sets time and date data to DS3231
  Wire.beginTransmission(DS3231_I2C_ADDRESS);
  Wire.write(0); // set next input to start at the seconds register
  Wire.write(decToBcd(second)); // set seconds
  Wire.write(decToBcd(minute)); // set minutes
  Wire.write(decToBcd(hour)); // set hours
  Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)
  Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
  Wire.write(decToBcd(month)); // set month
  Wire.write(decToBcd(year)); // set year (0 to 99)
  Wire.endTransmission();
}
void readDS3231time(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
  Wire.beginTransmission(DS3231_I2C_ADDRESS);
  Wire.write(0); // set DS3231 register pointer to 00h
  Wire.endTransmission();
  Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
  // request seven bytes of data from DS3231 starting from register 00h
  *second = bcdToDec(Wire.read() & 0x7f);
  *minute = bcdToDec(Wire.read());
  *hour = bcdToDec(Wire.read() & 0x3f);
  *dayOfWeek = bcdToDec(Wire.read());
  *dayOfMonth = bcdToDec(Wire.read());
  *month = bcdToDec(Wire.read());
  *year = bcdToDec(Wire.read());
}


void displayTime()
{
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
  // retrieve data from DS3231
  readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,
  &year);
  // send it to the serial monitor
  lcd.setCursor(0, 0);
  lcd.print(hour, DEC);
  // convert the byte variable to a decimal number when displayed
  lcd.print(":");
  if (minute<10)
  {
    lcd.print("0");
  }
  lcd.print(minute, DEC); 
  lcd.print(":");
  if (second<10)
  {
    lcd.print("0");
  }
  lcd.print(second, DEC);
 
  lcd.setCursor(0, 1);
  lcd.print(dayOfMonth, DEC);
  lcd.print("/");
  lcd.print(month, DEC);
  lcd.print("/");
  lcd.print(year, DEC);

  if ((hour == savestj) && (minute == savestm)) {
  digitalWrite(8, HIGH);
  }

}

void loop()
{
  digitalWrite(8, LOW);

  mmz = 0;
  detz = 0;
  menz = 0;
  jamz = 0;
 
  stj = savestj;
  stm = savestm;
    
  buttonState1 = digitalRead(buttonPin1);
  buttonState2 = digitalRead(buttonPin2);
  buttonState3 = digitalRead(buttonPin3);
  buttonState4 = digitalRead(buttonPin4);
  buttonState5 = digitalRead(buttonPin5);

  if ( buttonState2 == LOW ){
  delay(200);
  a = a + 1;
  
  if ( a > 2 ) {
  a = 0;
  } else if (a < 0) {
  a = 2;
  }
 
  }
 
  else if ( buttonState3 == LOW ) {
  delay(200);
  a = a - 1;
  
  if ( a > 2 ) {
  a = 0;
  } else if (a < 0) {
  a = 2;
  }
 
  }

 
  if ( a == 0 ) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("PILIH MENU");
  lcd.setCursor(0, 1);
  lcd.print(" JAM ");
  delay(500);
       
  }

  else if ( a == 1 ) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("PILIH MENU");
  lcd.setCursor(0, 1);
  lcd.print(" SET ALARM ");
  delay(500);
  }

  else if ( a == 2 ) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("PILIH MENU");
  lcd.setCursor(0, 1);
  lcd.print(" STOPWATCH ");
  delay(500);
  }
  
  if (( buttonState5 == LOW ) && ( a == 0 )) {
  lcd.clear();
 
  while ( buttonState1 == HIGH ) 
  {
    delay(200);
    buttonState1 = digitalRead(buttonPin1);
    displayTime();
      
  }
     
  }
 
 
  if (( buttonState5 == LOW ) && ( a == 1 )) {
  lcd.clear();
 
  while ( buttonState1 == HIGH ) 
  {
   
  buttonState1 = digitalRead(buttonPin1);
  buttonState2 = digitalRead(buttonPin2);
  buttonState3 = digitalRead(buttonPin3);
  buttonState4 = digitalRead(buttonPin4);
  buttonState5 = digitalRead(buttonPin5);

  lcd.setCursor(0, 0);
  lcd.print("Set Jam : ");
  lcd.print(stj);
  lcd.setCursor(0, 1);
  lcd.print("Set Menit : ");
  lcd.print(stm); 
  delay(200);
 
  if ( buttonState3 == LOW ){
  stj = 0;
  stm = 0;
  lcd.clear(); 
  }
  else if ( buttonState4 == LOW ){
  stj = stj + 1;
  lcd.clear(); 
  }
  else if ( buttonState5 == LOW ){
  stm = stm + 1;
  lcd.clear(); 
  }
  else if ( buttonState1 == LOW ){
  savestm = stm;
  savestj = stj;
  }

   }     
  }
 
 
  if (( buttonState5 == LOW ) && ( a == 2 )) {
  lcd.clear();
 
  while ( buttonState1 == HIGH ) 
  {
  buttonState1 = digitalRead(buttonPin1);
  buttonState2 = digitalRead(buttonPin2);
  buttonState3 = digitalRead(buttonPin3);
  buttonState4 = digitalRead(buttonPin4);
  buttonState5 = digitalRead(buttonPin5);
     
  mmz = mmz + 1;
  delay(10);
 
  if (mmz == 100) {
  detz = detz + 1;
  mmz = 0;
  }
  if (detz == 60) {
  menz = menz + 1;
  detz = 0;
  } 
  if (menz == 60) {
  jamz = jamz + 1;
  menz = 0;
  } 
   
  lcd.setCursor(0, 0);
  lcd.print(jamz);
  lcd.print(":");
  lcd.print(menz);
  lcd.print(":");
  lcd.print(detz);
  lcd.print(":");
  lcd.print(mmz);
 
  if ( buttonState4 == LOW ){
  delay(200);
  while (buttonState3 == HIGH)
  { 
  lcd.setCursor(0, 0);
  lcd.print(jamz);
  lcd.print(":");
  lcd.print(menz);
  lcd.print(":");
  lcd.print(detz);
  lcd.print(":");
  lcd.print(mmz);
  delay(1000);
  buttonState3 = digitalRead(buttonPin3);
  buttonState1 = digitalRead(buttonPin1);

 
  }
   
  }
      
  }
       
  } 
}

 


  
g. VIDEO HASILNYA












Membuat Alat Pengunci Pintu Otomatis ( Door Lock ) Menggunakan RFID Reader ID-12

Membuat Alat Pengunci Pintu Otomatis ( Door Lock ) Menggunakan RFID Reader ID-12


              Pada sore hari ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang bisa digunakan untuk mengunci pintu secara otomatis dengan kunci berupa kartu atau sejenisnya, jadi alat ini adalah alat inovasi pengganti kunci konvensional yang biasanya diputar atau digeser. Alat ini memiliki 3 unsur penyusun utama, yaitu RFID reader, tag card dan kontroller, RFID reader yang dipakai adalah ID-12, kemudian tag card nya menggunakan tag card bernentuk kartu dan kontrollernya adalah ATMega16. Pengunci pintu menggunakan solenoid door lock dengan tegangan aktif 12 volt dc. Untuk lebih jelasnya berikut adalah skema dan programnya.


a. Minimum System




b. Solenoid Door Lock + Driver 12 volt




c. RFID Reader ID-12




d. Tag card




e. Program Bascom AVR

$regfile = "m16def.dat"
$crystal = 11059200
$baud = 9600

Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , Db4 = Portc.4
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2

Cls
Cursor Off

Dim Y As String * 20 , Id As String * 20
Dim X As Integer

Config Sda = Portd.2
Config Scl = Portd.3

Const Ds1307w = &HD0
Const Ds1307r = &HD1

Dim _sec As Byte
Dim _min As Byte
Dim _hour As Byte
Dim _day As Byte
Dim _month As Byte
Dim _year As Byte
Dim _weekday As Byte

Dim Sa(3) As String * 2
Dim Sb(3) As String * 2

Declare Sub Getdatetime
Declare Sub Settime
Declare Sub Getsec
Declare Sub Disptime
Declare Sub Dispdate
Declare Sub Format_00
Declare Sub Setdate
Declare Sub Subset

Dim I As Byte
Dim Flagset As Bit              '0 = Waktu, 1 = Tanggal
Dim Flagreset As Bit
Dim Line1 As String * 1

Dim Weekday As Byte
Dim Jam_puluhan As Integer
Dim Jam_satuan As Integer
Dim Min_puluhan As Integer
Dim Min_satuan As Integer
Dim Sec_puluhan As Integer
Dim Sec_satuan As Integer

Ddrd.4 = 1
Ddrb.4 = 0
Portb.4 = 1


'_sec = 00
'_hour = 11
'_min = 20
'Settime

'_day = 14
'_month = 12
'_year = 15
'Setdate

I = 13
Line1 = Chr(13)

Portd.4 = 0

Main:

Do

If Pinb.4 = 0 Then
Portd.4 = 1
Wait 3
Else
Portd.4 = 0
End If

Locate 1 , 1
Lcd "Dekatkan Kartu"

Y = Inkey()

If Pinb.4 = 0 Then
Portd.4 = 1
Wait 3
Else
Portd.4 = 0
End If

If Y <> "" Then
Input Y Noecho
Id = Mid(y , 3 , 13)
Cls
Cursor Off

Getdatetime

Locate 1 , 1
Disptime

If Id = "6F0085C00923" Then
Locate 2 , 1
Lcd "Era Wahyudi"
Portd.4 = 1
Else
Goto Main

End If

'Locate 2 , 1
'Lcd Id

Wait 3
Cls
Else
Goto Main

End If

portd.4 = 0

Loop

Sub Getdatetime:

I2cstart                                                    ' Generate start code
I2cwbyte Ds1307w                                            ' send address

I2cwbyte 0                                                  ' start address in 1307

I2cstart                                                    ' Generate start code
I2cwbyte Ds1307r                                            ' send address

I2crbyte _sec , Ack
I2crbyte _min , Ack                                         ' MINUTES
I2crbyte _hour , Ack                                        ' Hours
I2crbyte _weekday , Ack                                     ' Day of Week
I2crbyte _day , Ack                                         ' Day of Month
I2crbyte _month , Ack                                       ' Month of Year
I2crbyte _year , Nack                                       ' Year

I2cstop

_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
_day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
End Sub

Sub Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)

I2cstart                                                    ' Generate start code
I2cwbyte Ds1307w                                            ' send address
I2cwbyte 0                                                  ' starting address in 1307
I2cwbyte _sec                                               ' Send Data to SECONDS
I2cwbyte _min                                               ' MINUTES
I2cwbyte _hour                                              ' Hours
I2cstop

End Sub

Sub Setdate

_day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)

I2cstart                                                    ' Generate start code
I2cwbyte Ds1307w                                            ' send address
I2cwbyte 4                                                  ' starting address in 1307
I2cwbyte _day                                               ' Send Data to SECONDS
I2cwbyte _month                                             ' MINUTES
I2cwbyte _year                                              ' Hours
I2cstop

End Sub
Sub Dispdate
Sa(1) = Str(_day)
Sa(2) = Str(_month)
Sa(3) = Str(_year)
Format_00
Lcd "Date: " ; Sb(1) ; "-" ; Sb(2) ; "-" ; Sb(3)
End Sub


Sub Disptime
Sa(1) = Str(_hour)
Sa(2) = Str(_min)
Sa(3) = Str(_sec)
Format_00
Lcd "Time: " ; Sb(1) ; ":" ; Sb(2) ; ":" ; Sb(3)
End Sub

Sub Format_00
For I = 1 To 3 Step 1
Sb(i) = Format(sa(i) , "00")
Next I
End Sub



 

f. VIDEO HASILNYA














Mengakses Thermocouple Tipe K Menggunakan Arduino dan MAX6675

Mengakses Thermocouple Tipe K Menggunakan Arduino dan MAX6675


                Pada siang hari ini saya akan menjelaskan mengenai bagaimana cara membuat alat monitoring suhu menggunakan sensor thermocouple tipe k dan arduino uno. Alat ini menggunakan modul MAX6675 yang digunakan untuk cold & hot juncion compensation dan amplifier atau penguat tegangan output thermocouple tipe K, sehingga arduino bisa membaca dengan mudah hasil keluaran dari sensor thermocouple tersebut, Pada contoh kali menggunakan 3 buah output yaitu 1 buah led hijau dan 2 buah relay 5 volt untuk kontrol kipas atau motor. Alat ini akan mengaktifkan led dan relay jika suhu sudah mencapai 60 derajat celcius, jika ingin merubah parameternya maka rubah nilai "60" menjadi angka yang diinginkan pada kode dibawah ini. Untuk lebih jelasnya berikut program dan skema alat yang digunakan. Library MAX6675 bisa didownload di link berikut LINK.

(thermocouple.readCelsius() >= 60)


a. Arduino Uno




b. Thermocouple Tipe K dan MAX6675




c. LCD Display 16x2




d. Rangkaian Relay dan LED







e. Program Arduino IDE

#include <max6675.h>
#include <LiquidCrystal.h>
#include <Wire.h>

int relay1 = A0;
int relay2 = A1;
int led = 7;

int thermoDO = 4; //bisa juga S0
int thermoCS = 5;
int
thermoCLK = 6; //bisa juga SCK

MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;



//RS, E, D4, D5, D6, D7

LiquidCrystal lcd(8, 9, 10, 11, 12, 13);

// make a cute degree symbol
uint8_t degree[8]  = {140,146,146,140,128,128,128,128};

void setup() {
  pinMode(relay1, OUTPUT);
  pinMode(relay2, OUTPUT);
  pinMode(led, OUTPUT);
 
  Serial.begin(9600);
  // use Arduino pins
  pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
  pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
 
  lcd.begin(16, 2);
  lcd.createChar(0, degree);

  // wait for MAX chip to stabilize
  delay(500);
}

void loop() {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("SUHU = ");
 
  int dataku = thermocouple.readCelsius();
 
  lcd.print(thermocouple.readCelsius());
 
#if ARDUINO >= 100
  lcd.write((byte)0);
#else
  lcd.print(0, BYTE);
#endif
  lcd.print("C ");
  delay(1000);

if (thermocouple.readCelsius() >= 60) {
  digitalWrite(relay1, HIGH);
  digitalWrite(relay2, LOW);
  digitalWrite(led, HIGH);
}
else {
  digitalWrite(relay1, LOW);
  digitalWrite(relay2, HIGH);
  digitalWrite(led, LOW);
}    
}




f. Program Arduino IDE versi 2

#include <max6675.h>
#include <LiquidCrystal.h>
#include <Wire.h>

int relay1 = A0;
int relay2 = A1;
int led = 7;
int x = 0;

int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;

MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;

LiquidCrystal lcd(8, 9, 10, 11, 12, 13);

// make a cute degree symbol
uint8_t degree[8]  = {140,146,146,140,128,128,128,128};

void setup() {
  pinMode(relay1, OUTPUT);
  pinMode(relay2, OUTPUT);
  pinMode(led, OUTPUT);
 
  Serial.begin(9600);
  // use Arduino pins
  pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
  pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
 
  lcd.begin(16, 2);
  lcd.createChar(0, degree);

  // wait for MAX chip to stabilize
  delay(500);
}

void loop() {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("SUHU = ");
 
  int dataku = thermocouple.readCelsius();
 
  lcd.print(thermocouple.readCelsius());
 
#if ARDUINO >= 60
  lcd.write((byte)0);
#else
  lcd.print(0, BYTE);
#endif
  lcd.print("C ");
  delay(1000);


if ((thermocouple.readCelsius() >= 50) && (x == 0)) {
  digitalWrite(relay2, LOW);
  digitalWrite(relay1, HIGH);
  delay(10000);
  digitalWrite(relay2, LOW);
  digitalWrite(relay1, LOW);
  x = 1;
}
else {

if ((thermocouple.readCelsius() >= 50) && (x == 1)) {

 digitalWrite(relay2, LOW);
 digitalWrite(relay1, LOW);

}
else if ((thermocouple.readCelsius() <= 50) && (x == 0)) {
  
  digitalWrite(relay1, LOW);
  digitalWrite(relay2, HIGH);

}

else if ((thermocouple.readCelsius() <= 50) && (x == 1)) {
  
  digitalWrite(relay1, LOW);
  digitalWrite(relay2, HIGH);

}

}

}


 
g. VIDEO HASILNYA












Cara mengakses Tombol / Button dan Led menggunakan Bascom AVR

Cara mengakses Tombol / Button dan Led menggunakan Bascom AVR


             Pada kesempatan kali ini akan dibahas mengenai bagaimana cara mengakses tombol / button dan led menggunakan bahasa bascom avr. Ini adalah basic yang harus dikuasai bagi para pecinta mikrokontroller jika memang ingin menjadi seorang embedded freak. Prinsip kerja alat ini yaitu terdapat 3 buah button / tombol yang mana jika ditekan maka akan menghidupkan atau mematikan led sehingga memenuhi unsur I/0 input-output, tombol sebagai input dan led sebagai output. untuk lebih jelasnya berikut ulasannya. 


a. Minimum System




b. Program Bascom AVR

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

Ddrc = &B11111111

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

Portd.2 = 1
Portd.3 = 1
Portd.4 = 1

Do

If Pind.2 = 0 Then
Portc.0 = 0
Portc.1 = 1
Portc.2 = 1
Portc.3 = 0

Elseif Pind.3 = 0 Then
Portc.0 = 1
Portc.1 = 0
Portc.2 = 0
Portc.3 = 1

Elseif Pind.4 = 0 Then
Portc.0 = 0
Portc.1 = 0
Portc.2 = 0
Portc.3 = 0

Else
Portc.0 = 1
Portc.1 = 1
Portc.2 = 1
Portc.3 = 1

End If

Loop




c. Cara Penggunaan

               Hubungkan mikrokontroller dengan power supply, kemudian masukkan program diatas dan lihat hasilnya, saat tombol ditekan maka akan menghidupkan led yang bervariasi, rubah susunan variasi jika diperlukan atau bisa juga ditambahkan led lebih banyak dari yang dicontohkan.














Komunikasi Serial UART Antara 2 Mikrokontroller

Komunikasi Serial UART Antara 2 Mikrokontroller


              Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara mengakses dua buah mikrokontroller dengan komunikasi serial UART, jadi prinsip kerjanya yaitu ada dua buah mikrokontroller dengan satu buah mikrokontroller sebagai master atau trasmitter atau pengirim data, kemudian mikrokontroller kedua diposisikan menjadi slave atau receiver atau penerima. Data yang akan dikirimkan oleh transmitter adalah data ADC yang didapat oleh mikrokontroller melalui PortA atau Port ADC. Mikrokontroller kedua dilengkapi dengan sebuah LCD yang akan digunakan untuk penampil datanya. untuk lebih jelasnya berikut ulasan lengkapnya.


a. Minimum System ATMega Master dan Slave




b. Cara menghubungkan 2 Mikrokontroller via UART / Serial




c. Program Bascom AVR Master / Trasmitter

$regfile = "m16def.dat"
$crystal = 11059200
$baud = 9600

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Dim Dataadc As Word

Ddrc = &B11111111

Do
Dataadc = Getadc(0)

Print Dataadc

Waitms 100

Loop



d. Program Bascom AVR Slave / Receiver

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

Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2

Cls
Cursor Off

Dim Datamasuk As String * 10
Dim Cmd As String * 10

Do

Input Datamasuk

Cmd = Mid(datamasuk , 4 , 4)

Locate 1 , 1
Lcd Cmd

Waitms 200

Cls

Loop









Cara Import Library ARDUINO


10. Cara Import Library ARDUINO 
            Pada bagian ini akan dijelaskan mengenai bagaimana cara import library dari suatu library yang didapat baik itu membuat sendiri atau download dari internet agar bisa diakses pada program yang dibuat. Pada contoh di jelaskan ada sebuah library dengan nama “ SparkFun-APDS9960.rar “, kemudian library tersebut akan dipakai untuk Arduino, caranya yaitu sebagai berikut.

a. Langkah 1
            Ekstrak terlebih dahulu “ SparkFun-APDS9960.rar ” sehingga didapat sebuah folder dengan nama yang sama, kemudian rubah namanya menjadi “ SparkFun_APDS9960 “.

b. Langkah 2
     Pindahkan file “ SparkFun_APDS9960 ” ke alamat  C:\Users\komputerku\Documents \Arduino\libraries, jika berhasil maka akan muncul di Arduino pada menu File -> Examples  

 



                                            Cara Menggunakan dan Setting Arduino IDE
                                                                  BACK PAGE