#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#include <Wire.h>
//DOT MATRIX
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define MAX_DEVICES 8
MD_Parola EF = MD_Parola(HARDWARE_TYPE, 51, 52, 53, MAX_DEVICES);
char nama[] = "WA ODE SIFIYA USMADIN 21650055";
int textLength;
//SENSOR LM35
#define ADC_VREF_mV 5000.0 // in millivolt
#define ADC_RESOLUTION 1024.0
#define PIN_LM35 A0
//LED & TOMBOL
int tombol = 50; //deklarasi variabel tombol pada pin 50
int tombol2 = 49;
int tombol3 = 48;
int led_merah = 23; //deklarasi variabel led_hijau pada pin 23
int led_kuning = 25; //deklarasi variabel led_kuning pada pin 25
int led_hijau = 27; //deklarasi variabel led_merah pada pin 27
int led_biru = 29;
int led_ungu = 31;
int jumlahTekanan;
int state; //deklarasi variabel untuk menghitung jumlah tekanan yang diberikan ke tombol
int tombol4 ;
int tombolsebelumnya = 1;
int hitung;
const byte numeral[10] =
{
// 0 = led dalam seven segment yang tidak diberikan tagangan
// 1 = led dalam seven segment yang diberikan tagangan masukan
B11111101, // angka 0
B01100001, // angka 1
B11011011, // angka 2
B11110011, // angka 3
B01100111, // angka 4
B10110111, // angka 5
B10111111, // angka 6
B11100001, // angka 7
B11111111, // angka 8
B11110111, // angka 9
};
const int segmentPins[8] = { 5,9,8,7,6,4,3,2};
const int Pin[8] = { 17,18,19,14,15,16,21,20};
const int segA = 20;
const int segB = 21;
const int segC = 19;
const int segD = 18;
const int segE = 16;
const int segF = 15;
const int segG = 14;
void setup() {
Serial.begin(9600);
//INISIALISASI DOT MATRIX
EF.begin();
EF.setInvert(false); // Ubah ke true jika perlu membalik warna (putih pada latar belakang gelap)
EF.displayText(nama, PA_CENTER, 50, 0, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
// put your setup code here, to run once:
pinMode(tombol, INPUT); //inisialisasi untuk pin pada variabel tombol sebagai input
pinMode(tombol2, INPUT);
pinMode(tombol3, INPUT);
pinMode(led_hijau, OUTPUT); //inisialisasi untuk pin pada variabel led_hijau sebagai output
pinMode(led_kuning, OUTPUT);
pinMode(led_merah, OUTPUT);
pinMode(led_biru, OUTPUT);
pinMode(led_ungu, OUTPUT);
// Set semua pin sebagai OUTPUT
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
pinMode(13, INPUT_PULLUP);
//inisialisasi 7segment
for(int i=0; i < 8; i++)
{
pinMode(segmentPins[i], OUTPUT);
}
}
void loop() {
tombol4 = digitalRead(13);
if(tombol4 != tombolsebelumnya){
if(tombol4 == LOW){
if(hitung == 9){
hitung = -1;
}
hitung ++;
Serial.println(hitung);
delay(100);
}
}
// get the ADC value from the temperature sensor
int adcVal = analogRead(PIN_LM35);
// convert the ADC value to voltage in millivolt
float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION);
// convert the voltage to the temperature in Celsius
float tempC = milliVolt / 10;
// convert the Celsius to Fahrenheit
float tempF = tempC * 9 / 5 + 32;
Serial.print("Temperature: ");
Serial.print(tempC); // print the temperature in Celsius
Serial.print("°C");
Serial.print(" ~ "); // separator between Celsius and Fahrenheit
Serial.print(tempF); // print the temperature in Fahrenheit
Serial.println("°F");
if(EF.displayAnimate()){
EF.displayReset();
}
// put your main code here, to run repeatedly:
int statusTombol = digitalRead(tombol); //membaca sinyal digital yang dikirim oleh tombol ke pin dan dimasukkan ke dalam variabel statusTombol
//skrip untuk menyalakan led berurutan
if(statusTombol==HIGH){
jumlahTekanan ++; //menambahkan nilai +1 ke dalam variabel jumlahTekanan untuk menghitung berapa kali tekanan diberikan
delay(200); //delay agar tidak terjadi pembacaan tekanan dua kali
if(jumlahTekanan==1){
digitalWrite(led_merah, HIGH);
}
else if(jumlahTekanan==2){
digitalWrite(led_kuning, HIGH);
}
else if(jumlahTekanan==3){
digitalWrite(led_hijau, HIGH);
}
else if(jumlahTekanan==4){
digitalWrite(led_biru, HIGH);
}
else if(jumlahTekanan==5){
digitalWrite(led_ungu, HIGH);
}
else if(jumlahTekanan==6){
digitalWrite(led_hijau, LOW);
digitalWrite(led_kuning, LOW);
digitalWrite(led_merah, LOW);
digitalWrite(led_biru, LOW);
digitalWrite(led_ungu, LOW);
jumlahTekanan=0;
}
}
int buttonState2 = digitalRead(tombol2);
if (buttonState2 == HIGH) {
jumlahTekanan ++;
state = 0;
state = 4;
}
if(state==4){
digitalWrite(led_merah, HIGH);
digitalWrite(led_kuning, HIGH);
digitalWrite(led_hijau, HIGH);
digitalWrite(led_biru, HIGH);
digitalWrite(led_ungu, HIGH);
}
int buttonState3 = digitalRead(tombol3);
if (buttonState3 == HIGH) {
state = 0;
state = 5;
}
if(state==5){
digitalWrite(led_merah, HIGH);
delay(100);
digitalWrite(led_merah, LOW);
digitalWrite(led_kuning, HIGH);
delay(100);
digitalWrite(led_kuning, LOW);
digitalWrite(led_hijau, HIGH);
delay(100);
digitalWrite(led_hijau, LOW);
digitalWrite(led_biru, HIGH);
delay(100);
digitalWrite(led_biru, LOW);
digitalWrite(led_ungu, HIGH);
delay(100);
digitalWrite(led_ungu, LOW);
}
for(int i=0; i <= 10; i++)
{
showDigit(i);
// delay(500);
}
// //2
// digitalWrite(segA, LOW);
// digitalWrite(segB, LOW);
// digitalWrite(segC, HIGH);
// digitalWrite(segD, LOW);
// digitalWrite(segE, HIGH);
// digitalWrite(segF, LOW);
// digitalWrite(segG, LOW);
// delay (500);
// digitalWrite(segA, HIGH);
// digitalWrite(segB, HIGH);
// digitalWrite(segC, HIGH);
// digitalWrite(segD, LOW);
// digitalWrite(segE, HIGH);
// digitalWrite(segF, HIGH);
// digitalWrite(segG, HIGH);
// delay (500);
// //1
// digitalWrite(segA, HIGH);
// digitalWrite(segB, LOW);
// digitalWrite(segC, HIGH);
// digitalWrite(segD, HIGH);
// digitalWrite(segE, LOW);
// digitalWrite(segF, HIGH);
// digitalWrite(segG, HIGH);
// delay (500);
// digitalWrite(segA, HIGH);
// digitalWrite(segB, HIGH);
// digitalWrite(segC, HIGH);
// digitalWrite(segD, LOW);
// digitalWrite(segE, HIGH);
// digitalWrite(segF, HIGH);
// digitalWrite(segG, HIGH);
// delay (500);
// //6
// digitalWrite(segA, LOW);
// digitalWrite(segB, HIGH);
// digitalWrite(segC, LOW);
// digitalWrite(segD, LOW);
// digitalWrite(segE, LOW);
// digitalWrite(segF, LOW);
// digitalWrite(segG, LOW);
// delay(500);
// digitalWrite(segA, HIGH);
// digitalWrite(segB, HIGH);
// digitalWrite(segC, HIGH);
// digitalWrite(segD, LOW);
// digitalWrite(segE, HIGH);
// digitalWrite(segF, HIGH);
// digitalWrite(segG, HIGH);
// delay (500);
// //5
// digitalWrite(segA, LOW);
// digitalWrite(segB, HIGH);
// digitalWrite(segC, LOW);
// digitalWrite(segD, LOW);
// digitalWrite(segE, LOW);
// digitalWrite(segF, LOW);
// digitalWrite(segG, HIGH);
// delay (500);
// digitalWrite(segA, HIGH);
// digitalWrite(segB, HIGH);
// digitalWrite(segC, HIGH);
// digitalWrite(segD, LOW);
// digitalWrite(segE, HIGH);
// digitalWrite(segF, HIGH);
// digitalWrite(segG, HIGH);
// delay (500);
// //0
// digitalWrite(segA, LOW);
// digitalWrite(segB, LOW);
// digitalWrite(segC, LOW);
// digitalWrite(segD, HIGH);
// digitalWrite(segE, LOW);
// digitalWrite(segF, LOW);
// digitalWrite(segG, LOW);
// delay (500);
// digitalWrite(segA, HIGH);
// digitalWrite(segB, HIGH);
// digitalWrite(segC, HIGH);
// digitalWrite(segD, LOW);
// digitalWrite(segE, HIGH);
// digitalWrite(segF, HIGH);
// digitalWrite(segG, HIGH);
// delay (500);
// //0
// digitalWrite(segA, LOW);
// digitalWrite(segB, LOW);
// digitalWrite(segC, LOW);
// digitalWrite(segD, HIGH);
// digitalWrite(segE, LOW);
// digitalWrite(segF, LOW);
// digitalWrite(segG, LOW);
// delay (500);
// digitalWrite(segA, HIGH);
// digitalWrite(segB, HIGH);
// digitalWrite(segC, HIGH);
// digitalWrite(segD, LOW);
// digitalWrite(segE, HIGH);
// digitalWrite(segF, HIGH);
// digitalWrite(segG, HIGH);
// delay (500);
// //5
// digitalWrite(segA, LOW);
// digitalWrite(segB, HIGH);
// digitalWrite(segC, LOW);
// digitalWrite(segD, LOW);
// digitalWrite(segE, LOW);
// digitalWrite(segF, LOW);
// digitalWrite(segG, HIGH);
// delay (500);
// digitalWrite(segA, HIGH);
// digitalWrite(segB, HIGH);
// digitalWrite(segC, HIGH);
// digitalWrite(segD, LOW);
// digitalWrite(segE, HIGH);
// digitalWrite(segF, HIGH);
// digitalWrite(segG, HIGH);
// delay (500);
// //5
// digitalWrite(segA, LOW);
// digitalWrite(segB, HIGH);
// digitalWrite(segC, LOW);
// digitalWrite(segD, LOW);
// digitalWrite(segE, LOW);
// digitalWrite(segF, LOW);
// digitalWrite(segG, HIGH);
// delay (500);
}
void showDigit( int number)
{
boolean isBitSet;
for(int segment = 1; segment < 8; segment++)
{
if( number < 0 || number > 9)
{
isBitSet = 0; // turn off all segments
}
else
{
// isBitSet will be true if given bit is 1
isBitSet = bitRead(numeral[number], segment);
}
isBitSet = !isBitSet;
digitalWrite( segmentPins[segment], isBitSet);
}
}