ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

نمایش نتایج: از 1 به 5 از 5
  1. #1
    2015/03/11
    43
    20

    قفل دیجیتال درب توسط کیپد با آردینو !

    با سلام
    این پروژه رو بستم و جواب گرفتم اما اگر بخواهیم توسط 4 رمز 4 خروجی رو فعال کنیم با مد نظر گرفتم آردینو مناسب برای تعداد خروجی چه کاری باید کرد؟
    در واقع چه تابع و کدی را باید تغیر داد که ما 4 تا بسورد به صورت سیو در حافظه ای 2پیرام داشته باشیم.
    ممنون میشوم راهنمایی بفرمایید.
    عکس از پروژه :

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    کد
    کد:
    #include <Keypad.h>
    #include<LiquidCrystal.h>
    #include<EEPROM.h>
    LiquidCrystal lcd(9,8,7,6,5,4);
    char password[4];
    char pass[4],pass1[4];
    int i=0;
    char customKey=0;
    const byte ROWS = 4; //four rows
    const byte COLS = 4; //four columns
    char hexaKeys[ROWS][COLS] = {
    {'1','2','3','A'},
    {'4','5','6','B'},
    {'7','8','9','C'},
    {'*','0','#','D'}
    };
    byte rowPins[ROWS] = {A0,A1,A2,A3}; //connect to the row pinouts of the keypad
    byte colPins[COLS] = {A4,A5,3,2};   //connect to the column pinouts of the keypad
    //initialize an instance of class NewKeypad
    Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
    int led;
    int buzzer = 10;
    int m11;
    int m12;
    void setup()
    {
      Serial.begin(9600);
      pinMode(11, OUTPUT);
    
    
      lcd.begin(16,2);
      pinMode(led, OUTPUT);
      pinMode(buzzer, OUTPUT);
      pinMode(m11, OUTPUT);
      pinMode(m12, OUTPUT);
      lcd.print(" Electronic ");
      Serial.print(" Electronic ");
      lcd.setCursor(0,1);
      lcd.print(" Keypad Lock ");
      Serial.print(" Keypad Lock ");
      delay(2000);
      lcd.clear();
      lcd.print("Enter Ur Passkey:");
      Serial.println("Enter Ur Passkey:");
      lcd.setCursor(0,1);
      for(int j=0;j<4;j++)
        EEPROM.write(j, j+49);
      for(int j=0;j<4;j++)
        pass[j]=EEPROM.read(j);
    }
    
    
    void loop()
    {
      digitalWrite(11, HIGH);
      customKey = customKeypad.getKey();
      if(customKey=='#')
        change();
      if (customKey)
      {
        password[i++]=customKey;
        lcd.print(customKey);
        Serial.print(customKey);
        beep();
      }
      if(i==4)
      {
        delay(200);
        for(int j=0;j<4;j++)
          pass[j]=EEPROM.read(j);
        if(!(strncmp(password, pass,4)))
        {
          digitalWrite(led, HIGH);
          beep();
          lcd.clear();
          lcd.print("Passkey Accepted");
          Serial.println("Passkey Accepted");
          digitalWrite(11, LOW);
          delay(2000);
          lcd.setCursor(0,1);
          lcd.print("#.Change Passkey");
          Serial.println("#.Change Passkey");
          delay(2000);
          lcd.clear();
          lcd.print("Enter Passkey:");
          Serial.println("Enter Passkey:");
          lcd.setCursor(0,1);
          i=0;
          digitalWrite(led, LOW);
        }
        else
        {
          digitalWrite(11, HIGH);
          digitalWrite(buzzer, HIGH);
          lcd.clear();
          lcd.print("Access Denied...");
          Serial.println("Access Denied...");
          lcd.setCursor(0,1);
          lcd.print("#.Change Passkey");
          Serial.println("#.Change Passkey");
          delay(2000);
          lcd.clear();
          lcd.print("Enter Passkey:");
          Serial.println("Enter Passkey:");
          lcd.setCursor(0,1);
          i=0;
          digitalWrite(buzzer, LOW);
        }
      }
    }
    void change()
    {
      int j=0;
      lcd.clear();
      lcd.print("UR Current Passk");
      Serial.println("UR Current Passk");
      lcd.setCursor(0,1);
      while(j<4)
      {
        char key=customKeypad.getKey();
        if(key)
        {
          pass1[j++]=key;
          lcd.print(key);
          Serial.print(key);
          beep();
        }
        key=0;
      }
      delay(500);
    
    
      if((strncmp(pass1, pass, 4)))
      {
        lcd.clear();
        lcd.print("Wrong Passkey...");
        Serial.println("Wrong Passkey...");
        lcd.setCursor(0,1);
        lcd.print("Better Luck Again");
        Serial.println("Better Luck Again");
        delay(1000);
      }
      else
      {
        j=0;
        lcd.clear();
        lcd.print("Enter New Passk:");
        Serial.println("Enter New Passk:");
        lcd.setCursor(0,1);
        while(j<4)
        {
          char key=customKeypad.getKey();
          if(key)
          {
            pass[j]=key;
            lcd.print(key);
            Serial.print(key);
            EEPROM.write(j,key);
            j++;
            beep();
          }
        }
        lcd.print(" Done......");
        Serial.println(" Done......");
        delay(1000);
      }
      lcd.clear();
      lcd.print("Enter Ur Passk:");
      Serial.println("Enter Ur Passk:");
      lcd.setCursor(0,1);
      customKey=0;
    }
    void beep()
    {
      digitalWrite(buzzer, HIGH);
      delay(20);
      digitalWrite(buzzer, LOW);
    }
    منبع :

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  2. #2
    2015/03/11
    43
    20

    پاسخ : قفل دیجیتال درب توسط کیپد با آردینو !

    لطفا کمک کنید
  3. #3
    2018/02/22
    1,096
    694

    پاسخ : قفل دیجیتال درب توسط کیپد با آردینو !

    موضوع ساده نیست ، قسمت ورود پسورد ، بررسی پسورد ، تغییر پسورد ، ذخیره پسورد جدید ، هر کدوم باید ۴ بار تکرار بشه ، نیاز به بستن مدار و تست برنامه داره تا تداخلی ایجاد نشه . خودتون پیش برید ، مشکلات پیش اومده رو رفته رفته حل میکنیم
  4. #4
    2015/03/11
    43
    20

    پاسخ : قفل دیجیتال درب توسط کیپد با آردینو !

    نقل قول نوشته اصلی توسط Masood Ashoori

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    موضوع ساده نیست ، قسمت ورود پسورد ، بررسی پسورد ، تغییر پسورد ، ذخیره پسورد جدید ، هر کدوم باید ۴ بار تکرار بشه ، نیاز به بستن مدار و تست برنامه داره تا تداخلی ایجاد نشه . خودتون پیش برید ، مشکلات پیش اومده رو رفته رفته حل میکنیم
    با تشکر از شما
    با توجه به توضیحات شما تغییرات زیر حاصل کردم
    اما نتیجه منفی بود

    کد های تغییر داده شده به شرح زیر است.
    کد:
    #include <Keypad.h>#include<LiquidCrystal.h>
    #include<EEPROM.h>
    LiquidCrystal lcd(9, 8, 7, 6, 5, 4);
    char password[4];
    char pass[4], pass1[4];
    	char password1[5];
    	char pass2[5], pass3[5];
    		//char password2[4];
    		//char pass4[4], pass5[4]
    		//	char password3[4];
    		//    char pass6[4], pass7[4]
    int i = 0;
    			int r = 0;
    char customKey = 0;
    char customKey1 = 0;
    const byte ROWS = 4; //four rows
    const byte COLS = 4; //four columns
    char hexaKeys[ROWS][COLS] = {
    	{ '1', '2', '3', 'A' },
    	{ '4', '5', '6', 'B' },
    	{ '7', '8', '9', 'C' },
    	{ '*', '0', '#', 'D' }
    };
    byte rowPins[ROWS] = { A0, A1, A2, A3 }; //connect to the row pinouts of the keypad
    byte colPins[COLS] = { A4, A5, 3, 2 };   //connect to the column pinouts of the keypad
    //initialize an instance of class NewKeypad
    Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
    int led;
    int buzzer = 10;
    int m11;
    int m12;
    void setup()
    {
    	Serial.begin(9600);
    	lcd.begin(16, 2);
    	pinMode(11, OUTPUT);
    	pinMode(12, OUTPUT);
    	pinMode(led, OUTPUT);
    	pinMode(buzzer, OUTPUT);
    	pinMode(m11, OUTPUT);
    	pinMode(m12, OUTPUT);
    	lcd.print(" Electronic ");
    	Serial.print(" Electronic ");
    	lcd.setCursor(0, 1);
    	lcd.print(" Keypad Lock ");
    	Serial.print(" Keypad Lock ");
    	delay(2000);
    	lcd.clear();
    	lcd.print("Enter Ur Passkey:");
    	Serial.println("Enter Ur Passkey:");
    	lcd.setCursor(0, 1);
    	for (int j = 0; j<4; j++)
    		EEPROM.write(j, j + 49);
    	for (int j = 0; j<4; j++)
    		pass[j] = EEPROM.read(j);
    		for (int p = 5; p<9; p++)
    			EEPROM.write(p, p + 49);
    		for (int p = 5; p<9; p++)
    			pass2[p] = EEPROM.read(p);
    }
    
    
    void loop()
    {
    	/*-------------------------------------pass1 run-------------------------------*/
    	digitalWrite(11, HIGH);
    	customKey = customKeypad.getKey();
    	if (customKey == '#')
    		change();
    	if (customKey)
    	{
    		password[i++] = customKey;
    		lcd.print(customKey);
    		Serial.print(customKey);
    		beep();
    	}
    	if (i == 4)
    	{
    		delay(200);
    		for (int j = 0; j<4; j++)
    			pass[j] = EEPROM.read(j);
    		if (!(strncmp(password, pass, 4)))
    		{
    			digitalWrite(led, HIGH);
    			beep();
    			lcd.clear();
    			lcd.print("Passkey Accepted");
    			Serial.println("Passkey Accepted");
    			digitalWrite(11, LOW);
    			delay(2000);
    			lcd.setCursor(0, 1);
    			lcd.print("#.Change Passkey");
    			Serial.println("#.Change Passkey");
    			delay(2000);
    			lcd.clear();
    			lcd.print("Enter Passkey:");
    			Serial.println("Enter Passkey:");
    			lcd.setCursor(0, 1);
    			i = 0;
    			digitalWrite(led, LOW);
    		}
    		else
    		{
    			digitalWrite(11, HIGH);
    			digitalWrite(buzzer, HIGH);
    			lcd.clear();
    			lcd.print("Access Denied...");
    			Serial.println("Access Denied...");
    			lcd.setCursor(0, 1);
    			lcd.print("#.Change Passkey");
    			Serial.println("#.Change Passkey");
    			delay(2000);
    			lcd.clear();
    			lcd.print("Enter Passkey:");
    			Serial.println("Enter Passkey:");
    			lcd.setCursor(0, 1);
    			i = 0;
    			digitalWrite(buzzer, LOW);
    		}
    	}
    	/*-------------------------------------pass1 end-------------------------------*/
    
    
    	/*-------------------------------------pass2 run-------------------------------*/
    	digitalWrite(12, HIGH);
    	customKey1 = customKeypad.getKey();
    	if (customKey1 == '*')
    		change1();
    	if (customKey1)
    	{
    		password1[r++] = customKey1;
    		lcd.print(customKey1);
    		Serial.print(customKey1);
    		beep();
    	}
    	if (r == 5)
    	{
    		delay(200);
    		for (int p = 5; p<9; p++)
    			pass2[p] = EEPROM.read(p);
    		if (!(strncmp(password1, pass2, 5)))
    		{
    			digitalWrite(led, HIGH);
    			beep();
    			lcd.clear();
    			lcd.print("Passkey Accepted");
    			Serial.println("Passkey Accepted");
    			digitalWrite(12, LOW);
    			delay(2000);
    			lcd.setCursor(0, 1);
    			lcd.print("*.Change Passkey");
    			Serial.println("*.Change Passkey");
    			delay(2000);
    			lcd.clear();
    			lcd.print("Enter Passkey:");
    			Serial.println("Enter Passkey:");
    			lcd.setCursor(0, 1);
    			r = 0;
    			digitalWrite(led, LOW);
    		}
    		else
    		{
    			digitalWrite(12, HIGH);
    			digitalWrite(buzzer, HIGH);
    			lcd.clear();
    			lcd.print("Access Denied...");
    			Serial.println("Access Denied...");
    			lcd.setCursor(0, 1);
    			lcd.print("*.Change Passkey");
    			Serial.println("*.Change Passkey");
    			delay(2000);
    			lcd.clear();
    			lcd.print("Enter Passkey:");
    			Serial.println("Enter Passkey:");
    			lcd.setCursor(0, 1);
    			r = 0;
    			digitalWrite(buzzer, LOW);
    		}
    	}
    	/*-------------------------------------pass2 end------------------------------*/
    }
        /*---------------------------------change run-------------------------------------*/
    void change()
    {
    	int j = 0;
    	lcd.clear();
    	lcd.print("UR Current Passk");
    	Serial.println("UR Current Passk");
    	lcd.setCursor(0, 1);
    	while (j<4)
    	{
    		char key = customKeypad.getKey();
    		if (key)
    		{
    			pass1[j++] = key;
    			lcd.print(key);
    			Serial.print(key);
    			beep();
    		}
    		key = 0;
    	}
    	delay(500);
    
    
    	if ((strncmp(pass1, pass, 4)))
    	{
    		lcd.clear();
    		lcd.print("Wrong Passkey...");
    		Serial.println("Wrong Passkey...");
    		lcd.setCursor(0, 1);
    		lcd.print("Better Luck Again");
    		Serial.println("Better Luck Again");
    		delay(1000);
    	}
    	else
    	{
    		j = 0;
    		lcd.clear();
    		lcd.print("Enter New Passk:");
    		Serial.println("Enter New Passk:");
    		lcd.setCursor(0, 1);
    		while (j<4)
    		{
    			char key = customKeypad.getKey();
    			if (key)
    			{
    				pass[j] = key;
    				lcd.print(key);
    				Serial.print(key);
    				EEPROM.write(j, key);
    				j++;
    				beep();
    			}
    		}
    		lcd.print(" Done......");
    		Serial.println(" Done......");
    		delay(1000);
    	}
    	lcd.clear();
    	lcd.print("Enter Ur Passk:");
    	Serial.println("Enter Ur Passk:");
    	lcd.setCursor(0, 1);
    	customKey = 0;
    }
    /*---------------------------------change end-------------------------------------*/
    /*---------------------------------change1 run-------------------------------------*/
    void change1()
    {
    	int p = 0;
    	lcd.clear();
    	lcd.print("UR Current Pass2");
    	Serial.println("UR Current Pass2");
    	lcd.setCursor(0, 1);
    	while (p<4)
    	{
    		char key = customKeypad.getKey();
    		if (key)
    		{
    			pass3[p++] = key;
    			lcd.print(key);
    			Serial.print(key);
    			beep();
    		}
    		key = 0;
    	}
    	delay(500);
    
    
    	if ((strncmp(pass3, pass2, 5)))
    	{
    		lcd.clear();
    		lcd.print("Wrong Passkey...");
    		Serial.println("Wrong Passkey...");
    		lcd.setCursor(0, 1);
    		lcd.print("Better Luck Again");
    		Serial.println("Better Luck Again");
    		delay(1000);
    	}
    	else
    	{
    		p = 0;
    		lcd.clear();
    		lcd.print("Enter New Passk:");
    		Serial.println("Enter New Passk:");
    		lcd.setCursor(0, 1);
    		while (p<5)
    		{
    			char key = customKeypad.getKey();
    			if (key)
    			{
    				pass2[p] = key;
    				lcd.print(key);
    				Serial.print(key);
    				EEPROM.write(p, key);
    				p++;
    				beep();
    			}
    		}
    		lcd.print(" Done......");
    		Serial.println(" Done......");
    		delay(1000);
    	}
    	lcd.clear();
    	lcd.print("Enter Ur Passk:");
    	Serial.println("Enter Ur Passk:");
    	lcd.setCursor(0, 1);
    	customKey1 = 0;
    }
    /*---------------------------------change1 end-------------------------------------*/
    void beep()
    {
    	digitalWrite(buzzer, HIGH);
    	delay(20);
    	digitalWrite(buzzer, LOW);
    }
    
    ممنون میشم راهنمایی بفرمایید
  5. #5
    2016/08/19
    176
    127

    پاسخ : قفل دیجیتال درب توسط کیپد با آردینو !

    نقل قول نوشته اصلی توسط mehrangholumi3070

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    این پروژه رو بستم و جواب گرفتم اما اگر بخواهیم توسط 4 رمز 4 خروجی رو فعال کنیم با مد نظر گرفتم آردینو مناسب برای تعداد خروجی چه کاری باید کرد؟
    سلام
    ابتدا باید بگم من فقط میتونم یه چیزایی رو که از دستم برمیاد راهنمایی کنم. زحمت نوشتن برنامه رو خودتون بکشین ، چون آخر سالی زمان مقدار زیادی محدود شده. می بخشید.
    من فقط برنامه پست اول رو یه نگاه انداختم و دو سه خط اول برنامه تغییر داده شده.
    اول اینکه برنامه اصلی یه ایرادی داره!! بعد از اینکه شما پسورد رو عوض میکنید، پس از خاموش یا ریست شدن میکرو، رمز دستگاه دوباره 1234 خواهد شد. این درحالیه که پسورد در حافظه eeprom ذخیره میشود.
    دلیلش اینه که در تابع setup اومده پسورد 1234 رو توی حافظه ذخیره کرده. درنتیجه هروقت میکرو دوباره راه اندازی میشه پسورد 1234 روی پسورد ذخیره شده ، دوباره ذخیره میشه.
    اما بعدش. من متغییرها و روند برنامه رو مختصرا توضیح میدم که راحت تربتونید تفییرش بدید.
    اول اینکه چرا مثلا

    pass[4] یا pass1[4] یا ...

    دلیلش اینه که پسورد موردنظر نویسنده برنامه ، 4 کاراکتری بوده. درنتیجه شما با بیشتر کردن (مثلا 5) آن فقط تعداد کاراکترهای یک رمز رو بیشتر میکنید ( نه تعداد رمزها رو)
    دوم متغییرها:
    pass : پسورد موجود (یک رمز 4 کاراکتری)
    password : وقتی کاربر با کیپد رمز خواسته شده رو وارد میکنه ، کاراکترها دونه دونه (4 کاراکتر) تو این متغییر ذخیره شده و پس از تکمیل با pass مقایسه میشه.
    pass1 : در زمان تفییر پسورد ذخیره شده ، ابتدا کاربر باید پسورد قبلی را وارد کند. متغییر pass1 هم مثل password عمل میکند. یعنی دونه دونه کاراکترهای وارد شده توش ثبت شده و سپس با پسورد اصلی (pass) مقایسه میشه. اگر درست بود اجازه پسورد جدید میده و پسورد تو pass ذخیره میشه.
    حالا با این اطلاعات میتونید با اضافه کردن متغیرهای دیگر و ذخیره در حافظه نتیجه دلخواهتون رو بگیرید.
    فقط اون ایرادی که تو تابع setup گفتم رو هم حتما با گذاشتن یک شرط که چک کنه اگر تو حافظه نوشته نشده بود 1234 رو ذخیره کنه ، ایراد رو برطرف کنید.
نمایش نتایج: از 1 به 5 از 5

موضوعات مشابه

  1. مشکل در شناختن برد آردینو توسط کامپیوتر
    توسط parsafar در انجمن سایر ماژول ها
    پاسخ: 6
    آخرين نوشته: 2017/12/27, 10:25
  2. راه اندازی ماژول برای قطع وصل رله توسط پیامک به کمک آردینو sim800
    توسط afshin.vahidreza@gmail.co در انجمن ماژول های GPS - GSM - GPRS
    پاسخ: 1
    آخرين نوشته: 2017/08/15, 16:48
  3. پاسخ: 4
    آخرين نوشته: 2016/04/25, 16:44
  4. تبدیل ولتاژ انالوگ به دیجیتال توسط OP-AMP
    توسط sb_844110p در انجمن مدارهای آنالوگ و مدارهای مجتمع
    پاسخ: 8
    آخرين نوشته: 2010/02/07, 08:30
  5. دیجیتال کردن صوت توسط A/D Atmega16
    توسط meshki در انجمن میکروکنترلرهای AVR
    پاسخ: 8
    آخرين نوشته: 2007/09/20, 22:47

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •