2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
إنشاء عداد يتزايد عند الضغط على أحد الأزرار باستخدام MAX7221.
الخطوة 1: الأجزاء
MAX7221 أو MAX7219
يحول
4 عرض 7-Segment (الكاثود المشترك)
2 مقاومات: 10 كيلو و 9.53 كيلو (استخدمت 9.1 كيلو ومازال يعمل)
اردوينو
الخطوة الثانية: بناء الدائرة
لقد قمت فقط بتدوين المسامير التي استخدمتها ، يمكنك العثور على تخطيط الدبوس الكامل في ورقة البيانات أو قمت بإرفاقه. تأكد من البحث عن شاشة العرض المكونة من 7 أجزاء لأنها من المحتمل أن تختلف عن العرض الخاص بي ولكن الإجراء هو نفسه.
1. قم بتوصيل الأرقام من 0 إلى 3 الموجودة في MAX7221 بالأرقام من 1 إلى 4 على الشاشة. يتصل الرقم MAX 0 برقم الشاشات 1 وما إلى ذلك. شاشات العرض غير تقليدية وتبدأ من 1 بدلاً من 0.
2. قم بتوصيل المقاطع A - G على MAX7221 بالقطاعات A - G على الشاشة.
3. امدادات الطاقة والأرض إلى ماكس. يذهب VCC إلى الدبوس 19. والمقاوم 10k متصل أيضًا بالدبوس 19 و 18. الأرض تذهب إلى السنون 4 و 9.
4. يتصل MAX7221 بـ Arduino عبر SPI (الواجهة الطرفية التسلسلية). في هذه الحالة ، هناك حاجة إلى 3 أسلاك فقط لأنني لا أستخدم MISO (Master In Slave Out). في MAX7221 ، قم بتوصيل الطرف 1 (Din) بـ Arduino ، وفي حالتي ، استخدمت الدبوس 12. هذا هو MOSI (Master Out Slave In) أو البيانات. Pin 12 على MAX هو CS (Chip Select Input) وهو كيفية تحميل البيانات في Shift Register ، لقد قمت بتوصيل هذا بالدبوس 9 على Arduino. آخر اتصال هو CLK وهو رقم 13 على MAX ، لقد قمت بتوصيل هذا برقم 10 على Arduino.
تأكد من توفير الطاقة والأرض من خلال Arduino باستخدام 5 فولت. واجهت مشكلة حيث لم يكن Arduino الخاص بي يمنح لوحي الطاقة الكافية.
هذا خاص بورقة البيانات MAX7221. أيضا من أين أتت الصور.
www.mouser.com/datasheet/2/256/max7219-max…
الخطوة 3: التبديل
لقد قمت بتوصيل المفتاح من التخطيط أعلاه. وجدت على
لقد استخدمت دبوس 8 على Arduino للتحكم في المفتاح ، ومقاوم 10 كيلو.
الخطوة 4: الكود
لقد استخدمت مكتبة LedControl.h الموجودة على GitHub ، ورمزها الأساسي لتشغيل MAX7221. ثم قمت بعد ذلك بتعديل الكود ليعد من 0 - 9999 عند الضغط على الزر.
# تضمين "LedControl.h"
زر int = 8 ؛
LedControl lc = LedControl (12 ، 10 ، 9 ، 1) ؛
الإعداد باطل() {
pinMode (زر ، الإدخال) ؛
lc.shutdown (0 ، خطأ) ؛ // MAX7221 في وضع توفير الطاقة ، لذلك يتعين علينا إيقاظه
كثافة lc.set (0 ، 15) ؛ // ضبط السطوع ، بحد أقصى 15
lc.clearDisplay (0) ، // عرض المقاصة
}
حلقة فارغة(){
حالة int = digitalRead (زر) ؛
كثافة العمليات أنا = 0 ؛
int j = 0 ؛
كثافة العمليات ك = 0 ؛
كثافة العمليات l = 0 ؛
بينما (1) {
الدولة = digitalRead (زر) ؛
بينما (الدولة == 1) {
الدولة = digitalRead (زر) ؛
lc.setDigit (0، 3، i، false) ؛
أنا ++ ؛
تأخير (100) ؛ // يمكنك العبث بهذا
إذا (أنا == 10) {
أنا = 0 ؛
ي ++ ؛
إذا (ي == 10) {
ي = 0 ؛
ك ++ ؛
إذا (ك == 10) {
ك = 0 ؛
ل ++ ؛
إذا (ل == 10) {
بينما (1) {
lc.setRow (0، 0، 0x3E) ؛ // عندما يصل العرض إلى 9999 ، سيعرض U - 1
lc.setRow (0، 1، 0x1) ؛ // في القيمة العشرية السداسية
lc.setRow (0، 2، 0x1) ؛
lc.setDigit (0، 3، 1، false) ؛
}
}
lc.setDigit (0، 0، l، false) ؛
}
lc.setDigit (0، 1، k، false) ؛
}
lc.setDigit (0، 2، j، false) ؛
}
}
}
}