قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

رانية1
:: مهندس متواجد ::
تاريخ التسجيل: Jun 2006
الدولة: فلسطين
المشاركات: 128
نشاط [ رانية1 ]
قوة السمعة:
قديم 16-01-2017, 12:36 PM المشاركة 9   
افتراضي



المطلوب حسب ما تم شرحه سابقا اي يتم قراءة المداخل الاربعة للرقم الاول وعمل and لهم( تخزين الناتج في الذاكره لحين استرجاعه) ومن ثم قراءة المداخل الاربعة للرقم الثاني وعمل and لهم والسؤال كيف يتم استرجاع النتائج من اجل جمعها لعمل high لمخرج 10

اعلانات

مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 619
نشاط [ مشتاق الله ]
قوة السمعة:
قديم 16-01-2017, 02:32 PM المشاركة 10   
sun


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


كود:
#include <Arduino.h>


char counter = 0;
void setup() {
  //configure output pin as 0
  pinMode(10, OUTPUT);
  digitalWrite(10, 0);
  
  //configure input pins to be inputs
  pinMode(1, INPUT);
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);
  
}

void loop() {
  
  if (digitalRead(1) && digitalRead(2) && !digitalRead(3) && !digitalRead(4) && (counter == 0))  // first code received is 1100
  { 
    counter = 1;
  }
  
  if ( !digitalRead(1) && digitalRead(2) && digitalRead(3) && !digitalRead(4) && (counter == 1))  // second code received is 0110
  {
    counter = 2;
  }
  
  if (!digitalRead(1) && !digitalRead(2) && digitalRead(3) && digitalRead(4) && (counter == 2))  // third code received is 0011
  {
    counter = 3;
  }
  
  if (counter == 3)  // turn on the output pin 10
  {
    digitalWrite(10, 1);
    
  }
  
  if (!digitalRead(1) && digitalRead(2) && digitalRead(3) && digitalRead(4) && (counter == 3))  // turn off output pin 10,  code received is 0111
  {
    digitalWrite(10, 0);
    counter = 0;
  }
  
}

و الله الموفق و المستعان
اللهم صبرك و نصرك




اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 11,652
نشاط [ ماجد عباس محمد ]
قوة السمعة:
قديم 16-01-2017, 07:58 PM المشاركة 11   
افتراضي


أولا صعب البرمجة بدون دائرة
ثانيا عند وصول نغمة يظهر خرج على البورت و نظرا لسرعة الميكرو سيقرأه 4 مرات على انه الأربع أرقام و يعطى دوما إدخال خاطئ
ثالثا سيستمر فى قراءة أصفار عند عدم وصول رقم و هذا غير منطقى
رابعا الأرقام المطلوبة هى 2 ثم 5 ثم 3 ثم 8 و بعضها مشترك فى ذات البت لذا يجب أن يكوت الأمر شاملا الأربع أطراف مثلا
كود:
if (digitalRead(input1)==HIGH && digitalRead (input2) == HIGH) && digitalRead (input3) == LOW && digitalRead (input4) == LOW
و سيكرر لباقى الأرقام الأربعة وهذا بطئ لأنه فى المرات الأربع سيقرأ كل طرف منها مرة أخرى
الأفضل أن نحسب قيمة الدخل ثم نضع الشرط على القيمة مثلا
كود:
Byte InputValue =0;
.
.
.
 )if(digitalRead(input1)==HIGH
{InputValue=1}
)if (digitalRead(input2)==HIGH
{InputValue=InputValue+2}
)if (digitalRead(input3)==HIGH
{InputValue=InputValue+4
if (digitalRead(input4)==HIGH
{InputValue=InputValue+8
معذرة أجد صعوبة فى وضع الأقواس المناسبة فى مكانها الصحيح و يجب أن اعيد كتابة كل شيء فى برنامج خارجى ثم نسخه هنا

أيضا لتجنب قراءة ما لا يجب قراءته هناك طرف فى المتكاملة يسمى ESt وهو يصبح High فقط عندما تكتشف المتكاملة أن هناك ترددات صحيحة لرقم صحيح موجود على الدخول و هذا يتيح لك أن تقرأى هذا الرقم فور ارتفاع هذا الطرف إلى واحد ثم تنتظرى عودته للصفر حتى تكون الدائرة و البرنامج جاهزا لإستقبال الرقم الثانى فى 2 LOOP الأولى تنتظر الطرف أن يصبح High ثم يقرأ الرقم ثم ينتظر فى الثانية أن يصبح Low للبدأ من جديد فى الرقم الثانى
هكذا يمكنك إعداد 4 أرقام أو مصفوفة لوضع النتائج بها


رانية1
:: مهندس متواجد ::
تاريخ التسجيل: Jun 2006
الدولة: فلسطين
المشاركات: 128
نشاط [ رانية1 ]
قوة السمعة:
قديم 16-01-2017, 09:53 PM المشاركة 12   
افتراضي


الأخ مشتاق الله شكرًا لك حاولت البرمجة الا انه يبقى المخرج مضاء حتى بدون ادخال كود مع العلم ان برمجته على ال plc سهل جدا ولكن سعره مرتفع مقارنه مع الاردوينو


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 619
نشاط [ مشتاق الله ]
قوة السمعة:
قديم 17-01-2017, 04:20 AM المشاركة 13   
sun


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


بفضل الله تم تجربة البرنامج على البروتيوس و نجح بدون اى مشاكل .
لذلك هناك امران :
- يمكنك توصيل اربع مفاتيح على المداخل و تجربة البرنامج بالضغط على المفاتيح و كانها اكواد .
- يرجى رفع صورة توصيل بين الدائرتين .
- لو تم تعديل البرنامج يرجى رفع النسخة المعدلة الاخيرة .



رانية1
:: مهندس متواجد ::
تاريخ التسجيل: Jun 2006
الدولة: فلسطين
المشاركات: 128
نشاط [ رانية1 ]
قوة السمعة:
قديم 18-01-2017, 12:48 PM المشاركة 14   
افتراضي


الاخ مشتاق الله
شكرا جزيلا لك فقد تم تشغيل الدائرة بشكل ممتاز وتم ربطها بالموبايل وعملت بشكل كامل
جعله الله في ميزان حسناتك



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 09:32 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)