#include "DHT.h"
#define DHTPIN A5
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// tombol 1
#define buttonPin1 A0
uint8_t butState1 = 0; // current state of the button
uint8_t lastButSt1 = 0; // previous state of the button
unsigned long lastDebTime1 = 0; // the last time the output pin was toggled
unsigned long debDelay = 10;
// tombol 2
#define buttonPin2 A1
uint8_t butState2 = 0; // current state of the button
uint8_t lastButSt2 = 0; // previous state of the button
unsigned long lastDebTime2 = 0; // the last time the output pin was toggled
// tombol 3
#define buttonPin3 A2
uint8_t butState3 = 0; // current state of the button
uint8_t lastButSt3 = 0; // previous state of the button
unsigned long lastDebTime3 = 0; // the last time the output pin was toggled
unsigned long lastmillis = 0;
int buzz = A4;
//int pwm = 10;
int kondisi = 1;
int data;
int sensor = A3;
int nilai = 0;
int satuan,puluhan,ratusan,ribuan;
int seg[] = {11,12,13,10};
int segmentpin[] = {2,3,4,6,7,8,9,5};
byte segment[][8]={{0,0,0,0,0,0,1,1},{1,0,0,1,1,1,1,1},{0,0,1,0,0,1,0,1}
,{0,0,0,0,1,1,0,1},{1,0,0,1,1,0,0,1},{0,1,0,0,1,0,0,1}
,{0,1,0,0,0,0,0,1},{0,0,0,1,1,1,1,1},{0,0,0,0,0,0,0,1}
,{0,0,0,0,1,0,0,1}};
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
for(int i = 0; i < 8; i++){
pinMode(segmentpin[i], OUTPUT);
}
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
pinMode(seg[0], OUTPUT);
pinMode(seg[1], OUTPUT);
pinMode(seg[2], OUTPUT);
// pinMode(seg[3], OUTPUT);
// pinMode(pwm, OUTPUT);
dht.begin();
pinMode(sensor, INPUT);
pinMode(buzz, OUTPUT);
digitalWrite(seg[0],HIGH);
digitalWrite(seg[1],HIGH);
digitalWrite(seg[2],HIGH);
}
void loop() {
// put your main code here, to run repeatedly:
// Serial.println(data);
uint8_t reading1 = digitalRead(buttonPin1);
if (reading1 != lastButSt1) {
lastDebTime1 = millis();
}
// Serial.println(reading);
if ((millis() - lastDebTime1) > debDelay) {
if (reading1 != butState1) {
butState1 = reading1;
if (butState1 == HIGH) {
if(nilai < 999){
nilai+=1;
}
}
}
}
lastButSt1 = reading1;
uint8_t reading2 = digitalRead(buttonPin2);
if (reading2 != lastButSt2) {
lastDebTime2 = millis();
}
// Serial.println(reading);
if ((millis() - lastDebTime2) > debDelay) {
if (reading2 != butState2) {
butState2 = reading2;
if (butState2 == HIGH) {
if(nilai > 0){
nilai-=1;
}
}
}
}
lastButSt2 = reading2;
uint8_t reading3 = digitalRead(buttonPin3);
if (reading3 != lastButSt3) {
lastDebTime3 = millis();
}
// Serial.println(reading);
if ((millis() - lastDebTime3) > debDelay) {
if (reading3 != butState3) {
butState3 = reading3;
if (butState3 == HIGH) {
kondisi = !kondisi;
digitalWrite(buzz,HIGH);
}
}
}
lastButSt3 = reading3;
if((millis() - lastmillis) > 100){
lastmillis = millis();
digitalWrite(buzz,LOW);
// if(nilai < 999){
// nilai+=1;
// }else{
// nilai=0;
// }
}
if(kondisi){
data = 10 * dht.readTemperature();
}else{
data = analogRead(sensor) / 4;
}
// analogWrite(pwm,data);
satuan = data % 10;
puluhan = (data / 10) % 10;
ratusan = (data / 100) % 10;
ribuan = (data / 1000) % 10;
seg1(satuan);
seg2(puluhan);
seg3(ratusan);
seg4(ribuan);
// for(int b = 0; b < 8; b++){
// digitalWrite(segmentpin[b],segment[nilai%10][b]);
// Serial.print(segment[nilai][b]);
// }
// Serial.println(nilai);
// if(nilai == 10){
// nilai = 0;
// }
}
void seg1(unsigned int data){
for(int b = 0; b < 8; b++){
digitalWrite(segmentpin[b],segment[data][b]);
}
digitalWrite(seg[0],HIGH);
delay(5);
digitalWrite(seg[0],LOW);
}
void seg2(unsigned int data){
for(int b = 0; b < 8; b++){
if( b == 7 && kondisi == 1){
digitalWrite(segmentpin[b],0);
}else{
digitalWrite(segmentpin[b],segment[data][b]);
}
}
digitalWrite(seg[1],HIGH);
delay(5);
digitalWrite(seg[1],LOW);
}
void seg3(unsigned int data){
for(int b = 0; b < 8; b++){
digitalWrite(segmentpin[b],segment[data][b]);
}
digitalWrite(seg[2],HIGH);
delay(5);
digitalWrite(seg[2],LOW);
}
void seg4(unsigned int data){
for(int b = 0; b < 8; b++){
digitalWrite(segmentpin[b],segment[data][b]);
}
digitalWrite(seg[3],HIGH);
delay(5);
digitalWrite(seg[3],LOW);
}