PERCOBAAN 1
KOMUNIKASI UART MENGGUNAKAN ARDUINO
1. Rangkai komponen sesuai percobaan dan kondisi yang dipilih.
2. Buat program menggunakan Arduino IDE.
3. Compile program yang telah dibuat lalu Upload ke dalam Arduino Uno.
4. Uji coba program pada rangkaian percobaan sesuai dengan kondisi yang diinginkan.
5. Selesai
2. Hardware dan Diagram Blok
[Kembali]
3. Rangkaian Simulasi dan Prinsip Kerja
[Kembali]
Rangkaian Simulasi:
Prinsip Kerja:
Pada percobaan ini digunakan dua buah arduino yang mana dihubungkan melalui komunikasi dengan jenis UART, kedua arduino mempunyai peran masing- masing. Arduino master berfungsi menerima input dari button dan menerjemahkannya menjadi pesan- pesan tertentu. arduino slave berfungsi menerima pesan dari arduino master dan mengontrol LED sesuai dengan pesan yang diterima tersebut. Pada komunikasi UART, kedua arduino dihubungkan melalui pin Tx dan Rx dari masing- masing arduino, pin Tx pada arduino master dihubungkan dengan pin Rx pada arduino slave, sedangkan pin Rx pada arduino master dihubungkan dengan pin Tx pada arduino slave sehingga pada hubungan UART terbentuk komunikasi dua arah. Contohnya, ketika button pertama ditekan, maka arduino master akan menerjemahkannya sebagai pesan atau data "1" kemudian dikirimkan kepada arduino slave, ketika arduino slave menerima pesan tersebut, maka arduino slave akan mengaktifkan LED pada pin 2 (led pertama) begitu juga dengan kondisi lainnya yang dihubungkan antara input, arduino master, arduino slave, dan LED.
4. Flowchart dan Listing Program
[Kembali]
Flowchart :
Listing Program :
Master
// MASTER
#define DS1 2
#define DS2 3
#define DS3 4
#define DS4 5
#define DS5 6
#define DS6 7
#define DS7 8
#define DS8 9
void setup()
{
Serial.begin(9600);
pinMode(DS1, INPUT_PULLUP);
pinMode(DS2, INPUT_PULLUP);
pinMode(DS3, INPUT_PULLUP);
pinMode(DS4, INPUT_PULLUP);
pinMode(DS5, INPUT_PULLUP);
pinMode(DS6, INPUT_PULLUP);
pinMode(DS7, INPUT_PULLUP);
pinMode(DS8, INPUT_PULLUP);
}
void loop()
{
bool b8 = digitalRead(DS8);
bool b7 = digitalRead(DS7);
bool b6 = digitalRead(DS6);
bool b5 = digitalRead(DS5);
bool b4 = digitalRead(DS4);
bool b3 = digitalRead(DS3);
bool b2 = digitalRead(DS2);
bool b1 = digitalRead(DS1);
// Hidupkan LED sesuai dengan tombol yang ditekan
if (b8 == LOW)
{
Serial.write('8');
}
else if (b7 == LOW)
{
Serial.write('7');
}
else if (b6 == LOW)
{
Serial.write('6');
}
else if (b5 == LOW)
{
Serial.write('5');
}
else if (b4 == LOW)
{
Serial.write('4');
}
else if (b3 == LOW)
{
Serial.write('3');
}
else if (b2 == LOW)
{
Serial.write('2');
}
else if (b1 == LOW)
{
Serial.write('1');
}
delay(20);
}
Slave
// SLAVE
int led[] = {2, 3, 4, 5, 6, 7, 8, 9};
char message;
void setup()
{
Serial.begin(9600);
for (int i = 0; i < 8; i++)
{
pinMode(led[i], OUTPUT);
}
}
void loop()
{
if (Serial.available())
{
message = Serial.read();
if (message == '1')
{
digitalWrite(led[0], 1);
}
else if (message == '2')
{
digitalWrite(led[1], 1);
}
else if (message == '3')
{
digitalWrite(led[2], 1);
}
else if (message == '4')
{
digitalWrite(led[3], 1);
}
else if (message == '5')
{
digitalWrite(led[4], 1);
}
else if (message == '6')
{
digitalWrite(led[5], 1);
}
else if (message == '7')
{
digitalWrite(led[6], 1);
}
else if (message == '8')
{
digitalWrite(led[7], 1);
}
delay(20); // moved delay inside the if block
digitalWrite(led[0], 0);
digitalWrite(led[1], 0);
digitalWrite(led[2], 0);
digitalWrite(led[3], 0);
digitalWrite(led[4], 0);
digitalWrite(led[5], 0);
digitalWrite(led[6], 0);
digitalWrite(led[7], 0);
}
}
5. Kondisi [Kembali]
Percobaan 1 pada Modul 3
Download HTML klik disini
Download Video Percobaan klik disini
Download Listing Program klik disini
Download datasheet arudino klik disini
Tidak ada komentar:
Posting Komentar