20042089948860609343154290135367871263297246104253653244222458312125270052256300702210361007257583180001542685853724524200016703683111771555

الثلاثاء، 29 أغسطس 2017

Wood electronic box - صندوق خشبي الكترونيكي





السلام عليكم و رحمة الله وبركاته


في هدا الموضوع ان شاء الله سوف نرى طريقة صنع صندوق خشبي و تزيينه بالرمل, سنرى كيفية صنع قفل يدوي و ايضا التحكم في القفل عن طريق محرك السيرفو و بورد الاردوينو .
الصندوق يعمل كالاتي :
يدخل المستخدم كلمة السر على الشكل *12345#
حيث 12345 هي كلمت السر و النجمة تدل على بداية كتابة كلمة السر و الدياز تدل على نهاية كلمة السر
ادا كانت كلمة السر صحيحة سوف يفتح الصندوق غير دالك لن يحدث اي شيء
ادا تجاوزنا 5 حروف نسمع بييب بييب غير دالك نسمع بييب واحدة عند كل ضغطة زر


كود الاردوينو :

#include <Keypad.h>
#include <Servo.h>


const byte bip = 2;//buzzer
const byte CODELENGTH = 5;//password length
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {5, 6, 7, 8}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {9, 10, 11, 12}; //connect to the column pinouts of the keypad

//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 

//servo who control the cadna
Servo myservo;

void setup(){
  Serial.begin(9600);//serial communication

  myservo.attach(13);//servo signal
  pinMode(bip,OUTPUT);//buzzer as output

  myservo.write(100);//the close state
}

//var
char storedcode[CODELENGTH] = {'1','5','9','6','3'};//box password
char guestcode[CODELENGTH];//guest temporary password
int charpointer=0;//point to every character in the guest password array
bool starttyping = false;//to know the begining of the password
int compteur = 0;//to save only 5 charactere in password length

void loop(){
  
  if(gotCode()){//if we have the guest code
      switch(compareCode()){//we analyse the the code 
        case 'e':  boxCadna(1);//guestcode = storedcode
        break;
        case 'c':  boxCadna(0);//guestcode != storedcode
        break;
        }
  }
  
}

void boxCadna(int cmd){//open or close the cadna
  if(cmd == 1){
    Serial.println("open box");
      myservo.write(50);
      delay(100);
    }
  else{
    Serial.println("close box");
      myservo.write(100);
    }
  }

char compareCode(){//compare code and return result
  int flag = 0;
  
  for(int j=0;j<CODELENGTH;j++)
    if(guestcode[j] != '0'){ flag = 1; }
  if(flag == 0) { Serial.println("code close"); return 'c'; }

  flag = 0;
  for(int j=0;j<CODELENGTH;j++)
    if(storedcode[j] != guestcode[j]){ flag = 1; }
  if(flag == 0) {Serial.println("code equal"); return 'e';}
  
  }
   
bool gotCode(){//getting code input
  
  char customKey = customKeypad.getKey();//getting the char
  
  if(starttyping == true){
    if(customKey){
      if(customKey != '*' && customKey != '#'){//a char was typed
        if(compteur < 5){
          guestcode[charpointer++] = customKey;
          bipBip(300);
          compteur++;
          Serial.println(customKey);
        }else{
          compteur = 0;
          charpointer = 0;
          bipBip(200);
          bipBip(200);
        }
      }
    }
  }

if(customKey == '*'){//the user will start typing the code
  charpointer = 0;starttyping = true;
  Serial.println("Typing start");
  }

if(customKey == '#'){//the user will end typing the code
  starttyping = false;
  compteur = 0;
  charpointer = 0;
  Serial.println("Typing stop");
  Serial.println(guestcode);
  return true;
  }

  return false;
}

void bipBip(int dd){//bip the buzzer 
  digitalWrite(bip,HIGH);
  delay(dd);
  digitalWrite(bip,LOW);
  delay(dd);
}

الادواة الالكترونية المستعملة :

https://www.banggood.com/ATmega328P-Nano-V3-Controller-Board-Compatible-Arduino-p-940937.html?rmmds=search

https://www.banggood.com/4-x-3-Matrix-12-Key-Array-Membrane-Switch-Keypad-Keyboard-For-Arduino-p-87370.html?rmmds=search

https://www.banggood.com/5-Pcs-5V-Electromagnetic-Active-Buzzer-Continuous-Beep-Continuously-p-1035626.html?rmmds=search

https://www.banggood.com/TowerPro-SG90-Mini-Gear-Micro-Servo-9g-For-RC-Airplane-Helicopter-p-1009914.html?rmmds=search

الفيديو :




تعليقات فيسبوك
0 تعليقات بلوجر

ليست هناك تعليقات:

إرسال تعليق

إتصل بنا

الإسم الكريم البريد الإلكتروني مهم الرسالة مهم
كافة الحقوق محفوظةلـ افعلـ بنفسك ــها - DIY For Arabs 2016