0% menganggap dokumen ini bermanfaat (0 suara)
9 tayangan8 halaman

Laporan Praktikum Internet of Things Timer Dan Counter Pada Mikrokontroler

Diunggah oleh

naniratmini5
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
9 tayangan8 halaman

Laporan Praktikum Internet of Things Timer Dan Counter Pada Mikrokontroler

Diunggah oleh

naniratmini5
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 8

LAPORAN PRAKTIKUM

Internet of Things
Timer dan Counter pada Mikrokontroler

Disusun oleh:
Ilham Rezkiawan
(23/522232/SV/23637)
Isdiizaz Zhifrana Ramadhana
(23/522272/SV/23643)
Kelas : IK3B2

TEKNOLOGI REKAYASA INSTRUMENTASI DAN KONTROL


DEPARTEMEN TEKNIK ELEKTRO DAN INFORMATIKA
SEKOLAH VOKASI
UNIVERSITAS GADJAH MADA
2024

JOOBSHEET
NO. 1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

boolean dataLed = 0;
unsigned int overflowCount = 0;

// Inisialisasi LCD I2C (alamat bisa berbeda, biasanya 0x27 atau 0x3F)
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C 0x27, 16 karakter, 2 baris

void setup(){
Serial.begin(9600);
pinMode(13, OUTPUT);

// Inisialisasi LCD
lcd.backlight();

// Set timer dengan prescaler 256


TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 34286;
TCCR1B = (1 << CS12); // 256 prescaler
TIMSK1 = (1 << TOIE1); // Enable Timer Overflow Interrupt
sei(); // Enable global interrupt

// Tampilkan pesan awal di LCD


lcd.setCursor(0, 0);
lcd.print("Overflow:");
lcd.setCursor(0, 1);
lcd.print("LED State:");
}

ISR (TIMER1_OVF_vect) {
TCNT1 = 34286; // Reload timer value

// Update status LED


if(dataLed == 0){
dataLed = 1;
} else {
dataLed = 0;
}

digitalWrite(13, dataLed); // Update LED state


overflowCount++; // Increment overflow count
}

void loop() {
// Tampilkan overflowCount dan status LED di Serial Monitor
Serial.print("Overflow Count = ");
Serial.print(overflowCount);
Serial.print(", LED State = ");
Serial.println(dataLed);

// Tampilkan data ke LCD


lcd.setCursor(10, 0); // Set posisi pada baris pertama
lcd.print(overflowCount); // Tampilkan overflow count
lcd.setCursor(10, 1); // Set posisi pada baris kedua
lcd.print(dataLed); // Tampilkan status LED (0 atau 1)

delay(100); // Delay for readability


}
NO. 2

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Inisialisasi display I2C 20x4


LiquidCrystal_I2C lcd(0x27, 20, 4);

unsigned long previousMillis = 0; // Waktu terakhir diperbarui


const long interval = 1000; // Interval 1 detik

// Variabel untuk jam, menit, dan detik


int hours = 0;
int minutes = 0;
int seconds = 0;

void setup() {
// Inisialisasi tampilan LCD
lcd.init();
lcd.backlight();

// Tampilkan teks tetap pada baris 1, 2, dan 4 dengan huruf besar


lcd.setCursor(0, 0);
lcd.print("PRAKT MIKROKONTROLER");

lcd.setCursor(0, 1);
lcd.print("JAM DIGITAL W9 TIMER");

lcd.setCursor(2, 3); // Posisikan teks agar berada di tengah baris keempat


lcd.print("BY ILHAM & ZIFRAN");
}

void loop() {
unsigned long currentMillis = millis();

// Perbarui waktu setiap detik


if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
seconds++; // Tambah detik

// Cek jika detik mencapai 60


if (seconds >= 60) {
seconds = 0;
minutes++; // Tambah menit
}
// Cek jika menit mencapai 60
if (minutes >= 60) {
minutes = 0;
hours++; // Tambah jam
}

// Cek jika jam mencapai 24


if (hours >= 24) {
hours = 0; // Reset jam
}
}

// Tampilkan jam:menit:detik pada baris ketiga, di tengah


lcd.setCursor(5, 2); // Posisikan jam di tengah baris ketiga
if (hours < 10) lcd.print('0'); // Tambahkan 0 jika jam < 10
lcd.print(hours);
lcd.print(':');
if (minutes < 10) lcd.print('0'); // Tambahkan 0 jika menit < 10
lcd.print(minutes);
lcd.print(':');
if (seconds < 10) lcd.print('0'); // Tambahkan 0 jika detik < 10
lcd.print(seconds);
}

NO. 3
/* Program Pertemuan 7.3 */
/* Counter Mode Falling Edge */

void setup() {
Serial.begin(9600); // Inisialisasi komunikasi serial

// Konfigurasi Timer1 untuk counter mode (Falling Edge)


TCCR1A = 0x00; // Mode normal
TCCR1B = 0x06; // External clock source on T1 pin (Falling edge)

// Reset nilai counter


TCNT1H = 0x00;
TCNT1L = 0x00;

// Tidak menggunakan ICR1 dan OCR1, jadi kita bisa mengabaikan


ICR1H = 0x00;
ICR1L = 0x00;
OCR1AH = 0x00;
OCR1BH = 0x00;
}

void loop() {
// Tampilkan nilai dari Timer1 (TCNT1) dalam format desimal
Serial.print("Nilai TCNT1 = ");
Serial.println(TCNT1, DEC); // Cetak nilai TCNT1 dalam desimal
delay(100); // Delay untuk memberikan jeda waktu
}

Anda mungkin juga menyukai