الخميس، 29 نوفمبر 2012

مسجل الإزاحة Shift Register 74595


أهلاً و سهلاً بكم مجدداً

اليوم سنتحدث سنسلط الضوء على فكرة على درجة كبيرة من الأهمية تساعدنا على قيادة عدد كبير من البواعث الضوئية LED  ألا و هو مسجلات الإزاحة Shift Register.





ما هو مسجل الإزاحة Shift Register ؟


هو مجموعة متسلسلة من القلابات flip flop التي لها نفس دور الساعة CLK , و خرجها متصل بقلاب آخر , هذا يعمل على نقل البيانات بين المسجلات بتسلسل , و تنتقل البيانات عندما يتغير دور الساعة صعوداً أو هبوطاً .


تنقسم مسجلات الإزاحة إلى عدة أنواع و هي 




1.   Serial in , serial out " SISO "
2.   Serial in ,parallel out "SIPO"
3.   Parallel in ,serial out "PISO"
Our shift register used as  " SISO " or "SIPO"
سنستخدم مسجل الإزاحة 74HC595  و الذي سيكون له 

استخدامات كثيرة في الدروس القادمة , نظراً لسهولة برمجته .

توزيع الأرجل لهذه الدارة المتكاملة :



سنشرح كل وظيفة كل مدخل من مداخل مسجل الإزاحة .
 الرجل # 14:
الرجل المسؤولة عن إدخال البيانات تسلسلياً . يتم إزاحة 

البيانات على هذا المدخل
الرجل رقم 13 "تمكين الخرج ":
هذا المدخل مسؤول عن إظهار البيانات على المخرج  ، يجب 

أن تكون هذا الرجل في وضعية منخفض  LOW   حتى 

   يظهر الخرج.

الرجل # 12 :

  Storage latch input  تقوم هذه الرجل بوظيفة إمساك 

البيانات و تخزينها عند تتحول حالتها إلى وضع مرتفع HIGH .
الرجل # 11 :

دخل الساعة , عندما تكون في وضع مرتفع HIGH تسمح 

للبيانات على الدخل التسلسلي" مدخل #14 " بإزاحة بيانات 

بمقدار 8 بت .

الرجل # 10 :

مدخل التصفير RESET 

إذا كان هذا المدخل بوضع منخفض LOW فإن الخرج يكون 

قيمته صفر .

لذلك نضع هذا المربط على الوضع المرتفع HIGH إذا أردنا 

ظهور نتائج المسجل .

الرجل# 9:
تسمى Serial Data Output  تعمل على إزاحة بيانات الخرج 

"8بت" التي تظهر باتجاه مسجل إزاحة آخر , أي بأختصار لو 

أردنا شبك أكثر من مسجل إزاحة واحد يمكننا ذلك بوصل هذه 

الرجل مع الرجل #14 في المسجل الآخر .

الأرجل 15 , 1-7 :


أرجل الخرج " 8 بت " .

يمكنك العودة إلى النشرة الفنية  الحصول على مزيد من 

المعلومات.

باستخدام مسجل الإزاحة , نحتاج فقط ل 3-4 أرجل ففقط من 

المتحكم للتحكم ب 8 بت و هذا يعتبر مفيد جداً لو أردنا 

   استخدام المتحكم في تطبيقات متعددة .




لنبدأ الآن بتجهيز معداتنا , لنبدأ استعمال هذه الدارة المتكاملة .



سنحتاج لهذه التجربة المكونات التالية : 

1) بطاقة أردوينو .

2)LED عدد 8 


3) مسجل إزاحة من النوعShift register 74HC595

4)بعض الأسلاك Some wires

5)مقاومة   100Ohm عدد 8

6)مكثق 100nF

7) لوحة تعليمية مثقوبة BreadBoard 




الشكل أدناه يبين توصيل الدارة كهربائيا .

صورة تبين التوصيل , مع الأنتباه إلى أن المكثق مربوط مع المدخل رقم 12 و الأرضي


 و هذا مخطط الدارة لمن يستصعب من فهم المخطط أعلاه 




