<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Simulasi Jam Digital dan Suhu</title>
<script src="https://cdn.wokwi.com/wokwi/wokwi.js"></script>
<link rel="stylesheet" href="https://cdn.wokwi.com/wokwi/wokwi.css">
<style>
body {
font-family: sans-serif;
text-align: center;
}
#clock {
font-size: 24px;
margin-top: 50px;
}
#temperature {
font-size: 18px;
margin-top: 20px;
}
</style>
</head>
<body>
<wokwi-arduino id="arduino" board="arduino" frequency="16mhz"></wokwi-arduino>
<script>
const arduino = document.getElementById('arduino');
// Include libraries for RTC and DHT-22
#include <Wire.h>
#include <DS1307.h>
#include <DHT.h>
// Define pins for RTC, DHT-22, and dot matrix display
const int clkPin = 13;
const int dataPin = 11;
const int csPin = 10;
const int dhtPin = 2;
const int dhtType = DHT22;
// Instantiate RTC and DHT-22 objects
DS1307 rtc(DS1307_ADDRESS);
DHT dht(dhtPin, dhtType);
// Initialize dot matrix display
MD_Parola P = MD_Parola(MD_MAX72XX::PAROLA_HW, csPin, 1); // 1 device
// Function to set the time on the RTC
void setTime(uint8_t hour, uint8_t minute, uint8_t second) {
rtc.set(DS1307::HOUR, hour);
rtc.set(DS1307::MINUTE, minute);
rtc.set(DS1307::SECOND, second);
}
// Function to read the time from the RTC
void getTime(uint8_t &hour, uint8_t &minute, uint8_t &second) {
hour = rtc.get(DS1307::HOUR);
minute = rtc.get(DS1307::MINUTE);
second = rtc.get(DS1307::SECOND);
}
// Function to display the time on the dot matrix display
void displayTime() {
uint8_t hour, minute, second;
getTime(hour, minute, second);
// Convert time to string
char timeString[10];
sprintf(timeString, "%02d:%02d:%02d", hour, minute, second);
// Display time on dot matrix display
P.showString(timeString, 1); // Start at row 1
}
// Function to read the temperature from the DHT-22 sensor
float readTemperature() {
float humidity, temperature;
// Read temperature and humidity from DHT-22 sensor
dht.readSensor(humidity, temperature);
// Return temperature
return temperature;
}
// Function to display the temperature on the dot matrix display
void displayTemperature() {
float temperature = readTemperature();
// Convert temperature to string
char temperatureString[10];
sprintf(temperatureString, "%02.1f°C", temperature);
// Display temperature on dot matrix display
P.showString(temperatureString, 3); // Start at row 3
}
// Set