الفرق بين المراجعتين لصفحة: «Arduino/advanced io/shiftin»

من موسوعة حسوب
أنشأ الصفحة ب'تزيح الدالة <code>shiftIn()‎</code> بايتًا من البيانات من رجل محدَّدة إلى متغيِّر مقدار بتٍّ واحدٍ في...'
 
طلا ملخص تعديل
 
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:الدالة <code>shiftIn()‎</code> في  أردوينو}}</noinclude>
تزيح الدالة <code>shiftIn()‎</code> بايتًا من البيانات من رجل محدَّدة إلى متغيِّر مقدار بتٍّ واحدٍ في كل مرة تتغير فيها حالة النبضة على رجل أخرى إلى <code>HIGH</code>. يمكن ترتيب عملية قراءة وإزاحة البتات إمَّا بدءًا من البت الأكثر أهمية (أقصى اليسار) أو من البت الأقل أهمية (أقصى اليمين).
تزيح الدالة <code>shiftIn()‎</code> بايتًا من البيانات من رجل محدَّدة إلى متغيِّر مقدار بتٍّ واحدٍ في كل مرة تتغير فيها حالة النبضة على رجل أخرى إلى <code>HIGH</code>. يمكن ترتيب عملية قراءة وإزاحة البتات إمَّا بدءًا من البت الأكثر أهمية (أقصى اليسار) أو من البت الأقل أهمية (أقصى اليمين).
 
==البنية العامة==
== البنية العامة ==
<syntaxhighlight lang="arduino">
<syntaxhighlight lang="arduino">
byte incoming = shiftIn(dataPin, clockPin, bitOrder)
byte incoming = shiftIn(dataPin, clockPin, bitOrder)
</syntaxhighlight>في كل بت، تقدح الرجل <code>clockPin</code> عملية قراءة البت التالي من الرجل <code>dataPin</code> عند الجبهة الصاعدة للإشارة (أي عندما تنتقل النبضة من <code>LOW</code> إلى <code>HIGH</code>) ثم يجب حينها على الرجل <code>clockPin</code> أن تعود للحالة المنخفضة (<code>LOW</code>) لتكرار عملية قراءة البت الذي يليه وهلم جرًّا.
</syntaxhighlight>في كل بت، تقدح الرجل <code>clockPin</code> عملية قراءة البت التالي من الرجل <code>dataPin</code> عند الجبهة الصاعدة للإشارة (أي عندما تنتقل النبضة من <code>LOW</code> إلى <code>HIGH</code>) وتخزينه في المتغير <code>incoming</code>. يجب بعد ذلك على الرجل <code>clockPin</code> أن تعود للحالة المنخفضة (<code>LOW</code>) لتكرار عملية قراءة البت الذي يليه وهلم جرًّا.


إن كنت تتعامل مع جهازٍ يعمل أو يولِّد نبضات عند الجبهات الصاعدة، فيجب عليك أن تتأكد أنَّ حالة الرجل <code>clockPin</code> هي <code>LOW</code> قبل الاستدعاء الأول للدالة <code>shiftIn()‎</code> عبر استدعاء <code>[[Arduino/digital io/digitalwrite|digitalWrite(clockPin, LOW)‎]]</code> مثلًا.
إن كنت تتعامل مع جهازٍ يعمل أو يولِّد نبضات عند الجبهات الصاعدة، فيجب عليك أن تتأكد أنَّ حالة الرجل <code>clockPin</code> هي <code>LOW</code> قبل الاستدعاء الأول للدالة <code>shiftIn()‎</code> عبر استدعاء <code>[[Arduino/digital io/digitalwrite|digitalWrite(clockPin, LOW)‎]]</code> مثلًا.


'''ملاحظة''': هذه العملية التي تجريها الدالة هي تنفيذٌ برمجيٌّ؛ توفر أردوينو المكتبة SPI التي تستعمل التنفيذ العتادي لهذه العملية التي تتميز بسرعتها سوى أنَّها تعمل على أرجل معيَّنة فقط.
'''ملاحظة''': هذه العملية التي تجريها الدالة هي تنفيذٌ برمجيٌّ؛ توفر أردوينو المكتبة SPI التي تستعمل التنفيذ العتادي لهذه العملية التي تتميز بسرعتها سوى أنَّها تعمل على أرجل معيَّنة فقط.
 