الآن و قبل البدء بالبرمجة , سأوضح امر مهم جديد , ألا وهو أمر shiftOut

قد فاتني ذكر أمر هو أن مسجل الإزاحة 74595 , تتم برمجته 

بطريقة التخاطب  الشهيرة SPI  و هي اختصار Serial 

Peripheral Interface    و هو طريقة 


لنقل البيانات تزامنياً , يمكن بداية الإطلاع على مكتبتها على 

الرابط هنا 

نعود للأمر shiftOut , هذا الأمر هو الذي سنقوم من خلاله 

بنقل البيانات من المتحكم إلى مسجل الإزاحة .

الطريقة سهلة , يكتب الكود الخاص بمقل البيانات على الصيغة 

التالية 

    shiftOut(datapin,clockpin,bitorder,value);
حيث :

datapin: هو المدخل المسؤول عن إخراج البيانات بت بت .
clockpin: المدخل المسؤؤل عن دخل الساعة المنظم للمتحكم , و يتغير الخرج عندما يقدح المسجل باستخدام هذا المدخل .
bitorder: هو خيار يحدد طريقة نقل المعلومات إلى المسجل 
إما أن تكون MSBFIRST أي ابتداءاً من البت ذو القيمة الأعلى اهمية للأقل أهمية "من اليسار لليمين "
أو أن تكون  LSBFIRST  أي من البت الأقل أهمية للأعلى أهمية " من اليمين  لليسار"

الوضع الإفتراضي يكون نقل البيانات MSBFIRST 

value: هي القيمة التي ننوي إظهارها على الخرج .




----------------------------------------------------------------------------
// انسخ البرنامج من هنا 
//This program is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//You should have received a copy of the GNU General Public License
// along with this program. If not, see http://www.gnu.org/licenses/

//****************************************************
//Name :Mohannad Rawashdeh .
//Date "30/6/2012 3:00pm
// Description: This  Code for using a 74HC595 Shift Register           //
// to count from 0 to 255  , Using arduino pin # 8,10,11,12
// Programmed for http://genotronex.blogspot.com/
                
//****************************************************************
//define the Pins
//Pin connected to latch clock  of 74HC595 ""pin 12""
int latchPin = 8;
//Pin connected to shift clock of 74HC595 ""PIN 11 "
int clockPin = 12;
////Pin connected to serial Data A of 74HC595 "pin 14 "
int dataPin = 11;
///Output pin controller of 74HC595""pin 13""
int output_pin=10;
//___________________________________________________

void setup() {
  //set pins to output so you can control the shift register
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  pinMode(output_pin, OUTPUT);
  digitalWrite(output_pin,HIGH); // this instruction to disable Output pins
}

void loop() {
  // count from 0 to 255 and display the number 
  // on the LEDs
  for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) {
    // take the latchPin low so 
    // the LEDs don't change while you're sending in bits:
    digitalWrite(latchPin, LOW);
    // shift out the bits:
    shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay);  

    //take the latch pin high so the LEDs will light up:
    digitalWrite(latchPin, HIGH);
    digitalWrite(output_pin,LOW);// enable OUTPUT Pins
    // pause before next value:
    delay(250);
    
    digitalWrite(output_pin,HIGH); // this instruction to disable Output pins again .
  }
}
   //----------------------------------------------------------------------


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

    الآن و بعد أن تمكنا من الإلمام بطريقة استخدام مسجل إزاحة واحد , ننتقل لسؤال مهم , هل بإمكاننا التحكم بمسجلي أزاحة باستخدام نفس عدد المداخل التي استخدمناها للتحكم بمسجل إزاحة واحد ؟ 

سأُجيب عن هذا التساؤل في البوست القادم , إلى ذلك الوقت إلى اللقاء .

السبت، 24 نوفمبر 2012

التعديل النبضي PWM

أهلاً بكم مجدداً , حان الوقت الآن للتحدث عن الأوامر التناظرية Analogue read/write و عن التعديل النبضي PWM .




