Category Archives: عام

كل ما يتعلق بالدوت نت بشكل عام

ربط حساس الحركة EKMC1601111 بشريحة ESP8266

أردت استخدام حساس يساعدني إلى التعرف فيما إذا كان هناك حركة أم لا. هناك العديد من الحساسات التي قد تفي بالغرض. لكنها تختلف (1) مسافة النطاق التي من خلالها يمكنها التحسس (2) وبما يعرف بـ rest time وقت إعادة الضبط أو بمعنى الوقت الذي تحتاجه لتصبح جاهزة للتحسس لحركة جديدة

إشتريت بضعة حساسات EKMC1601111 لشركة بناسونيك Panasonic. وقمت بربط الحساس إلى شريحة ESP8266.

Untitled1

مخطط توضيحي للتوصيلات للحساس EKMC1601111 مع شريحة ESP8266

 

تم استخدام الشيفرة التالية لقراءة قيمة الحساس وطباعتها إلى نافذة الخرج.  لاحظ السطر 6 ، تم ضبط موخر لمدة 30 ثانية لتهيئة الحساس

1
2
3
4
5

6
7
8

9
10
11
12
13
14

15
16
17
18
19
20
21

const int PPR = D2;

int bState = 0;
float State =
0;

void setup() {
pinMode(PPR, INPUT
);

delay(30000);//wait for 30s until the sensor voltage becomes stable

 Serial.begin (9600);
}

void loop() {

 int State = digitalRead (PPR);

 if (bState != State) {
bState =
State;
Serial.println (“”
);
}

 if (State == HIGH) {
Serial.print
(State);
} else
{
Serial.print
(State);
}

 delay(100);
}

 

 

بعد تحميل البرنامج إلى شريحة ESP8266 قم بفتح نافذة الخرج لمشاهدة نتائج تعليمات الطباعة المستخدمة

Untitled2

 

لاحظ قيمة 1 تدل على أن هناك جسم متحرك ضمن نطاق الحساس

Untitled

 

 

لم أستخدم الباعث الضوئي إلى الآن ، سأقوم بإضافة تعليمات الآن لإضاءة الباعث الضوئي إشعارا بأن هناك حركة

const int PPR = D2;

const int LED = D1;

float State = 0;

void setup() {

pinMode(LED, OUTPUT);

pinMode(PPR, INPUT);
digitalWrite(LED, LOW
);

 delay(30000);//wait for 30s until the sensor voltage becomes stable
}

void loop() {

int readState = 0;

 for(int i = 0; i < 10; i++){
readState += digitalRead
(PPR);
}

State = readState/10;

if(State >= 0.5){
digitalWrite(LED, HIGH
);
}else
{
digitalWrite(LED, LOW
);
}

 delay(500);
}

 المراجع:

  1. https://qiita.com/FireFoxCorp/items/0b56d672bc9abcbd5ef6
  2. https://titanwolf.org/Network/Articles/Article?AID=f89c3796-bbc6-4548-9c3b-bf5832b04bcf#gsc.tab=0
  3. https://randomnerdtutorials.com/esp8266-nodemcu-digital-inputs-outputs-arduino/

ربط ثنائي باعث ضوئي بـشريحة ESP8266

أردت بداية أن أتعرف إلى كيفية استخدام مبسطة لشريحة esp8266. فتبادر إلى ذهني استخدام الباعث الضوئي. فهو مثال بسيط جدا يمكناستخدامه كمشروع “مرحبا عالم” Hello World. في هذه المقالة سأقوم بداية بربط الباعث الضوئي
مباشرة بمأخذ الطاقة في قاعدة
esp8266 ثم سأقوم بتحول مصدر الطاقة إلى أحد مآخذ العامة GPIO
لأتعرف إلى كيفية استخدامهن.

الأدوات التي سأحتاج إليها:

  1. ثنائي باعث ضوئي led
  2. مقاومة 1 كيلو أوم
  3. موصلات
  4. شريحة esp8266
  5. لوح التجارب breadboard

 

