// Libraries
#include <SevSeg.h>
// Constants
const int ledPin = 2; // Pin untuk LED
const int motorPin = 3; // Pin untuk motor DC
const int buttonPin = 4; // Pin untuk push button
const int segmentPins[] = {5, 6, 7, 8, 9, 10, 11, 12}; // Pin untuk 7-segment display
// Objects
SevSeg sevseg; // Objek untuk 7-segment display
// Variables
int motorSpeed = 0; // Kecepatan motor DC
bool buttonState = false; // Status push button
int number = 0; // Angka yang ditampilkan pada 7-segment display
void setup() {
// Set pin modes
pinMode(ledPin, OUTPUT);
pinMode(motorPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
// Setup 7-segment display
sevseg.begin(COMMON_CATHODE, sizeof(segmentPins), segmentPins);
// Set initial display value
sevseg.setNumber(number);
sevseg.refreshDisplay();
}
void loop() {
// Baca status push button
buttonState = digitalRead(buttonPin);
// Toggle LED
digitalWrite(ledPin, buttonState);
// Putar motor DC dengan kecepatan sesuai nilai angka
analogWrite(motorPin, motorSpeed);
// Tampilkan angka pada 7-segment display
sevseg.setNumber(number);
sevseg.refreshDisplay();
// Increment angka ketika push button ditekan
if (buttonState == LOW) {
number++;
delay(200); // Delay untuk menghindari bouncing push button
}
// Reset angka ke 0 ketika mencapai 10
if (number >= 10) {
number = 0;
}
// Set kecepatan motor berdasarkan angka yang ditampilkan
motorSpeed = map(number, 0, 9, 0, 255);
// Delay antar iterasi
delay(100);
}