تكمن أهمية المرابط التناظرية أنها تسمح لنا بإمكانية قراءة المتغيرات الخارجية و أشارات الخرج للعديد من الحساسات والنواقل Sensors and Transducer  لعمل معالجة لهذه الإشارات و تحويلها لقيم مفهمومة لنا .

تقنية التعديل النبضي PWM تقنية شائعة في  مجال الإتصالات   و في التحكم بالمحركات و نظم الإنارة و التحكم بالفولتية بشكل عام.

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


ما هو الPWM و كيف نستفيد من أمكانياته و طريقة دمجه مع بيئة أردوينو ؟

في موقع أردوينو الرسمي , يعطى التعريف المبسط التالي للتعديل النبضي على أنه : 

إعطاء أوامر خرج  تناظرية (Write )للمربط,  يمكن استخدامها لتشغيل البواعث الضوئية LED بسطوع مختلفة في أو قيادة المحركات بسرعات مختلفة.



عند استدعاء analogWrite ()، يقوم المربط بتوليد موجة مربع ثابت من دورة عمل محدده , تردد إشارة PWM هو حوالي 490 هرتز.

لمزيد من البساطة، PWM، هو أسلوب للحصول على نتائج تشابهية Analogue  بطرق رقمية.

هنا موضوع مشابه عن التحكم النبضي , يمكن قراءته و الأستفادة من المعلومات الواردة فيه .

و السؤال الذي يتبادر لإذهاننا ..هل يمكننا استخدام المرابط الرقمية في المتحكم AVR لتوليد PWM ؟؟

الجواب هو نعم ! على الرغم من أن توليد موجات نبضيةPWM يتولد أساساً من المرابط التناظرية "في المتحكمات ATmega328,ATmega168  من A0-A5 في بطاقة الأردوينو أو بشكل أدق من خلال  PORT C بشكل عام " إلا أنه يمكن توليدها من عدة مرابط رقمية محددة ألا وهي (3،5،6،9،10،11 ) سترى علامةّ ~ بجانب المرابط التي تدعم هذا الخيار على بطاقة الأردوينو .





قيمة دورة التشغيل Duty cycle بين 0 -255 .

تكفي هذه المعلومات الآن لبدأ البرمجة و تنفيذ الدارة بسيطة لرؤية كيفية عمل هذه التقنية

ماذا سنحتاج لتنفيذ التجربة؟

1) بطاقة أردوينو.
2) بواعث ضوئية LED على الأقل 3 
3)ترانزستور "أختياري"
4)مقاومات (أي قيمة من 100 - 510 أوم تصلح للتجربة)
5) اسلاك توصيل
6) لوحة تعليمية مثقوبة Breadboard



مخطط الدارة موضح كما في الصورة



 يمكن ربط مدخل أردوينو مباشرة مع LED واحد مباشرة مع مقاومة و توصيله بالأرضي في حال عدم الرغبة في استعمال الترانزستور 

كود البرنامج موجود أدناه :

/*
 Fading
 This example shows how to fade an LED using the analogWrite() function.
 Created 1 Nov 2008
 By David A. Mellis
 modified 30 Aug 2011
 By Tom Igoe
 http://arduino.cc/en/Tutorial/Fading
 This example code is in the public domain.
 */


int ledPin = 3; // LED connected to digital pin 3
int ledPin2 = 5;// LED connected to digital pin 5
int ledPin3 = 6;// LED connected to digital pin 6


void setup()  { 
  // nothing happens in setup void loop()  { 
  // fade in from min to max in increments of 5 points:
  for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) { 
    // sets the value (range from 0 to 255):
    analogWrite(ledPin, fadeValue); 
    analogWrite(ledPin2, fadeValue); 
    analogWrite(ledPin3, fadeValue); 
    
    // wait for 30 milliseconds to see the dimming effect    
    delay(30);                            
  } 

  // fade out from max to min in increments of 5 points:
  for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) { 
    // sets the value (range from 0 to 255):
    analogWrite(ledPin, fadeValue);         
    analogWrite(ledPin2, fadeValue); 
    analogWrite(ledPin3, fadeValue); 
    // wait for 30 milliseconds to see the dimming effect    
    delay(30);                            
  } 
}