ربط الباعث مباشرة بمأخذ الطاقة في قاعدة esp8266

في هذه الحالة الأمر جدا بسيط انظر إلى الرسم التوضيحي إلى كيفية الربط. الربط الصحيح للدارة سيضيء الباعث الضوئي.

Untitled

ربط باعث ضوئي إلى قاعدة شريحة esp8266 مباشرة

ربط مأخذ الطاقة إلى أحد مآخذ الدخل والخرج العامة (D1)

لنحول مصدر الطاقة للباعث من مأخذ الطاقة 3V إلى المأخذ العام D1، كما هو موضح بالشكل التالي

Untitled

ربط الباعث الضوئي إلى مأخذ عام D1

الآن سأقوم بتعريف متحول ثابت أحدد من خلال المأخذ العام الذي سأستخدمه D1 في هذا المثال. لاحظ الشيفرة التالية

const int LED_PIN =  D1;

void setup() {
  // put your setup code here, to run once:
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(LED_PIN, LOW);
  delay(1000);
  digitalWrite(LED_PIN, HIGH);
  delay(2000);
}

الأمر سهل جدا. حمل البرنامج وستكون النتيجة أن الباعث الضوئي سينير لمدة ثانيتين ويطفئ لمدة ثانية واحدة

المرجع:

  1. https://randomnerdtutorials.com/esp8266-nodemcu-digital-inputs-outputs-arduino/?unapproved=523340&moderation-hash=cdc606415fc34f0f0aa773d2d6032a7f#comment-523340

كيف تخفي مسار محرر الأوامر command prompt

 

إن كنت تحب إخفاء مسار الظاهر في محرر الأوامر command prompt فاتبع الخطوات التالية:

 

clip_image001

 

   1                                                                             

أنشئ ملف فارغ وسمه مثلا init.cmd

clip_image002

 

 2                                                                              

 

افتح الملف باستخدام محرر النصوص notepad مثلا

واكتب التعليمة التالية:

prompt <ضع_رمز> $g

 

قم باستبدال >ضع_رمز< بالرمز الذي يناسبك

 

clip_image003

 

بالنسبة لي فقط استخدمت الإختصار CMD ولاحظ أضفت السطر cls في النهاية حتى يقوم بحذف التعليمة prompt بعد تنفيذها عند فتح محرر الأوامر

 

 

  3                                                                              

 

أخيرا نفذ السطر التالي:

reg add “HKCU\Software\Microsoft\Command Processor” /v AutoRun ^
  /t REG_EXPAND_SZ /d “
حدد مسار الملف كاملا” /f

 

clip_image001[6]

 

  4                                                                             

أعد فتح محرر الأوامر من جديد

 

clip_image005

 

 

في أي وقت أحببت ان تعرف المسار الذي انت فيه فقط نفذ تعليمة cd

 

clip_image006

 

المراجع:

1. https://stackoverflow.com/a/17405182/2696230

الأسس العلمية لقواعد البيانات–مقتبس من مقالات الفريق العربي للبرمجة–للإستاذ InternetMaster–الجزء الأول

https://www.novelucent.com/templates/novelucent/images/database-services.jpg

مقدمة،

