#include <Keypad.h>
#include <LiquidCrystal.h>
#include "DHT.h"
#define DHTPIN 14// you can use
#define DHTTYPE DHT11//#define DHTTYPE DHT21
//#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);//you can also use pins 3, 4, 5, 12, 13 or 14
// Pin 15 can work but DHT must be disconnected during program upload
int floatMap(float x, float in_min, float in_max, float out_min, float out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
int IN1 = 50;
int IN2 = 51;
int IN3 = 52;
int IN4 = 53;
int step = 100;
int delaytime = 40; //makin kecil delay, makin cepat motor berputar
const int trigPin = 15;
const int echoPin = 16;
long duration;
int distance;
const int bzr = 19;
const int M = 11;
const int K = 12;
const int H = 13;
const int AA = 26;
const int BB = 27;
const int CC = 28;
const int DD = 29;
const int EE = 30;
const int FF = 31;
const int GG = 32;
const int HH = 33; //DOT
int a;
int b;
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 21, en = 20, d4 = 25, d5 = 24, d6 = 23, d7 = 22;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
const byte ROWS = 4;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
const String password_1 = "111"; // change your password here
String input_password;
void maju() {
//step 4
step1();
delay(delaytime);
//step 3
step2();
delay(delaytime);
//step 2
step3();
delay(delaytime);
//step 1
step4();
delay(delaytime);
}
void mundur() {
//step 4
step4();
delay(delaytime);
//step 3
step3();
delay(delaytime);
//step 2
step2();
delay(delaytime);
//step 1
step1();
delay(delaytime);
}
void step1() {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
void step2() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void step3() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
void step4() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
void qwerty() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("1 || 2 || 3 || 4");
lcd.setCursor(0, 1);
lcd.print("5 || 6 || 7 || 8");
}
void segmenoff() {
digitalWrite(AA, LOW);
digitalWrite(BB, LOW);
digitalWrite(CC, LOW);
digitalWrite(DD, LOW);
digitalWrite(EE, LOW);
digitalWrite(FF, LOW);
digitalWrite(GG, LOW);
}
void nol() {
// write '0'
digitalWrite(AA, HIGH);
digitalWrite(BB, HIGH);
digitalWrite(CC, HIGH);
digitalWrite(DD, HIGH);
digitalWrite(EE, HIGH);
digitalWrite(FF, HIGH);
digitalWrite(GG, LOW);
}
void satu() {
// write '1'
digitalWrite(AA, LOW);
digitalWrite(BB, HIGH);
digitalWrite(CC, HIGH);
digitalWrite(DD, LOW);
digitalWrite(EE, LOW);
digitalWrite(FF, LOW);
digitalWrite(GG, LOW);
}
void dua() {
// write '2'
digitalWrite(AA, HIGH);
digitalWrite(BB, HIGH);
digitalWrite(CC, LOW);
digitalWrite(DD, HIGH);
digitalWrite(EE, HIGH);
digitalWrite(FF, LOW);
digitalWrite(GG, HIGH);
}
void tiga() {
// write '3'
digitalWrite(AA, HIGH);
digitalWrite(BB, HIGH);
digitalWrite(CC, HIGH);
digitalWrite(DD, HIGH);
digitalWrite(EE, LOW);
digitalWrite(FF, LOW);
digitalWrite(GG, HIGH);
}
void empat() {
// write '4'
digitalWrite(AA, LOW);
digitalWrite(BB, HIGH);
digitalWrite(CC, HIGH);
digitalWrite(DD, LOW);
digitalWrite(EE, LOW);
digitalWrite(FF, HIGH);
digitalWrite(GG, HIGH);
}
void lima() {
// write '5'
digitalWrite(AA, HIGH);
digitalWrite(BB, LOW);
digitalWrite(CC, HIGH);
digitalWrite(DD, HIGH);
digitalWrite(EE, LOW);
digitalWrite(FF, HIGH);
digitalWrite(GG, HIGH);
}
void enam() {
// write '6'
digitalWrite(AA, HIGH);
digitalWrite(BB, LOW);
digitalWrite(CC, HIGH);
digitalWrite(DD, HIGH);
digitalWrite(EE, HIGH);
digitalWrite(FF, HIGH);
digitalWrite(GG, HIGH);
}
void tujuh() {
// write '7'
digitalWrite(AA, HIGH);
digitalWrite(BB, HIGH);
digitalWrite(CC, HIGH);
digitalWrite(DD, LOW);
digitalWrite(EE, LOW);
digitalWrite(FF, LOW);
digitalWrite(GG, LOW);
}
void delapan() {
// write '8'
digitalWrite(AA, HIGH);
digitalWrite(BB, HIGH);
digitalWrite(CC, HIGH);
digitalWrite(DD, HIGH);
digitalWrite(EE, HIGH);
digitalWrite(FF, HIGH);
digitalWrite(GG, HIGH);
}
void sembilan() {
// write '9'
digitalWrite(AA, HIGH);
digitalWrite(BB, HIGH);
digitalWrite(CC, HIGH);
digitalWrite(DD, LOW);
digitalWrite(EE, LOW);
digitalWrite(FF, HIGH);
digitalWrite(GG, HIGH);
}
void buzzer() {
digitalWrite(bzr, HIGH); //buzzer bunyi dengan delay
delay(50); //delay 200 milisecond
digitalWrite(bzr, LOW); //buzzer mati dengan delay
delay(50);
}
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(2, OUTPUT); //7A
pinMode(3, OUTPUT); //6B
pinMode(4, OUTPUT); //4C
pinMode(5, OUTPUT); //2D
pinMode(6, OUTPUT); //1E
pinMode(7, OUTPUT); //9F
pinMode(8, OUTPUT); //10G
pinMode(9, OUTPUT); //5DP
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(bzr, OUTPUT);
pinMode(M, OUTPUT); // initialize pin as an output.
pinMode(K, OUTPUT);
pinMode(H, OUTPUT);
input_password.reserve(32);
Serial.begin(9600);
// set up the LCD's number of columns and rows:
dht.begin();// initialize the sensor
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.setCursor(0, 0);
lcd.print("WELCOME!!!");
delay(750);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("1 || 2 || 3 || 4");
lcd.setCursor(0, 1);
lcd.print("5 || 6 || 7 || 8");
}
void loop() {
char key = customKeypad.getKey();
kkk:
a = 0;
switch (key) {
case ('1'):
{
buzzer();
lcd.clear();
lcd.print("1 : DHT 11");
delay(1000);
a = 1;
while (a == 1) //-------------
{
char key1 = customKeypad.getKey();
if (key1 == 'D')
{
key = "";
a = 0;
qwerty();
goto kkk;
}
lcd.clear();
lcd.setCursor(0, 0); // set the cursor on the first row and column
lcd.print("Humidity=");
lcd.print((float)dht.readHumidity());//print the humidity
lcd.print("%");
lcd.setCursor(0, 1); //set the cursor on the second row and first column
lcd.print("Temp=");
lcd.print((float)dht.readTemperature());//print the temperature
lcd.print("C");
delay(250);
lcd.clear();
} //--------------
}
case ('2'):
{
buzzer();
lcd.clear();
lcd.print("2 : BUZZER");
delay(1000);
a = 2;
while (a == 2)
{
char key1 = customKeypad.getKey();
if (key1 == 'D')
{
key = "";
a = 0;
qwerty();
goto kkk;
}
digitalWrite(bzr, HIGH);
delay(300);
digitalWrite(bzr, LOW);
delay(300);
}
}
case ('3'):
{
buzzer();
lcd.clear();
lcd.print("3 : ULTRASONIC");
delay(1000);
a = 3;
while (a == 3) //+++++++++++++++++++++++++++++++
{
char key1 = customKeypad.getKey();
if (key1 == 'D')
{
key = "";
a = 0;
qwerty();
goto kkk;
}
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
lcd.setCursor(0, 0);
lcd.print("distance: ");
lcd.print (distance);
lcd.print("cm");
delay(1000);
/*
if (distance < 5) {
digitalWrite(M, HIGH);
digitalWrite(K, LOW);
digitalWrite(H, LOW);
}
if (distance >= 10) {
digitalWrite(M, LOW);
digitalWrite(K, HIGH);
digitalWrite(H, LOW);
}
if (distance > 10 ) {
digitalWrite(M, LOW);
digitalWrite(K, LOW);
digitalWrite(H, HIGH);
}
else {
digitalWrite(M, LOW);
digitalWrite(K, LOW);
digitalWrite(H, LOW);
delay(100);
}
*/
}
}
case ('4'):
{
buzzer();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("4 : 7 SEGMENT");
delay(1000);
lcd.clear();
a = 4;
while (a == 4) //+++++++++++++++++++++++++++++++
{
char key1 = customKeypad.getKey();
switch (key1) {
case ('D'):
key = "";
a = 0;
qwerty();
segmenoff();
goto kkk;
break;
case ('0'):
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("D");
nol();
break;
case ('1'):
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("1");
satu();
break;
case ('2'):
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("2");
dua();
break;
case ('3'):
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("3");
tiga();
break;
case ('4'):
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("4");
empat();
break;
case ('5'):
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("5");
lima();
break;
case ('6'):
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("6");
enam();
break;
case ('7'):
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("7");
tujuh();
break;
case ('8'):
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("8");
delapan();
break;
case ('9'):
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("9");
sembilan();
break;
}
}
}
case ('5'):
{
buzzer();
lcd.clear();
lcd.print("5 : POTENSIO");
lcd.setCursor(0, 0);
delay(1000);
a = 5;
while (a == 5) //+++++++++++++++++++++++++++++++
{
char key1 = customKeypad.getKey();
if (key1 == 'D')
{
key = "";
a = 0;
qwerty();
goto kkk;
}
// read the input on analog pin A0:
int analogValue = analogRead(A0);
// Rescale to potentiometer's voltage (from 0V to 5V):
int voltage = floatMap(analogValue, 0, 1023, 0, 100);
// print out the value you read:
lcd.setCursor(0, 0);
lcd.print("Pot=");
lcd.print(analogValue);
lcd.print("||");
lcd.print("Map=");
lcd.print(voltage);
lcd.println("% ");
delay(100);
}
}
case ('6'):
{
buzzer();
lop:
lcd.clear();
lcd.print("6 : STEPPER");
lcd.setCursor(0, 0);
delay(1000);
a = 6;
while (a == 6) //+++++++++++++++++++++++++++++++
{
char key1 = customKeypad.getKey();
if (key1 == 'D')
{
key = "";
a = 0;
qwerty();
goto kkk;
}
if (key1 == '1') {
for (int i = 0; i < 60; i++) {
char key1 = customKeypad.getKey();
if (key1 == 'D')
{
key = "";
a = 0;
qwerty();
goto lop;
}
mundur();
}
}
if (key1 == '2') {
for (int i = 0; i < 60; i++) {
char key1 = customKeypad.getKey();
if (key1 == 'D')
{
key = "";
a = 0;
qwerty();
goto lop;
}
maju();
}
}
}
}
case ('7'):
{
buzzer();
lcd.clear();
lcd.print("7 : BLINK");
lcd.setCursor(0, 0);
delay(1000);
a = 5;
while (a == 5) //+++++++++++++++++++++++++++++++
{
char key1 = customKeypad.getKey();
if (key1 == 'C')
{
key = "";
a = 0;
qwerty();
digitalWrite(M, LOW);
digitalWrite(K, LOW);
digitalWrite(H, LOW);
goto kkk;
}
digitalWrite(M, HIGH);
key1 = customKeypad.getKey();
if (key1 == 'C')
{
key = "";
a = 0;
qwerty();
digitalWrite(M, LOW);
digitalWrite(K, LOW);
digitalWrite(H, LOW);
goto kkk;
}
delay(500);
key1 = customKeypad.getKey();
if (key1 == 'C')
{
key = "";
a = 0;
qwerty();
digitalWrite(M, LOW);
digitalWrite(K, LOW);
digitalWrite(H, LOW);
goto kkk;
}
digitalWrite(M, LOW);
digitalWrite(K, HIGH);
key1 = customKeypad.getKey();
if (key1 == 'C')
{
key = "";
a = 0;
qwerty();
digitalWrite(M, LOW);
digitalWrite(K, LOW);
digitalWrite(H, LOW);
goto kkk;
}
delay(500);
key1 = customKeypad.getKey();
if (key1 == 'C')
{
key = "";
a = 0;
qwerty();
digitalWrite(M, LOW);
digitalWrite(K, LOW);
digitalWrite(H, LOW);
goto kkk;
}
digitalWrite(K, LOW);
digitalWrite(H, HIGH);
key1 = customKeypad.getKey();
if (key1 == 'C')
{
key = "";
a = 0;
qwerty();
digitalWrite(M, LOW);
digitalWrite(K, LOW);
digitalWrite(H, LOW);
goto kkk;
}
delay(500);
key1 = customKeypad.getKey();
if (key1 == 'C')
{
key = "";
a = 0;
qwerty();
digitalWrite(M, LOW);
digitalWrite(K, LOW);
digitalWrite(H, LOW);
goto kkk;
}
digitalWrite(H, LOW);
}
}
}
}