في حال اردنا استدعاء هذا الأمر فكل ما علينا هو كتابته كالآتي 



 analogWrite(ledPin, Value); 

التطبيق سهل أليس كذلك ؟ 


في المستقبل القريب سأدرج تحت هذا البند عدة مشاريع مرتبطة بهذه التقنية لنرى الميزات و التطبيقات التي يمكننا فعلها بواسطته.

تحية طيبة للجميع .


الثلاثاء، 20 نوفمبر 2012

الترانزستور



قد ألقينا لمحة عن كيفية إضاءة البواعث الضوئية LED و طرق التحكم بها عن طريق المتحكم الأصغري MCU و برمجته على بيئة أردوينو .

حسناً نعرف أنه أكبر تيار تستطيع مرابط المتحكم تحملها هو 40mA و هذا ضئيل جداً لو أردنا التحكم بتطبيقات مهمة مثل قيادة المحركات أو التحكم بالمرحّلات Relay أو حتى إضاءة عدد من الLED باستخدام  مربط واحد فقط ! 

هذا ما سنتحدث عنه اليوم و و سنبني دارة عملياً و نرى أهمية الترانزستور .

يمكن تعريف الترانزستور على أنه شبه موصل يستخدم بشكل رئيسي لتضخيم الأشارات  أو كمفتاح فتح و إغلاق , و هو يتكون من 3 أجزاء رئيسية .


لن نقوم هنا بشرح كيفية عمله كمضخم , بل سأقوم بتوضيح كيفية عمله كمفتاح فتح  و إغلاق .

هناك أنواع عديدة من الترانزستورات فهناك الBJT بنوعيه الNPN و PNP و هناك JFET و MOSFET .

سنستخدم النوع BJT لرخص ثمنه و توفره بالسوق .

  • أقسام الترانزستور BJT هي :


1)Emitter الباعث
2)Base القاعدة
3)collector المجمع


حسناً كيف يعمل ؟

 ببساطة , في حالة مرور تيار خلال القاعدة فإن ذلك يسمح للتيار بالمرور من خلال المجمع إنتهاءاً بالباعث , و في حالة عدم مرور تيار خلال القاعدة فأنها ستمنع مرور التيار من خلال المجمع .

يوفر لنا الترانزستور عزلاً كهربائيا بين مرابط المتحكم و بين دارة الكهربائية ذات الحمل العالي .

يمكن معرفة أرجل الترانزستور من خلال استخدام جهاز افوميتر و التحقق في إذا ما كان الترانزستور يعمل أم لا .


المعادلة الرئيسية لحساب التيار المار في أجزاء الترانزستور :

Ic=B*IB 
And  …
IE=ICB*IB 
Which B "Beta" ,Given In data sheet .
يمكن استخدام برنامج محاكاة الدوائرالكهربائية و فهم هذا المبدأ و عمل الحسابات للترانزستور .

حسناً لننتقل الآن لتوصيل الدارة مع بطاقة الأردوينو .



سنقوم بإضاءة 3 بواعث ضوئية LED بربطها مع الترانزستور من جهة , و من جهة أخرى سنربط مربط القاعدة Base مع المربط الرقمي #3 (D3) .


سنحتاج في هذه التجربة إلى :

1) بطاقة اردوينو
2)لوحة تجارب مثقوبة Breadboard 
3)ترانزستور NPN يمكن استعمال النوع المتوافر لديك مع الإنتباه للتيار الأقصى الذي يستحمله الترانزستور, أستخدمت هنا 2N3904 .
4) مقاومتين 100أوم 
5)بعض الأسلاك 
6) LED عدد 3 .


توصيل الدارة سهل , و هذا مخطط الدارة الكهربائية 


هنا الكود الذي سنستعمله للتحكم بالترانزستور .

----------------------------------------------------------------------------------------------------------------------------------
//أنسخ الكود من هنا 
//This program is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//You should have received a copy of the GNU General Public License
// along with this program. If not, see http://www.gnu.org/licenses/