هذه مجموعة كتابات للإستاذ InternetMaster تم نشرها سابقا على موقع الفريق العربي للبرمجة في عام 2003. الكاتب أسلوبه مميز وطريقة شرحه مبسطة وغنية بالعلم والمعلومات. اليوم أقدمها بين أيديكم لنستفيد من هذا العلم الذي قدمه الإستاذ InternetMaster ومن العبارات المفيدة التي ذكرها هي أنك إذا أردت أن تتتعرف إلى المشكلة وطريقة علاجها. لا تنظر للعلاج على انه حل لمشكلة بسيطة ولا تحتاج هذا التعقيد في الحل. ولكن الفكرة ان هذا حل ما قد وجد لمشكلة هي ليس بسيطة – قد تكون بسيطة ولكن اذا استعصى عليك الفهم فعليك إلى النظر فيما لوكانت مشكلة كبيرة. فمثلا جدول يضم 10 سجلات وانتهى الأمر قد لا يحتاج لبناء قاعدة معطيات من الأساس والإستغراف في التعلم ولكن حتى تفهم المشكلة التي تحاول حلها تخيل لو أن الجدول في مليون سجل بدل العشرة وهكذا. المهم أضع بين أيدكم هذه المقالات. والله الموفق

إقرأ المزيد

كيف تنصب برنامج آر R Language

    السلام عليكم ورحمة الله | مرحباR logo.svg

    باللغة العربية نتقدم..

     

    تطيبق آر R من التطبيقات المهمة للعمليات الإحصائية. في هذه المقالة سنتعرف إلى كيفية تنصيب وإعداد بيئة آر

إقرأ المزيد

جهز مشروعك الأول من نموذج-عرض-تحكم MVC في بيئة دوت نت كور

السلام عليكم | مرحبا بكم

 

باللغة العربية نتقدم،،


بيئة دوت نت كور بيئة مازالت جديدة وبيئة يمكن أن تعتبر المستقبل إذ أن بيئة دوت نت كور مستقلة عن بيئة دوت نت التقليدية ولكن أبرز مزاياها أنها توفر لك امكانية تشغيل برنامجك على جميع المنصات من ويندوز إلى لينكس إلى نظام تشغيل أبل

 

في هذه المقالة سنتعرف كيف تجهز تطبيق نموذج-عرض-تحكم MVC في بيئة دوت نت كور

 

إقرأ المزيد

تعرف إلى الواصفة ValidationAttribute وطريقة استخدامها

هناك عدة طرق للتحقق من قيم نموذج model منها

  • باستخدام IValidatableObject
  • باستخدام الواصفة ValidationAttribute
  • الطريقة الأخرى هي استخدام Enterprise

 

 

في هذه المقالة سنتعرف إلى كيفية استخدام الفئة ValidationAttribute

 

باختصار التطبيق الذي سنقوم به هو تعريف واصفة UnlikeAttribute مهمتها هي التحقق من عدم التطابق (الإختلاف) بين حقلين أو خاصيتين داخل فئة. اذا كنت قد استخدمت الواصفة CompareAttribute ستدرك أن ما سنقوم به الآن هو العكس تماما لمبدأ عمل Compare. حيث أن الفئة السابقة مهمتها التحقق من التطابق وبالتالي حدوث اختلاف بين قيمتين فهذا يعني أن النموذج غير صحيح وعليه يترتب إجراء مناسب لضمان سلامة وصحة البيانات. ولكن الواصفة UnlikeAttribute التي سنقوم بإنشائها ستكون مخالفة تماما. قد تتساءل ما الفائدة من ذلك؟ ببساطة في حال كنت قد قررت إضافة إمكانية تغير كلمة المرور للمستخدم داخل أحد تطبيقاتك فربما ستقرر بعدم السماح للمستخدم باستخدام نفس كلمة المرور الحالية ككلمة مرور جديدة!

إقرأ المزيد

أنشء مشروعك الأول بايثن Python في بيئة فيجوال ستديو كود

هل جربت بيئة العمل الجديدة من مايكروسوفت فيجوال ستديو كود  header

في هذه المقالة سوف نتعرف إلى بيئة العمل هذه واستخدامها في كتابة التطبيق المشهور “أهلا عالم” باستخدام بايثن

إقرأ المزيد

كيف تستخدم حلقة foreach واحدة للحصول على قيم من مجموعتين مختلفتين؟!

 

السلام عليكم

وأهلا بكم،،

 

