Questions? E-mail
Questions? Comments?
Send e-mail to: ahmadsaad2011@gmail.com
Send e-mail to: ahmadsaad2011@gmail.com
Thursday, November 15, 2018
اردوينو: البيت الذكي : تمرين 11: استخدام شاشة عرض داخل البيت : لطباعة نصوص منتقاة على شاشة ال سي دي
يمكن استخدام شاشة ال سي دي لعرض حروف وارقام. التي بحوزتك يوجد فيها 16 عمود وصفوف عدد 2 بحيث يمكنها طباعة حتى 32 حرف . في هذه التجربة يلزمنا استخدام المداخل للشاشة من 1 - 16 انظر الرسم:
code
المكونات المطلوبة:
الرسم التفصيلي للدائرة:
الرسم الهندسي للدائرة:
code
اردوينو: البيت الذكي : تمرين 10 دائرة للتحكم بتشغيل المحرك داخل البيت ، التحكم بسرعة دورانه ، والتحكم باتجاه دوران المحرك
كما في الدائرة السابقة في تمرين 9 سنقوم بالتحكم بتشغيل محرك دي سي (dc motor) من خلال:
1- التحكم بتشغيله on/off
2- التحكم بسرعة دورانه
3- التحكم باتجاه دورانه (مع عقارب الساعة او عكس عقارب الساعة)
احد تطبيقات هذه الدائرة هو جهاز تحريك الصور المتحركة للتحكم بسرعة تغييير الصور ذهابا وايابا...يمكن التفكير بتطبيقات اخرى لهذه الدائرة...
1- للتحكم بتشغيل وايقاف تشغيل المحرك سنستخدم زر ضغط على المدخل 5 رقمي
2- للتحكم بسرعة دورانه سنستخدم مقاومة متغيرة potentiometer
3- للتحكم باتجاه دورانه سنستخدم دارة متكاملة IC تدعى H-BRIDGE رقمها L293D. سنستخدم زر ضغط على المدخل 4 رقمي لهذا الخصوص
القطع اللازمة:
Parts required:
- two 10 kilohm resistors
- two momentary pushbuttons
- one 10 kilohm potentiometer
- motor
- 9V battery
- H-Bridge
مبنى الدائرة عملي:
رسم الدائرة هندسي:
الكود: blogard10
اردوينو: البيت الذكي : تمرين 10: القطع المطلوبة لتحضيرها
اردوينو: البيت الذكي : تمرين 9 : عمل دولاب متحرك مثل مروحة في البيت نتحكم فيه
استخدام الاردوينو للتحكم بمحرك هو ليس بسهولة التحكم بثنائي ليد لان المحرك بحاجة لتيار كهربائي اكبر مما يمكن تزويده له من خلال لوحة الاردوينو (اكثر حد 40 mA ) والسبب الاخر ان المحركات تولد تيارها الكهربائي من خلال Induction الذي قد يتلف دائرتك الكهربائية ويحدث هذا عند اعطاء امر التوقف للمحرك ولكن المحرك يستمر بالدوران بفعل الطاقة الداخلية ولهذا يلزم استخدام ثنائي ديود لوضعه بالتوازي مع المحرك حتى يمر التيار الكهربائي باتجاه واحد فقط.
الترانزستور (موسفيت)
n-channel
يتيح لك التحكم بتيار كهربائي عالي او فولطية عالية باستخدام تيار الكهرباء الاردوينو القليل.
المطلوب اليوم:
(1) بناء الدائرة وفحص عملها على برنامج تينكر كاد (5 علامات)
(2) بناء الدائرة فعليا وفحص عملها (10 علامات)
القطع المطلوبة:
الدائرة:
الرسم الهندسي:
الكود: هو كود بسيط: حاول فهم الكود وهو مكون من ثلاثة اقسام: ما هما؟
اردوينو: تمرين 8: البيت الذكي :عمل ساعة ضوئية داخل البيت باستخدام حساس الميل
تمرين 8: عمل ساعة ضوئية في اردوينو
Digital Hour Glass
يضيء اول ليد بعد 10 دقائق وكل 10 دقائق يضيء التالي حتي يضيئوا جميعا بعد مرور ساعة وهكذا
قم بتغيير الكود ليضيئ كل ليد بعد 10 ثواني وهكذا...
القطع المطلوبة:
tilt switch
led
10k ohm resistor
220 ohm resistor
tilt switch: حساس استشعار الميل
حساس أستشعار الميل يستخدم للكشف عن الميلان او عن الاتجاه, يتميز حساس استشعار الميل بأنه سهل الاستخدام والبرمجة و لا يستهلك الكثير من الطاقة ، لهذا الحساس استخدامات مختلفة في حياتنا إلىومية فهي تستخدم غالبا في الالعاب او الأجهزة الحركية للكشف عن مقدار ميلان الجهاز ويمكن استخدامه بعدة تطبيقات في البيت الذكي.
غالبا ما يكون هذا الحساس مصنوع من اسطوانة مجوفة من الداخل ويوجد بداخلها جسم موصل للكهرباء ( غالبا ما يكون فقافة من الزئبق او كرة متدحرجة), وفي نهاية التجويف يوجد قطبان موصلان للكهرباء وعندما يتم تحريك الحساس بحيث تكون القاعدة الموصول بها الاسلاك إلى الاعلى فإن الكرة تتجه إلى الاسفل وتوصل بين القطبين الموصلان للطاقة ، وبذلك فانه يعطي اشارة إلكترونية إلى المتحكم الأصغر او إلى الاردوينو وبذلك تستطيع ان تستفيد من هذه إشارة كا إشارة إدخل.
شكل التوصيل:
الكود جاهز هنا:
// named constant for the switch pin
const int switchPin = 8;
unsigned long previousTime = 0; // store the last time an LED was updated
int switchState = 0; // the current switch state
int prevSwitchState = 0; // the previous switch state
int led = 2; // a variable to refer to the LEDs
// 600000 = 10 minutes in milliseconds
long interval = 600000; // interval at which to light the next LED
void setup() {
// set the LED pins as outputs
for (int x = 2; x < 8; x++) {
pinMode(x, OUTPUT);
}
// set the tilt switch pin as input
pinMode(switchPin, INPUT);
}
void loop() {
// store the time since the Arduino started running in a variable
unsigned long currentTime = millis();
// compare the current time to the previous time an LED turned on
// if it is greater than your interval, run the if statement
if (currentTime - previousTime > interval) {
// save the current time as the last time you changed an LED
previousTime = currentTime;
// Turn the LED on
digitalWrite(led, HIGH);
// increment the led variable
// in 10 minutes the next LED will light up
led++;
if (led == 7) {
// the hour is up
}
}
// read the switch value
switchState = digitalRead(switchPin);
// if the switch has changed
if (switchState != prevSwitchState) {
// turn all the LEDs low
for (int x = 2; x < 8; x++) {
digitalWrite(x, LOW);
}
// reset the LED variable to the first one
led = 2;
//reset the timer
previousTime = currentTime;
}
// set the previous switch state to the current state
prevSwitchState = switchState;
}
اردوينو: البيت الذكي : تمرين 6: القسم الثاني: تصميم بيانو باستخدام ازرار الضغط للتحكم بنغمة الصوت
اردوينو: البيت الذكي : تمرين 7 : حساس الحركة داخل البيت motion detector خارجي 1
حساس الحركة
معلومات عنه - هنا
سنقوم باستخدام مقاومة صغيرة 220 اوم
يلزم ملاحظة مداخل حساس الحركة حيث لديه 3 مداخل: كهرباء 5 فولت - ارضي - ومدخل الاشارة
int led = 13; // the pin that the LED is atteched to
int sensor = 2; // the pin that the sensor is atteched to
int state = LOW; // by default, no motion detected
int val = 0; // variable to store the sensor status (value)
void setup() {
pinMode(led, OUTPUT); // initalize LED as an output
pinMode(sensor, INPUT); // initialize sensor as an input
Serial.begin(9600); // initialize serial
}
void loop(){
val = digitalRead(sensor); // read sensor value
if (val == HIGH) { // check if the sensor is HIGH
digitalWrite(led, HIGH); // turn LED ON
delay(100); // delay 100 milliseconds
if (state == LOW) {
Serial.println("Motion detected!");
state = HIGH; // update variable state to HIGH
}
}
else {
digitalWrite(led, LOW); // turn LED OFF
delay(200); // delay 200 milliseconds
if (state == HIGH){
Serial.println("Motion stopped!");
state = LOW; // update variable state to LOW
}
}
}
int sensor = 2; // the pin that the sensor is atteched to
int state = LOW; // by default, no motion detected
int val = 0; // variable to store the sensor status (value)
void setup() {
pinMode(led, OUTPUT); // initalize LED as an output
pinMode(sensor, INPUT); // initialize sensor as an input
Serial.begin(9600); // initialize serial
}
void loop(){
val = digitalRead(sensor); // read sensor value
if (val == HIGH) { // check if the sensor is HIGH
digitalWrite(led, HIGH); // turn LED ON
delay(100); // delay 100 milliseconds
if (state == LOW) {
Serial.println("Motion detected!");
state = HIGH; // update variable state to HIGH
}
}
else {
digitalWrite(led, LOW); // turn LED OFF
delay(200); // delay 200 milliseconds
if (state == HIGH){
Serial.println("Motion stopped!");
state = LOW; // update variable state to LOW
}
}
}
Subscribe to:
Posts (Atom)