#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
#define up 3
#define down 11
#define enter 4
#define back 5
#define batt 8
#define AC A3
#define Temp A2
#define load1 6
#define load2 7
byte batteryl1[]={0x0E,0X1F,0X11,0X11,0X11,0X11,0X11,0X1F};
byte batteryl2[]={0x0E,0X1F,0X11,0X11,0X11,0X1F,0X1F,0X1F};
byte batteryM[]={0x0E,0X1F,0X11,0X11,0X1F,0X1F,0X1F,0X1F};
byte batteryF[]={0x0E,0X1F,0X1F,0X1F,0X1F,0X1F,0X1F,0X1F};
byte fan[]={0x00,0X11,0X0A,0X04,0X0A,0X11,0X00,0X00};
byte pointer[]={0x00,0x00,0x04,0x02,0x1D,0X02,0X04,0X00};
int downsel=0;
volatile int count = 0;
int potPin = A0;
int motorPin = 9;
int potValue = 0;
float speedRPM = 0;
float speedlist [1] ;
float w = 0 ;
float j = 0 ;
float s = 0 ;
float g = 0 ;
float k = 0 ;
int interruptPin = 2;
void encoderPulse()
{
count++;
}
void setup() {
lcd.init();
lcd.backlight();
pinMode(up,INPUT_PULLUP);
pinMode(down,INPUT_PULLUP);
pinMode(enter,INPUT_PULLUP);
pinMode(back,INPUT_PULLUP);
pinMode(batt,INPUT);
pinMode(AC,INPUT);
pinMode(load1,OUTPUT);
pinMode(load2,OUTPUT);
pinMode(Temp,INPUT);
pinMode(motorPin, OUTPUT);
lcd.setCursor(0,0);
lcd.print("D KARE ");
lcd.setCursor(5,1);
lcd.print("TEST");
lcd.setCursor(3,2);
lcd.print("STAND ");
lcd.setCursor(0,3);
lcd.print("V1");
delay(1000);
lcd.clear();
lcd.createChar(0, batteryl1);
lcd.createChar(1, batteryl2);
lcd.createChar(2, batteryM);
lcd.createChar(3, batteryF);
lcd.createChar(5, pointer);
}
void loop() {
UPandDOWN();
}
void UPandDOWN(){
lcd.clear();
switch(downsel){
case 0: lcd.setCursor(0,0);
lcd.write(5);
break;
case 1: lcd.setCursor(0,1);
lcd.write(5);
break;
case 2: lcd.setCursor(0,2);
lcd.write(5);
break;
case 3: lcd.setCursor(0,3);
lcd.write(5);
break;
}
lcd.setCursor(1,0);
lcd.print(" Motor Hiz ");
lcd.setCursor(1,1);
lcd.print(" Motor Voltaj");
lcd.setCursor(1,2);
lcd.print(" Sayac");
lcd.setCursor(1,3);
lcd.print(" Ortalama Tur/s");
if(digitalRead(down) == LOW){
downsel++;
delay(200);
}
if(digitalRead(up)== LOW){
downsel--;
delay(100);
}
if(digitalRead(enter)== LOW){
while(1){
ENTER();
if(digitalRead(back)== LOW){
while(1){
UPandDOWN();
}
}
}
}
delay(100);
}
void ENTER(){
switch(downsel){
case 0:
lcd.clear();
switch(downsel){
lcd.clear();
case 4: lcd.setCursor(0,0);
lcd.write(5);
break;
case 5: lcd.setCursor(0,1);
lcd.write(5);
break;
}
lcd.setCursor(1,0);
lcd.print(" Motor Hiz ");
lcd.setCursor(1,1);
lcd.print(" Motor Degiskenleri");
if(digitalRead(down) == LOW){
downsel++;
delay(200);
}
if(digitalRead(up)== LOW){
downsel--;
delay(100);
}
if(digitalRead(enter)== LOW){
while(1){
ENTER();
}
}
if(digitalRead(back)== LOW){
while(1){
ENTER();
}
}
switch(downsel){
case 4:
lcd.clear();
lcd.setCursor(0,0);
lcd.print( "MOTOR SPEED");
count = 0;
delay(200);
speedRPM= count * 6.25;
w = 2 * 3.14 * 128 * speedRPM / 60 ;
g = 2 * 3.14 * 128 / w ;
lcd.setCursor(0,2);
lcd.print(w);
lcd.println(" hiz ");
delay(100);
break;
case 5 :
break;
}
break;
case 1:
lcd.clear();
potValue = analogRead(potPin);j
=map(potValue, 0, 1024, 0, 255);
analogWrite(motorPin, w);
j=map(j, 0, 255, 0, 17);
lcd.setCursor(0,0);
lcd.print(" MOTOR VOLTAGE ");
lcd.setCursor(0,1);
lcd.print(j);
lcd.println(" V ") ;
delay(150);
break;
case 2:
lcd.clear();
count = 0 ;
s = count ;
k = millis() / 1000 ;
lcd.setCursor(0,0);
lcd.print(s);
lcd.setCursor(0,1);
lcd.print(k / 86400);
lcd.setCursor(0,2);
lcd.print(k / 3600);
lcd.setCursor(6,2);
lcd.print("H");
lcd.setCursor (8,2);
lcd.print(k / 60);
lcd.setCursor (13,2);
lcd.print("M");
lcd.setCursor(15,2);
lcd.print(k);
delay(150);
break;
case 3:
lcd.clear();
lcd.setCursor(0,0) ;
lcd.print("tur basina");
lcd.setCursor(0,1);
lcd.print("ortalama zaman");
lcd.setCursor(0,2);
lcd.print(g);
delay(150);
break;
}
}