==المعاملات==
== المعاملات ==
===<code>dataPin</code>===
 
=== <code>dataPin</code> ===
عددٌ صحيح يشير إلى الرجل المراد قراءة وإزاحة البتات المدخلة منها.
عددٌ صحيح يشير إلى الرجل المراد قراءة وإزاحة البتات المدخلة منها.
 
===<code>clockPin</code>===
=== <code>clockPin</code> ===
عددٌ صحيح يشير إلى الرجل التي تمثِّل نبضات الساعة التي تقدح (عند الجبهة الصاعدة) عملية قراءة بت واحد من الرجل <code>dataPin</code> وإزاحة قيمتهه إلى متغيِّرٍ.
عددٌ صحيح يشير إلى الرجل التي تمثِّل نبضات الساعة التي تقدح (عند الجبهة الصاعدة) عملية قراءة بت واحد من الرجل <code>dataPin</code> وإزاحة قيمتهه إلى متغيِّرٍ.
 
===<code>bitOrder</code>===
=== <code>bitOrder</code> ===
يحدِّد هذا المعامل ترتيب عملية إزاحة البتات المقروءة من الرجل <code>dataPin</code> عند كل جبهة صاعدة لنبضات الرجل <code>clockPin</code>. يأخذ هذا المعامل القيمة <code>MSBFIRST</code> إن كان أول بت يراد قراءته هو البت الأكثر أهمية أو القيمة <code>LSBFIRST</code> إن كان أول بت يراد قراءته هو البت الأقل أهمية.
يحدِّد هذا المعامل ترتيب عملية إزاحة البتات المقروءة من الرجل <code>dataPin</code> عند كل جبهة صاعدة لنبضات الرجل <code>clockPin</code>. يأخذ هذا المعامل القيمة <code>MSBFIRST</code> إن كان أول بت يراد قراءته هو البت الأكثر أهمية أو القيمة <code>LSBFIRST</code> إن كان أول بت يراد قراءته هو البت الأقل أهمية.
 
==القيم المعادة==
== القيم المعادة ==
يعاد [[Arduino/byte|بايتٌ]] يمثِّل البيانات المقروءة من الرجل <code>dataPin</code>.
يعاد [[Arduino/byte|بايتٌ]] يمثِّل البيانات المقروءة من الرجل <code>dataPin</code>.
==انظر أيضًا==
* الدالة <code>[[Arduino/advanced io/notone|noTone()‎]]</code>: توقف توليد موجةٍ مربَّعةٍ على رجل معيَّنة أُنشئَت باستعمال الدالة <code>[[Arduino/advanced io/tone|tone()‎]]</code>.
* الدالة <code>[[Arduino/advanced io/pulsein|pulseIn()‎]]</code>: تحسب طول نبضةٍ (إمَّا <code>HIGH</code> أو <code>LOW</code>) على رجل محدَّدة.
* الدالة <code>[[Arduino/advanced io/pulseinlong|pulseInLong()‎]]</code> هي دالةٌ بديلةٌ محسَّنةٌ للدالة <code>[[Arduino/advanced io/pulsein|pulseIn()‎]]</code>، إذ يمكنها التعامل مع نبضات ومقاطعات طويلة متأثرة بحالات مختلفة.
* الدالة <code>[[Arduino/advanced io/shiftout|shiftOut()‎]]</code>: تزيح بايتًا من البيانات إلى رجل محدَّدة مقدار بتٍّ واحدٍ في كل مرة تتغير فيها حالة النبضة على رجل أخرى إلى <code>HIGH</code>.
* الدالة <code>[[Arduino/advanced io/tone|tone()‎]]</code>: تولِّد موجةً مربَّعةً بتردد محدَّد (وبنسبة 50% لدورة العمل [duty cycle]) على رجل معيَّنة.


== انظر أيضًا ==
==مصادر==
 
