#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
// Definisikan pin untuk tombol dan potensiometer
const int redButtonPin = 2;
const int yellowButtonPin = 3;
const int blueButtonPin = 4;
const int greenButtonPin = 5;
const int potPin = A0;
// Definisikan pin untuk LED
const int led1Pin = 7;
const int led2Pin = 8;
const int led3Pin = 9;
// Definisikan pin untuk buzzer
const int buzzer1Pin = A2;
const int buzzer2Pin = A1;
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define MAX_DEVICES 4
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10
MD_Parola tampil = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
//MD_Parola tampil = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
bool program1Running = false;
bool program2Running = false;
bool program3Running = false;
bool program4Running = false;
// Tambahkan variabel untuk menyimpan nilai kecepatan gerakan teks
int textSpeed = 50;
// Tambahkan fungsi untuk mengatur kecepatan gerakan teks
void setSpeed(int speed) {
textSpeed = speed;
}
// Tambahkan fungsi untuk menampilkan teks "FAROQ-21650092" yang bergerak dari kanan ke kiri
void showScrollingText() {
// Jika tombol kuning ditekan, tingkatkan kecepatan gerakan teks
if (!digitalRead(yellowButtonPin)) {
textSpeed++;
}
// Jika tombol kuning ditekan lagi, kurangi kecepatan gerakan teks
if (!digitalRead(yellowButtonPin)) {
textSpeed--;
}
// Jika kecepatan gerakan teks lebih dari 100, atur ke 100
if (textSpeed > 100) {
textSpeed = 100;
}
// Jika kecepatan gerakan teks kurang dari 1, atur ke 1
if (textSpeed < 1) {
textSpeed = 1;
}
// Tampilkan teks "FAROQ-21650092" yang bergerak dari kanan ke kiri
static int textPosition = 0;
const char text[] = "FAROQ-21650092 ";
tampil.displayText(text, PA_LEFT, 60, 0, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
for (int i = 0; i < 15; i++) {
//lc.setChar(0, i, text[(textPosition + i) % 15], false);
if (tampil.displayAnimate()) {
tampil.displayReset();
}
}
textPosition++;
delay(textSpeed);
}
void setup() {
// Inisialisasi tombol dan LED sebagai input/output
pinMode(redButtonPin, INPUT_PULLUP);
pinMode(yellowButtonPin, INPUT_PULLUP);
pinMode(blueButtonPin, INPUT_PULLUP);
pinMode(greenButtonPin, INPUT_PULLUP);
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(led3Pin, OUTPUT);
// Inisialisasi tampilan dot matrix
tampil.begin();
tampil.print("halo");
delay(2000);
tampil.displayClear();
}
void loop() {
// Periksa status tombol
if (digitalRead(redButtonPin) == LOW) {
// Mulai program 1
program1Running = true;
program2Running = false;
program3Running = false;
program4Running = false;
} else if (!digitalRead(yellowButtonPin)) {
// Mulai program 2
program1Running = false;
program2Running = true;
program3Running = false;
program4Running = false;
} else if (!digitalRead(blueButtonPin)) {
// Mulai program 4
program1Running = false;
program2Running = false;
program3Running = false;
program4Running = true;
} else if (!digitalRead(greenButtonPin)) {
// Matikan semua program
program1Running = false;
program2Running = false;
program3Running = false;
program4Running = false;
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
noTone(buzzer1Pin);
noTone(buzzer2Pin);
//lc.clearDisplay(0);
tampil.displayClear();
}
// Jalankan program yang aktif
if (program1Running) {
// Tampilkan output dari potensiometer
int potValue = analogRead(potPin);
int outputValue = map(potValue, 0, 1023, 0, 15);
//lc.setRow(0, 0, outputValue);
tampil.print(outputValue);
// Aktifkan buzzer jika potensiometer lebih dari 50%
if (potValue > 512) {
tone(buzzer1Pin, 1000);
tone(buzzer2Pin, 1000);
} else {
noTone(buzzer1Pin);
noTone(buzzer2Pin);
}
} else if (program4Running) {
// Tampilkan teks "FAROQ-21650092" yang bergerak dari kanan ke kiri
showScrollingText();
}
}