//****************************************************
//Name :Mohannad Rawashdeh .
//Date "31/6/2012 10:00pm
// Description: This program design to Use  transistor as a Switch
//to drive three led connecting with collector.
// using digital pin 3 , Blink on/off led with different delay time 
// Programmed forhttp://genotronex.blogspot.com/

//*******************************************************
   int i;
   int led_pin=3;       // give an allias name for Pin 3 to call it in the program
    void setup(){
     pinMode(led_pin,OUTPUT); // define Pin 3 as Output
    }
    void loop(){
      //.....starting loop.....
      // the program will starting with slow bkink then will increase 10ms each loop
      
    for (i=200;i>10;i-=10){
      digitalWrite(3,HIGH);
      delay(i);
      digitalWrite(3,LOW);
      delay(i);
      
    } 
   // the program will starting with Fast bkink then will decrease 10ms each loop 
    for ( i=10;i<200;i+=10){
      digitalWrite(led_pin,HIGH);
      delay(i);
      digitalWrite(led_pin,LOW);
      delay(i);
    }
    }
    //end 

----------------------------------------------------------------------
و هذا الفيديو يوضح طريقة عمل البرنامج بعد تحميله على المتحكم .


اتمنى أن تستطيع الآن تطبيق هذا الدرس على مشاريعك  في التطبيقات المختلفة .

ملفات هذا الدرس, التوصيل بالإضافة لملف المحاكاة باستخدام البروتوس يمكن تحميله من هنا 

الاثنين، 12 نوفمبر 2012

Knight Rider and LED

Knight Rider





موضوع اليوم سيكون شيق نوعاً ما و سنسترجع فيها بالذاكرة السلسلة التلفزيونية" نايت رايدر" حيث كان ديفيد هاسلهوف  بطل المسلس لديه  جهاز اسمه  في سيارته بونتياك السوداء الجميلة AI KITT  .

المثير في هذه السيارة هي الإضاءة الحمراء التي في مقدمتها و التي ألهمت الكثيرين و اتسع نطاق انتشار نفس طريقة إضاءتها المميزة حتى وقتنا الحاضر .


سنهتم اليوم ببرمجة نظام بسيط مشابه باستخدام الأردوينو و سنتعلم تقنيات جديدة و مهارات جديدة بالبرمجة في بيئة اردوينو .




حسناً بعد هذه المقدمة .... لنبدأ 


جهّز معداتك ! 


ستحتاج للقيام بهذه التجربة :




1) بواعث ضوئية LED عدد 8 " أي لون متوافر "
2) مقاومات " القيمة بين 100 - 180 أوم " 
3) بطاقة أردوينو 
4) لوحة تعليمية مثقوبة Bread Board
5) بعض الأسلاك للتوصيل 

طريقة التوصيل :

طريقة التوصيل موضحة بالصورة التالية :


أنا قمت بتنفيذ المشروع أيضاً بواسطة Arduino Nano لكن هنا جعلت تغذية المصعد للLED مشتركة من مصدر الجهد 5V و كل مهبط قمت بتوصيله إلى مدخل من مداخل المتحكم " أي كمصرف للتيارCurrent Sink " .



الآن و بعد أن قمنا بالتوصيل سنبدأ بالبرمجة .

سنقوم بالبرمجة بطريقتين , و الهدف هو زيادة المهارات البرمجية في التعامل مع  بيئة أردوينو البرمجية  , سنحصل على نفس النتائج لكن ببرمجة مختلفة .

الطريقة الأولى : الطريقة التقليدية 


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

البرنامج تجدوه مكتوباً أدناه :

------------------------------------------------------------------------
//This program is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//You should have received a copy of the GNU General Public License
// along with this program. If not, see http://www.gnu.org/licenses/

//****************************************************
//Name :Mohannad Rawashdeh .
//Date "30/6/2012 10:00pm
// Description: This program designed For Knight rider circuit.
// , Using digital pin 2-9 Using For loop Statment.
// Programmed for genotronex blog http://genotronex.blogspot.com/