* [https://www.arduino.cc/reference/en/language/functions/advanced-io/shiftin/ صفحة الدالة shiftin()‎ في توثيق أردوينو الرسمي.]
== مصادر ==
[[تصنيف: Arduino]]
[https://www.arduino.cc/reference/en/language/functions/advanced-io/shiftin/ صفحة الدالة shiftin()‎ في توثيق أردوينو الرسمي.]
[[تصنيف: Arduino Function]]
[[تصنيف: Arduino I/O]]
[[تصنيف: Arduino Advanced I/O]]

المراجعة الحالية بتاريخ 15:00، 17 أكتوبر 2018

تزيح الدالة shiftIn()‎ بايتًا من البيانات من رجل محدَّدة إلى متغيِّر مقدار بتٍّ واحدٍ في كل مرة تتغير فيها حالة النبضة على رجل أخرى إلى HIGH. يمكن ترتيب عملية قراءة وإزاحة البتات إمَّا بدءًا من البت الأكثر أهمية (أقصى اليسار) أو من البت الأقل أهمية (أقصى اليمين).

البنية العامة

byte incoming = shiftIn(dataPin, clockPin, bitOrder)

في كل بت، تقدح الرجل clockPin عملية قراءة البت التالي من الرجل dataPin عند الجبهة الصاعدة للإشارة (أي عندما تنتقل النبضة من LOW إلى HIGH) وتخزينه في المتغير incoming. يجب بعد ذلك على الرجل clockPin أن تعود للحالة المنخفضة (LOW) لتكرار عملية قراءة البت الذي يليه وهلم جرًّا.

إن كنت تتعامل مع جهازٍ يعمل أو يولِّد نبضات عند الجبهات الصاعدة، فيجب عليك أن تتأكد أنَّ حالة الرجل clockPin هي LOW قبل الاستدعاء الأول للدالة shiftIn()‎ عبر استدعاء digitalWrite(clockPin, LOW)‎ مثلًا.

ملاحظة: هذه العملية التي تجريها الدالة هي تنفيذٌ برمجيٌّ؛ توفر أردوينو المكتبة SPI التي تستعمل التنفيذ العتادي لهذه العملية التي تتميز بسرعتها سوى أنَّها تعمل على أرجل معيَّنة فقط.

المعاملات

dataPin

عددٌ صحيح يشير إلى الرجل المراد قراءة وإزاحة البتات المدخلة منها.

clockPin

عددٌ صحيح يشير إلى الرجل التي تمثِّل نبضات الساعة التي تقدح (عند الجبهة الصاعدة) عملية قراءة بت واحد من الرجل dataPin وإزاحة قيمتهه إلى متغيِّرٍ.

bitOrder

يحدِّد هذا المعامل ترتيب عملية إزاحة البتات المقروءة من الرجل dataPin عند كل جبهة صاعدة لنبضات الرجل clockPin. يأخذ هذا المعامل القيمة MSBFIRST إن كان أول بت يراد قراءته هو البت الأكثر أهمية أو القيمة LSBFIRST إن كان أول بت يراد قراءته هو البت الأقل أهمية.

القيم المعادة

يعاد بايتٌ يمثِّل البيانات المقروءة من الرجل dataPin.

انظر أيضًا

  • الدالة noTone()‎: توقف توليد موجةٍ مربَّعةٍ على رجل معيَّنة أُنشئَت باستعمال الدالة tone()‎.
  • الدالة pulseIn()‎: تحسب طول نبضةٍ (إمَّا HIGH أو LOW) على رجل محدَّدة.
  • الدالة pulseInLong()‎ هي دالةٌ بديلةٌ محسَّنةٌ للدالة pulseIn()‎، إذ يمكنها التعامل مع نبضات ومقاطعات طويلة متأثرة بحالات مختلفة.
  • الدالة shiftOut()‎: تزيح بايتًا من البيانات إلى رجل محدَّدة مقدار بتٍّ واحدٍ في كل مرة تتغير فيها حالة النبضة على رجل أخرى إلى HIGH.
  • الدالة tone()‎: تولِّد موجةً مربَّعةً بتردد محدَّد (وبنسبة 50% لدورة العمل [duty cycle]) على رجل معيَّنة.

مصادر