هل ترغب في أن تحصل على أكثر من قيمة من أكثر من مجموعة باستخدام تعليمة foreach واحدة؟  لنقل أنه لديك مجموعات (مصفوفتان) وترغب باستخدام حلقة foreach واحدة لمعالجة كلا المصفوفتين؟

 

الحل بسيط جدا ففي دوت نت الإصدار الرابع قد تم إضافة تابع ملحق جديد يدعى Zip. باختصار وظيفة التابع هو الدمج بين مجموعتين وذلك من خلال توفير العنصر ومقابله من كلا المجموعتين حسب الدليل index الحالي.

 

clip_image001 طبعا اذا كان كلا المجموعتين ذات بعد متساو فلا بأس أما إن لم يكونا كذلك فإن التابع سوف يتوقف عند الوصول لآخر عنصر من أحد المجموعتين.

 

 لاحظ المثال التالي:

 

مثال سي شارب

 

var numbersInWords = new[] { “One”, “Two”, “Three” };

var numbers = new int[] { 1, 2, 3 };

 

foreach(var item in numbers.Zip(numbersInWords, (n, nw) =>

new { Number = n , Word = nw}))

{

Console.WriteLine($”{item.Number}: {item.Word}”);

}

 

 

نفذ البرنامج السابق لتحصل على:

 

ناتج خرج تنفيذ الشيفرة السابقة

PS C:\Sample> dotnet run

1: One

2: Two

3: Three

ابنِ تطبيقك في بيئة ويندوز WPF باستخدام حزمة Prism.Unity

أصبح تصميم برامج منصة ويندوز لا يقل تقنيا عن مفاهيم المستخدمة في تطبيقات شبكة الإتصالات. في هذه المقالة سوف نتعرف إلى كيفية استخدام مكتبة من مايكروسوفت تدعى Prism. سوف تساعدك هذه المكتبة وغيرها من المكتبات المرتبطة بها على بناء تطبيقات ديناميكية ومرنة من حيث أنها تسمح لك بتحديد معالم المناطق Regions في النافذة الرئيسية لتطبيقك فبذلك تكون قادرا على تغير  شرائح العرض Views أثناء عمل التطبيق. ولكن أولا دعنا نتعرف إلى بعض المفاهيم الأساسية والبسيطة!

 

بعد قراءة هذه المقالة ستكون قادرا استخدام مكتبة Prism.Unity من خلال

  1. تجهيز واجهة تطبيقك الرئيسية Shell
  2. رسم وتحديد الأماكن ضمن النافذة الرئيسة Shell مثلا
  3. بناء شرائح عرض Views

 

clip_image001 مفهوم Shell

بإختصار مفهوم Shell هي الواجهة الرئيسية  Master Windowأو Master Page بالنسبة لمطوري تطبيقات شكبة الإتصالات (ويب)

 

clip_image001[1] مفهوم المنطقة (المكان) Region

تتيح لك مكتبة Prism تعريف مناطق داخل الواجهة الرئيسية Shell لتمكنك من إضافة شرائح العرض Views أثناء عمل البرنامج

 

clip_image001[2] مفهوم “شرائح العرض” Views

شرائح العرض هي مفهوم العنصر مادون النافذة Window. هذه قد تمثل UserControl أو custom control. شريحة أو شرائح العرض ستظهر ضمن المناطق أو الأماكن Regions التي تم تحديدها داخل الواجهة الرئيسية Shell . بإختصار فإن عملك ستركز على شرائح العرض Views بعد أن تكون قد أتممت بناء واجهتك الرئيسية Shell و رسمت المناطق داخلها.

 

لاحظ الشكل التالي فإن Shell تمثل قالب الواجهة التي تراها ومن ثم فإن المناطق المعرفة عديدة منها Main Region و MainToolBarRegion و  ResearchRegion وأخير فإن شرائح العرض Views هي عبارة عن العناصر التي تراها داخل كل منطقة

 

%d مدونون معجبون بهذه: