کد PHP:
#include "Servo.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <AnalogButtons.h>
#define ANALOG_PIN 9
#include <EEPROM.h>
// Set the LCD address to 0x3F or 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3F, 16, 2);
Servo servo1;
//*********************************************Config Value
boolean open1 = 0;
int Speed_Rotate_Open = EEPROM.get(10, Speed_Rotate_Open); //110°monasebe
int Delay_Rotate_Open = EEPROM.get(15, Delay_Rotate_Open); //1600ms monasebe
int Stay_Open = EEPROM.get(30, Stay_Open); //2000ms monasebe
int Speed_Rotate_Close = EEPROM.get(20, Speed_Rotate_Close); //80°monasebe
int Delay_Rotate_Close = EEPROM.get(25, Delay_Rotate_Close); //2000ms monasebe
int State_Show = 1;
boolean key = 0;
boolean key_SET = 1 , key_DOWN = 1, key_UP = 1;
//**************************************
void b1Click() {
//Serial.print("button 1 clicked");
if (State_Show == 3) {
State_Show = 1;
} else {
State_Show++;
}
lcd.clear();
}
void b1Hold() {
//Serial.print("button 1 held");
key_SET = 0;
}
void b2Click() {
//Serial.print("button 2 clicked");
key_DOWN = 0;
}
void b2Hold() {
//Serial.print("button 2 held");
key_DOWN = 0;
}
void b3Click() {
//Serial.print("button 3 clicked");
key_UP = 0;
}
void b3Hold() {
//Serial.print("button 3 held");
key_UP = 0;
}
AnalogButtons analogButtons(ANALOG_PIN, INPUT);
Button b1 = Button(42, &b1Click, &b1Hold, 1500, 2500);//328
Button b2 = Button(228, &b2Click, &b2Hold, 1000, 5);//846
Button b3 = Button(127, &b3Click, &b3Hold, 1000, 5);//700
void setup() {
//Serial.begin(9600);
//Serial.println("Testing your Analog buttons");
digitalWrite(ANALOG_PIN, HIGH);
analogButtons.add(b1);
analogButtons.add(b2);
analogButtons.add(b3);
// initialize the LCD
lcd.begin();
// Turn on the blacklight and print a message.
lcd.clear();
lcd.backlight();
lcd.setCursor(3, 0);
lcd.print("Bismillah");
lcd.blink();
lcd.setCursor(0, 1);
lcd.print("alrahman alrahim");
delay(4000);
lcd.noBacklight();
delay(1000);
lcd.clear();
lcd.backlight();
lcd.clear();
servo1.attach(5);
pinMode(4, INPUT);
digitalWrite(4, HIGH);
delay(50);
}
void loop() {
// To check values when button are pressed
analogButtons.check();
if (digitalRead(4) == LOW) {
open1 = 1;
}
if (open1) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Dar Baz va ");
lcd.setCursor(0, 1);
lcd.print("Baste Mishavad.");
lcd.blink();
servo1.write(Speed_Rotate_Open);//Rotate Left****
delay(Delay_Rotate_Open);//2200 taghriban 360 kamel mizane be chap***
servo1.write(90);//Stop
delay(Stay_Open);
servo1.write(Speed_Rotate_Close);//Rotate Right***
delay(Delay_Rotate_Close);// 1820 behtare bashe hodode 375 mizane be rast***
servo1.write(90);//Stop
delay(10000);
lcd.clear();
open1 = 0;
}
analogButtons.check();
if (key == 0 && key_SET == 0 && key_DOWN == 1 && key_UP == 1) {
key_SET = 1;
key = 1;
SET_Speed_Rotate_Open();
}
if (key == 1 && key_SET == 1 && key_DOWN == 1 && key_UP == 1) {
key = 0;
}
switch (State_Show)
{
case 1:
lcd.setCursor(0, 0);
lcd.print("SpeedOpen:");
lcd.print(Speed_Rotate_Open);
lcd.print("\337");
lcd.setCursor(0, 1);
lcd.print("DelayOpen:");
lcd.print(Delay_Rotate_Open);
lcd.print("ms");
return ;
;
case 2:
lcd.setCursor(0, 0);
lcd.print("Stay Open For:");
lcd.setCursor(0, 1);
lcd.print(Stay_Open);
lcd.print(" ms");
return ;
;
case 3:
lcd.setCursor(0, 0);
lcd.print("SpeedClos:");
lcd.print(Speed_Rotate_Close);
lcd.print("\337");
lcd.setCursor(0, 1);
lcd.print("DelayClos:");
lcd.print(Delay_Rotate_Close);
lcd.print("ms");
return ;
;
//default:
//return 0;
//;
}
}
//*********************************************Subprogram SET_Speed_Rotate_Open()
void SET_Speed_Rotate_Open() {
lcd.clear();
lcd.cursor();
while (1) {
lcd.setCursor(0, 0);
lcd.print("Set_Speed_Open");
lcd.setCursor (0, 1);
lcd.print(Speed_Rotate_Open);
lcd.print("\337");
analogButtons.check();
if (key == 0 && key_SET == 1 && key_DOWN == 0 && key_UP == 1) {
key_DOWN = 1;
key = 1;
if (Speed_Rotate_Open == 91) {
Speed_Rotate_Open = 180;
} else {
Speed_Rotate_Open--;
}
}
if (key == 0 && key_SET == 1 && key_DOWN == 1 && key_UP == 0) {
key_UP = 1;
key = 1;
if (Speed_Rotate_Open == 180) {
Speed_Rotate_Open = 91;
} else {
Speed_Rotate_Open++;
}
}
if (key == 0 && key_SET == 0 && key_DOWN == 1 && key_UP == 1) {
key_SET = 1;
key = 1;
break;
}
if (key == 1 && key_SET == 1 && key_DOWN == 1 && key_UP == 1) {
key = 0;
}
}
SET_Delay_Rotate_Open();
}
//*********************************************Subprogram SET_Delay_Rotate_Open()
void SET_Delay_Rotate_Open() {
lcd.clear();
while (1) {
lcd.setCursor(0, 0);
lcd.print("Set_Delay_Open");
lcd.setCursor (0, 1);
lcd.print(Delay_Rotate_Open);
lcd.print(" Milliseconds");
analogButtons.check();
if (key == 0 && key_SET == 1 && key_DOWN == 0 && key_UP == 1) {
key_DOWN = 1;
key = 1;
if (Delay_Rotate_Open == 1000) {
Delay_Rotate_Open = 5000;
} else {
Delay_Rotate_Open--;
}
}
if (key == 0 && key_SET == 1 && key_DOWN == 1 && key_UP == 0) {
key_UP = 1;
key = 1;
if (Delay_Rotate_Open == 5000) {
Delay_Rotate_Open = 1000;
} else {
Delay_Rotate_Open++;
}
}
if (key == 0 && key_SET == 0 && key_DOWN == 1 && key_UP == 1) {
key_SET = 1;
key = 1;
break;
}
if (key == 1 && key_SET == 1 && key_DOWN == 1 && key_UP == 1) {
key = 0;
}
}
SET_Stay_Open();
}
//*********************************************Subprogram SET_Stay_Open()
void SET_Stay_Open() {
lcd.clear();
while (1) {
lcd.setCursor(0, 0);
lcd.print("Set_Stay_Open:");
lcd.setCursor (0, 1);
lcd.print(Stay_Open);
lcd.print(" Milliseconds");
analogButtons.check();
if (key == 0 && key_SET == 1 && key_DOWN == 0 && key_UP == 1) {
key_DOWN = 1;
key = 1;
if (Stay_Open == 0) {
Stay_Open = 20000;
} else {
Stay_Open--;
}
}
if (key == 0 && key_SET == 1 && key_DOWN == 1 && key_UP == 0) {
key_UP = 1;
key = 1;
if (Stay_Open == 20000) {
Stay_Open = 0;
} else {
Stay_Open++;
}
}
if (key == 0 && key_SET == 0 && key_DOWN == 1 && key_UP == 1) {
key_SET = 1;
key = 1;
break;
}
if (key == 1 && key_SET == 1 && key_DOWN == 1 && key_UP == 1) {
key = 0;
}
}
SET_Speed_Rotate_Close();
}
//*********************************************Subprogram SET_Speed_Rotate_Close()
void SET_Speed_Rotate_Close() {
lcd.clear();
while (1) {
lcd.setCursor(0, 0);
lcd.print("Set_Speed_Close:");
lcd.setCursor (0, 1);
lcd.print(Speed_Rotate_Close);
lcd.print("\337");
analogButtons.check();
if (key == 0 && key_SET == 1 && key_DOWN == 0 && key_UP == 1) {
key_DOWN = 1;
key = 1;
if (Speed_Rotate_Close == 1) {
Speed_Rotate_Close = 89;
} else {
Speed_Rotate_Close--;
}
}
if (key == 0 && key_SET == 1 && key_DOWN == 1 && key_UP == 0) {
key_UP = 1;
key = 1;
if (Speed_Rotate_Close == 89) {
Speed_Rotate_Close = 1;
} else {
Speed_Rotate_Close++;
}
}
if (key == 0 && key_SET == 0 && key_DOWN == 1 && key_UP == 1) {
key_SET = 1;
key = 1;
break;
}
if (key == 1 && key_SET == 1 && key_DOWN == 1 && key_UP == 1) {
key = 0;
}
}
SET_Delay_Rotate_Close();
}
//*********************************************Subprogram SET_Delay_Rotate_Close()
void SET_Delay_Rotate_Close() {
lcd.clear();
while (1) {
lcd.setCursor(0, 0);
lcd.print("Set_Delay_Close:");
lcd.setCursor (0, 1);
lcd.print(Delay_Rotate_Close);
lcd.print(" Milliseconds");
analogButtons.check();
if (key == 0 && key_SET == 1 && key_DOWN == 0 && key_UP == 1) {
key_DOWN = 1;
key = 1;
if (Delay_Rotate_Close == 1000) {
Delay_Rotate_Close = 5000;
} else {
Delay_Rotate_Close--;
}
}
if (key == 0 && key_SET == 1 && key_DOWN == 1 && key_UP == 0) {
key_UP = 1;
key = 1;
if (Delay_Rotate_Close == 5000) {
Delay_Rotate_Close = 1000;
} else {
Delay_Rotate_Close++;
}
}
if (key == 0 && key_SET == 0 && key_DOWN == 1 && key_UP == 1) {
key_SET = 1;
key = 1;
break;
}
if (key == 1 && key_SET == 1 && key_DOWN == 1 && key_UP == 1) {
key = 0;
}
}
Save();
}
//*********************************************Subprogram Save()
void Save() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Alhamdolellah*");
lcd.setCursor(0, 1);
lcd.print("> Save... ");
EEPROM.put(10, Speed_Rotate_Open);
EEPROM.put(15, Delay_Rotate_Open );
EEPROM.put(30, Stay_Open );
EEPROM.put(20, Speed_Rotate_Close );
EEPROM.put(25, Delay_Rotate_Close );
delay(2500);
lcd.clear();
}