//*******************************************************
int i;                      //Integer variable for Counter 
void setup(){
  for (i=2;i<10;i++){       // Define Digital pin as OUTPUT Pin.
  pinMode(i,OUTPUT);
}
}
// Void setup ended _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
void loop(){
 //In loop area  4 program will execute 
 // first one , blink on one led each time starting from pin 2
  for(i=1;i<10;i++){
    digitalWrite(i,HIGH);
     delay(150);
    digitalWrite(i,LOW);
     delay(10);
}
//First program end

//******************************************************

// Second program , blink on one led each time starting from pin 9
for(i=10;i>1;i--){
    digitalWrite(i,HIGH);
     delay(150);
    digitalWrite(i,LOW);
     delay(10);
}
//Second program end

//******************************************************

// Third program , blink on 3 led each time starting from pin 1 and shifting
//it  LST FIRST
  for(i=1;i<11;i++){
    digitalWrite(i-1,HIGH);
    digitalWrite(i,HIGH);
     digitalWrite(i+1,HIGH);
     delay(150);
     digitalWrite(i-1,LOW);
    digitalWrite(i,LOW);
     digitalWrite(i+1,LOW);
     delay(10);
}
//Third program end

//******************************************************

// fourth program , blink on 3 led each time starting from pin 1 and shifting
//it  MSB FIRST
for(i=10;i>1;i--){
    digitalWrite(i-1,HIGH);
    digitalWrite(i,HIGH);
     digitalWrite(i+1,HIGH);
     delay(150);
     digitalWrite(i-1,LOW);
    digitalWrite(i,LOW);
     digitalWrite(i+1,LOW);
     delay(10);
}
}
//end and return to loop.





هذا البرنامج البسيط سيكون يمكن رؤية طريقة عمله في هذا الفيديو .




الطريقة الثانية : طريقة مسجلات المرابط Port Registers 

هي طريقة تسمح فيها للغة المتدنية المستوى Low-level بالوصول و المعالجة السريعة للمداخل و المخارج الخاصة بالمتحكم , يمكن معرفة المزيد عن هذه الميزة أكثر بزيارة الرابط  هنا 

ما يهمنا هو معرفة أن :
PORT D : هي للمداخل الرقمية في الأردوينو من D0-D7
PORT B : هي للمداخل الرقمية في الأردوينو من D8-D13

لو كتبنا : 
 PORTD=B00000000;     //Let digital pin from D0-D7 Equal LOW

فهذا سيعني أن المرابط الرقمية من D0-D7 قيمتها صفر فولت " صفر منطقي"

 PORTD=B00000100;     //Let digital pin from D0-D7 Equal LOW

هذا سيعني أن D2 قيمته 1 منطقي "5 فولت " و الباقي صفر 

بمعنى أخر , الباعث الضوئي المربوط مع D2 سيضيئ عندها .

البرنامج موجود هنا للتحميل



في البرنامج  هناك أمر آخر جديد هو أمر الإزاحة >> , <<   هذا الأمر يقوم بإزاحة الأرقام خانة واحدة إما لليمين << أو لليسار >> , هنا توضيح لهذا الأمر بشكل مفصل 

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





هنا أيضاً يمكن تحميل ملفات البروتوس و الHEX الخاصة بالبرامج .


يستخدم برنامج البروتوس لعمل محاكاة للأنظمة الكهربائية و الإلكترونية , و هو برنامج ممتاز جداً لتوضيح طريقة سير البرنامج المُحمّل على المتحكم , يمكنك معرفة كيفية تحميل البرنامج على بروتوس بقراءة هذين الموضوعين المنفصلين



تحويل الملفات ذات الإمتداد ino الخاصة بأردوينو إلى الإمتداد hex 



يمكنكم تحميل ملفات هذه التجربة من خلال هذا الرابط هنا 

قم بتجربة هذه البرنامج و بناء الدوائر الخاصة بها , فهي سهلة و ستمكنك من تطوير قدراتك البرمجية بشكل كبير , و لأي استفسار سأكون بتلقي اسئلتكم على الموضوع عبر التعليقات أو على بريدي الإلكتروني GENOTRONEX@Gmail.com


 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.