زيادة عدد مداخل الاردوينو


FL1Z4XQIVO3HM6S.LARGE

مقدمة

سنقوم في هذه التجربة بتعلم طريقة زيادة عدد مداخل Arduino Uno لتوصيل عدد اكبر من الحساسات او اجهزة الخرج الاخري عن طريق استخدام IC 74HC595N تستخدم هذه القطعة 3 منافذ من الاردوينو وتوفر لك 8 منافذ بدلًا عنها

الأدوات المستخدمة

FCW23R1IVO3HM6X.LARGE

الأداة العدد ملاحظات
أردوينو أونو 1
LED 8
مقاومة 100 أوم 8
IC 74HC595N 1

الجزء النظري

تعتمد فكرة التجربة على الاتصال الرقمي (Digital Communication) بين الاردوينو والـ IC حيث يقوم الاردوينو بأرسال نبضات إلى الـ IC لتشغيل او تعطيل مخارج الـ IC

  • على سبيل المثال اذا قمت بتوصيل 8 مصابيح LED مع خرج الـ IC , و أرسل الاردوينو أشارة 11110000 إلى الـ IC فهذا يعني ان الاربع مصابيح الاولي فقط تعمل

خطوات التوصيل

FNR6P5QIVO3HPO7.LARGE

FYWEA6BIVO3HPOU.LARGE

الكود البرمجي

قم بنسخ الكود ولصقه في برنامج الأردوينو وشاهد إنجازك !

الكود البرمجي

int DataPin = 2;  // Data Pin is connected to Pin No. 2
int ClockPin = 3; // Data Pin is connected to Pin No. 3
int LatchPin = 4; // Data Pin is connected to Pin No. 4

byte Data = 0;  // 8 Bit Data to be sent through DataPin

void setup()
{
  pinMode(DataPin, OUTPUT);   // All 3 pins are output
  pinMode(ClockPin, OUTPUT);  
  pinMode(LatchPin, OUTPUT);
}


void loop()
{
  
  increment(); // LEDs Increament start from 0 - 7   
  delay(2000);  
  SOS();        // All LEDs ON and OFF 10 times
  OneByOne();   // LEDs Glow one by one from 0 to 7
  delay(2000);
  

}

// Function defined below-

void shiftWrite(int Pin, boolean State) // Function is similar to digitalWrite 
{                                       // State-0/1 | Pin - Pin No.
  bitWrite(Data,Pin,State);             // Making Pin(Bit) 0 or 1
  shiftOut(DataPin, ClockPin, MSBFIRST, Data); // Data out at DataPin
  digitalWrite(LatchPin, HIGH);                // Latching Data
  digitalWrite(LatchPin, LOW);
}

void increment()   //LEDs increment start from 0 - 7 
{
  int PinNo = 0;
  int Delay = 100; 
  
  for(PinNo = 0; PinNo < 8; PinNo++)
  {
    shiftWrite(PinNo, HIGH);
    delay(Delay);                
  }
  for(PinNo = 7; PinNo >= 0; PinNo--)
  {
    shiftWrite(PinNo, LOW);
    delay(Delay);                
  }
}

void OneByOne()  // LEDs Glow one by one from 0 to 7
{
  int PinNo = 0;
  int Delay = 100; 
  
  for(PinNo = 0; PinNo < 8; PinNo++)
  {
    shiftWrite(PinNo, HIGH);
    delay(Delay); 
    shiftWrite(PinNo, LOW);    
  }
  for(PinNo = 7; PinNo >=0 ; PinNo--)
  {
    shiftWrite(PinNo, HIGH);
    delay(Delay); 
    shiftWrite(PinNo, LOW);    
  }

}

void AllHigh()   // sets all High
{
  int PinNo = 0;
  for(PinNo = 0; PinNo < 8; PinNo++)
  {
   shiftWrite(PinNo, HIGH);  
  }
}

void AllLow()   // Sets all low
{
  int PinNo = 0;
  for(PinNo = 0; PinNo < 8; PinNo++)
  {
   shiftWrite(PinNo, LOW);  
  }
}

void SOS(){                  // All LEDs ON and OFF 10 times
  for (int x=0; x<10; x++){    
  AllHigh();
  delay(100);
  AllLow();
  delay(100);
  }
}

المصدر

مصدر التجربة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *