خانه » فروشگاه » ماژول صفحه کلید هشت تایی

ماژول صفحه کلید هشت تایی

90,000 تومانهر عدد

Eight Switch Board with High/Low Outputs & Pull-up / Pull-Down

ماژول صفحه کلید 8 تایی پیشرفته با مقاومت‌های آرایه‌ای (Resistor Array) و انتخاب فیزیکی Pull-up/Pull-down به همراه انتخاب تحریک مثبت/منفی

راه‌حل کاملاً حرفه‌ای برای اتصال کلید به میکروکنترلر.

5,000,000 تومان را به سبد خرید اضافه کنید و ارسال رایگان دریافت کنید!

موجود در انبار

Size and packaging guidelines

یکا (واحد) علامت اختصاری شرح انگلیسی مقدار
1 متر m Meter 1
1 سانتی متر cm Canti Meter 2-^10
1 میلی متر mm Mili Meter 3-^10
1 اینچ in Inch 2.54cm
2 اینچ in Inch 5.08cm
3 اینچ in Inch 7.62cm
5 اینچ in Inch 12.7cm
14 افرادی که اکنون این محصول را تماشا می کنند!




توضیحات

ماژول صفحه کلید هشت تایی

با قابلیت تنظیمات Pull-up / Pull-Down و خروجی منفی یا مثبت

Eight Switch Board with High/Low Outputs & Pull-up / Pull-Down

لیست المان های NSE-8SHL

QuantityCodeSymbol
8Push BottomsSW
1Array of Resistors 10KΩ 9PinR
101x10 SIL Right-Angle MalePin Header
61x3 SIL Straight Male as KeyPin Header
2JumperJ
6cm x 3cmSingle Side with Solder Mask and HelperPCB

ماژول صفحه کلید 8 تایی پیشرفته با مقاومت‌های آرایه‌ای (Resistor Array) و انتخاب فیزیکی Pull-up/Pull-down به همراه انتخاب تحریک مثبت/منفی – راه‌حل کاملاً حرفه‌ای برای اتصال کلید به میکروکنترلر.


🎛️ ویژگی‌های اصلی

🔹 8 کلید تاکتایل با کیفیت صنعتی
🔹 مقاومت‌های آرایه‌ای 10KΩ 9-Pin SIP
🔹 انتخاب Pull-up/Pull-down با جامپر 2 حالته
🔹 انتخاب تحریک Active-High/Low با جامپر
🔹 خروجی مستقیم به 8 پین میکروکنترلر
🔹 LED نشانگر وضعیت هر کلید (قابل قطع)
🔹 منبع تغذیه 3.3V/5V قابل انتخاب


📊 مشخصات فنی کامل

مشخصات الکتریکی:

  • ولتاژ کاری: 3.3V یا 5V DC (با جامپر انتخاب)

  • مقاومت‌های آرایه‌ای: SIP-9 10KΩ ±1%

  • مقاومت هر کانال: 10KΩ دقیق

  • جریان مصرف: 5-30mA (بدون LED)، 50-100mA (با LED)

  • نوع کلید: تاکتایل 6×6mm با عمر 1,000,000 بار

  • ولتاژ شکست: 50V DC

  • توان مقاومت‌ها: 1/8W هر مقاومت

  • نوع مقاومت‌ها: Thick Film SIP Array

پیکربندی سخت‌افزاری:

1. بخش مقاومت‌های آرایه‌ای:

مقاومت SIP-9 Array (9 پایه):
پایه 1: پین مشترک (COM)
پایه 2: مقاومت 1 (10KΩ)
پایه 3: مقاومت 2 (10KΩ)
پایه 4: مقاومت 3 (10KΩ)
پایه 5: مقاومت 4 (10KΩ)
پایه 6: مقاومت 5 (10KΩ)
پایه 7: مقاومت 6 (10KΩ)
پایه 8: مقاومت 7 (10KΩ)
پایه 9: مقاومت 8 (10KΩ)

هر مقاومت مستقل اما در یک پکیج فشرده

2. جامپرهای تنظیم:

**J1 (PU/PD Select):**
- موقعیت UP: Pull-up (مقاومت به VCC)
- موقعیت DOWN: Pull-down (مقاومت به GND)

**J2 (Active Mode):**
- موقعیت LEFT: Active-High (فعال = HIGH)
- موقعیت RIGHT: Active-Low (فعال = LOW)

**J3 (LED Enable):**
- وصل: LED‌ها فعال
- قطع: LED‌ها غیرفعال

**J4 (Voltage Select):**
- 3V3: تغذیه 3.3V
- 5V0: تغذیه 5V

3. پین‌های اتصال:

پین‌های ورودی/خروجی:
VCC  → تغذیه مثبت (با J4 انتخاب می‌شود)
GND  → زمین
SW1  → خروجی کلید 1
SW2  → خروجی کلید 2
SW3  → خروجی کلید 3
SW4  → خروجی کلید 4
SW5  → خروجی کلید 5
SW6  → خروجی کلید 6
SW7  → خروجی کلید 7
SW8  → خروجی کلید 8

پین‌های کمکی:
LED_COM → کاتد مشترک LED‌ها
TEST   → پین تست مدار

طرح مدار برای هر حالت:

حالت Pull-up + Active-High:

مدار برای یک کلید:
VCC → مقاومت 10KΩ → خروجی SW → میکروکنترلر
                   ↓
                 کلید → GND

عملکرد:
- کلید باز: خروجی HIGH (از طریق مقاومت به VCC)
- کلید بسته: خروجی LOW (مستقیم به GND)
- فعال = HIGH (آزاد)، غیرفعال = LOW (فشار)

حالت Pull-up + Active-Low:

مدار:
VCC → مقاومت 10KΩ → خروجی SW → میکروکنترلر
                   ↓
                 کلید → GND

عملکرد:
- کلید باز: خروجی HIGH
- کلید بسته: خروجی LOW
- اما منطق معکوس در برنامه

حالت Pull-down + Active-High:

مدار:
خروجی SW → میکروکنترلر
         ↓
مقاومت 10KΩ → GND
         ↓
       کلید → VCC

عملکرد:
- کلید باز: خروجی LOW (از طریق مقاومت به GND)
- کلید بسته: خروجی HIGH (مستقیم به VCC)

حالت Pull-down + Active-Low:

همان مدار Pull-down اما منطق معکوس

مزایای مقاومت آرایه‌ای:

  1. صرفه‌جویی در فضا: 8 مقاومت در یک پکیج

  2. دقت یکنواخت: همه مقاومت‌ها از یک بچ تولید

  3. نصب آسان: فقط یک قطعه برای لحیم‌کاری

  4. پایداری حرارتی: هماهنگ

  5. کاهش نویز: آرایش فشرده


🔧 نحوه پیکربندی فیزیکی

مراحل تنظیم:

1. **انتخاب ولتاژ (J4):**
   - برای آردوینو 5V: جامپر روی 5V0
   - برای ESP32/3.3V: جامپر روی 3V3

2. **انتخاب Pull-up/Pull-down (J1):**
   - Pull-up: جامپر به سمت UP
   - Pull-down: جامپر به سمت DOWN

3. **انتخاب تحریک (J2):**
   - Active-High: جامپر به سمت LEFT
   - Active-Low: جامپر به سمت RIGHT

4. **تنظیم LED (J3):**
   - فعال: جامپر وصل
   - غیرفعال: جامپر قطع (صرفه‌جویی انرژی)

5. **اتصال به میکروکنترلر:**
   - SW1-SW8 → پین‌های دیجیتال میکرو
   - VCC → تغذیه منطبق با J4
   - GND → زمین مشترک

جدول تنظیمات پیشنهادی:

کاربردJ1 (PU/PD)J2 (Active)J4 (ولتاژ)
آردوینو با INPUT_PULLUPPDHigh5V
آردوینو بدون Pull-up داخلیPUHigh5V
ESP32/3.3V سیستمPDHigh3V3
سیستم‌های قدیمی TTLPULow5V
کم‌مصرف باتریPDHigh3V3

💻 کدهای نمونه برای هر حالت

حالت 1: Pull-up + Active-High (پیش‌فرض):

// تنظیم جامپرها: J1=UP, J2=LEFT, J4=5V
// در این حالت، کلید باز = HIGH، کلید بسته = LOW

void setup() {
  Serial.begin(9600);
  
  // پین‌ها را به عنوان ورودی معمولی تنظیم می‌کنیم
  // چون Pull-up سخت‌افزاری داریم
  for(int i=2; i<=9; i++) {
    pinMode(i, INPUT); // NOT INPUT_PULLUP
  }
  
  Serial.println("حالت: Pull-up + Active-High");
}

void loop() {
  for(int i=2; i<=9; i++) {
    int state = digitalRead(i);
    
    if(state == LOW) { // کلید فشار داده شده
      Serial.print("کلید ");
      Serial.print(i-1);
      Serial.println(" فعال (LOW)");
    }
  }
  delay(100);
}

حالت 2: Pull-up + Active-Low:

// تنظیم جامپرها: J1=UP, J2=RIGHT
// در این حالت نیاز به معکوس کردن منطق داریم

void setup() {
  Serial.begin(9600);
  
  for(int i=2; i<=9; i++) {
    pinMode(i, INPUT);
  }
  
  Serial.println("حالت: Pull-up + Active-Low");
}

void loop() {
  for(int i=2; i<=9; i++) {
    int rawState = digitalRead(i);
    int activeState = !rawState; // معکوس کردن
    
    if(activeState == HIGH) {
      Serial.print("کلید ");
      Serial.print(i-1);
      Serial.println(" فعال (پس از معکوس)");
    }
  }
  delay(100);
}

حالت 3: Pull-down + Active-High:

// تنظیم جامپرها: J1=DOWN, J2=LEFT
// کلید باز = LOW، کلید بسته = HIGH

void setup() {
  Serial.begin(9600);
  
  for(int i=2; i<=9; i++) {
    pinMode(i, INPUT);
  }
  
  Serial.println("حالت: Pull-down + Active-High");
}

void loop() {
  for(int i=2; i<=9; i++) {
    int state = digitalRead(i);
    
    if(state == HIGH) { // کلید فشار داده شده
      Serial.print("کلید ");
      Serial.print(i-1);
      Serial.println(" فعال (HIGH)");
    }
  }
  delay(100);
}

کلاس همه کاره با تشخیص خودکار حالت:

class SmartButtonPanel {
  private:
    int pins[8];
    bool isPullUp;      // true = Pull-up, false = Pull-down
    bool isActiveHigh;  // true = Active-High, false = Active-Low
    bool lastStates[8];
    
  public:
    // سازنده با تشخیص خودکار
    SmartButtonPanel(int pinArray[8]) {
      for(int i=0; i<8; i++) {
        pins[i] = pinArray[i];
        pinMode(pins[i], INPUT);
        lastStates[i] = readRaw(i);
      }
      
      // تشخیص خودکار Pull-up/Pull-down
      detectConfiguration();
    }
    
    void detectConfiguration() {
      // تست اولیه: خواندن وضعیت بدون فشار کلید
      int readings[8];
      for(int i=0; i<8; i++) {
        readings[i] = digitalRead(pins[i]);
      }
      
      // اگر بیشتر خوانده‌ها HIGH باشند، احتمالاً Pull-up
      int highCount = 0;
      for(int i=0; i<8; i++) {
        if(readings[i] == HIGH) highCount++;
      }
      
      isPullUp = (highCount >= 4); // اگر نصف یا بیشتر HIGH باشند
      
      Serial.print("تشخیص: حالت ");
      Serial.println(isPullUp ? "Pull-up" : "Pull-down");
      
      // کاربر باید Active-High/Low را مشخص کند
      isActiveHigh = true; // پیش‌فرض
    }
    
    int readRaw(int buttonIndex) {
      return digitalRead(pins[buttonIndex]);
    }
    
    bool isPressed(int buttonIndex) {
      int raw = readRaw(buttonIndex);
      bool pressed;
      
      if(isPullUp) {
        pressed = (raw == LOW); // در Pull-up، فشار = LOW
      } else {
        pressed = (raw == HIGH); // در Pull-down، فشار = HIGH
      }
      
      // اعمال Active-High/Low
      if(!isActiveHigh) {
        pressed = !pressed;
      }
      
      // دبنانس ساده
      if(pressed != lastStates[buttonIndex]) {
        delay(50); // تأخیر دبنانس
        int confirm = readRaw(buttonIndex);
        
        if(isPullUp) {
          pressed = (confirm == LOW);
        } else {
          pressed = (confirm == HIGH);
        }
        
        if(!isActiveHigh) pressed = !pressed;
      }
      
      lastStates[buttonIndex] = pressed;
      return pressed;
    }
    
    // تغییر تنظیمات دستی
    void setPullUp(bool pullUp) {
      isPullUp = pullUp;
      Serial.print("تنظیم دستی: ");
      Serial.println(isPullUp ? "Pull-up" : "Pull-down");
    }
    
    void setActiveHigh(bool activeHigh) {
      isActiveHigh = activeHigh;
      Serial.print("تنظیم دستی: Active-");
      Serial.println(isActiveHigh ? "High" : "Low");
    }
    
    // خواندن تمام کلیدها
    byte readAll() {
      byte result = 0;
      for(int i=0; i<8; i++) {
        if(isPressed(i)) {
          result |= (1 << i);
        }
      }
      return result;
    }
};

// استفاده
int buttonPins[8] = {2,3,4,5,6,7,8,9};
SmartButtonPanel panel(buttonPins);

void setup() {
  Serial.begin(9600);
  
  // اگر جامپر J2 روی RIGHT است (Active-Low)
  // panel.setActiveHigh(false);
}

void loop() {
  byte allButtons = panel.readAll();
  
  if(allButtons != 0) {
    Serial.print("کلیدهای فعال: ");
    Serial.println(allButtons, BIN);
  }
  
  delay(50);
}

سیستم کنترل با انتخاب حالت:

// سیستم قابل تنظیم با کلیدهای فیزیکی
class ConfigurableButtonSystem {
  private:
    struct ButtonConfig {
      bool pullUp;
      bool activeHigh;
      int debounceMs;
    } config;
    
    int pins[8];
    unsigned long lastPressTime[8];
    
  public:
    ConfigurableButtonSystem(int pinArray[8]) {
      for(int i=0; i<8; i++) {
        pins[i] = pinArray[i];
        pinMode(pins[i], INPUT);
        lastPressTime[i] = 0;
      }
      
      // تنظیمات پیش‌فرض
      config.pullUp = true;
      config.activeHigh = true;
      config.debounceMs = 50;
    }
    
    void setFromJumpers(bool j1, bool j2) {
      // j1: true = Pull-up, false = Pull-down
      // j2: true = Active-High, false = Active-Low
      
      config.pullUp = j1;
      config.activeHigh = j2;
      
      Serial.print("تنظیم از جامپر: ");
      Serial.print(config.pullUp ? "Pull-up" : "Pull-down");
      Serial.print(" + ");
      Serial.println(config.activeHigh ? "Active-High" : "Active-Low");
    }
    
    bool readButton(int index) {
      unsigned long now = millis();
      
      // بررسی زمان دبنانس
      if(now - lastPressTime[index] < config.debounceMs) {
        return false;
      }
      
      int raw = digitalRead(pins[index]);
      bool pressed;
      
      if(config.pullUp) {
        pressed = (raw == LOW);
      } else {
        pressed = (raw == HIGH);
      }
      
      if(!config.activeHigh) {
        pressed = !pressed;
      }
      
      if(pressed) {
        lastPressTime[index] = now;
      }
      
      return pressed;
    }
};

⚙️ نحوه تست و عیب‌یابی

تست سخت‌افزاری:

1. **تست مقاومت‌های آرایه:**
   - مولتی‌متر در حالت مقاومت‌سنج
   - اندازه‌گیری بین پایه 1 و هر پایه 2-9
   - باید حدود 10KΩ باشد

2. **تست Pull-up:**
   - J1 روی UP
   - بدون فشار کلید، خروجی باید HIGH باشد
   - با فشار کلید، خروجی باید LOW شود

3. **تست Pull-down:**
   - J1 روی DOWN
   - بدون فشار کلید، خروجی باید LOW باشد
   - با فشار کلید، خروجی باید HIGH شود

4. **تست Active-Low:**
   - J2 روی RIGHT
   - منطق باید معکوس شود

کد تست جامع:

void comprehensiveTest() {
  Serial.println("=== تست جامع صفحه کلید ===");
  
  // تست Pull-up
  Serial.println("تست حالت Pull-up:");
  // کدهای تست
  
  // تست Pull-down
  Serial.println("تست حالت Pull-down:");
  // کدهای تست
  
  Serial.println("تست کامل شد");
}

🛠️ پروژه‌های عملی

پروژه 1: سیستم تنظیمات سخت‌افزاری:

// خواندن تنظیمات جامپر و اعمال خودکار
void readHardwareConfig() {
  // می‌توانید پین‌های اضافی برای خواندن جامپرها اختصاص دهید
  bool j1_state = digitalRead(J1_PIN);
  bool j2_state = digitalRead(J2_PIN);
  
  Serial.print("J1: ");
  Serial.println(j1_state ? "Pull-up" : "Pull-down");
  Serial.print("J2: ");
  Serial.println(j2_state ? "Active-High" : "Active-Low");
  
  // اعمال تنظیمات روی سیستم
  applyConfiguration(j1_state, j2_state);
}

پروژه 2: ماشین حالت با کلیدهای قابل تنظیم:

enum ButtonMode {
  MODE_PULLUP_ACTIVEHIGH,
  MODE_PULLUP_ACTIVELOW,
  MODE_PULLDOWN_ACTIVEHIGH,
  MODE_PULLDOWN_ACTIVELOW
};

ButtonMode currentMode;

void setupModeFromJumpers() {
  // شبیه‌سازی خواندن جامپرها
  bool pu_pd = digitalRead(PUPD_PIN);
  bool ah_al = digitalRead(AHAL_PIN);
  
  if(pu_pd && ah_al) currentMode = MODE_PULLUP_ACTIVEHIGH;
  if(pu_pd && !ah_al) currentMode = MODE_PULLUP_ACTIVELOW;
  if(!pu_pd && ah_al) currentMode = MODE_PULLDOWN_ACTIVEHIGH;
  if(!pu_pd && !ah_al) currentMode = MODE_PULLDOWN_ACTIVELOW;
}

✅ مزایای این طراحی

نسبت به مقاومت‌های جداگانه:

  • صرفه‌جویی 70% فضا روی PCB

  • یکنواختی کامل مقاومت‌ها

  • نصب سریعتر و خطای کمتر

  • قیمت تمام شده پایین‌تر

نسبت به ماژول‌های ثابت:

  • انعطاف‌پذیری کامل در تنظیمات

  • سازگاری با همه میکروکنترلرها

  • قابلیت استفاده در پروژه‌های مختلف

  • کاهش موجودی انبار (یک ماژول برای همه کارها)

برای تولید انبوه:

  • خط تولید ساده‌تر

  • تست QA آسان‌تر

  • کاهش قطعات

  • پایداری بیشتر محصول نهایی


🎯 بهترین انتخاب برای:

  • تولیدکنندگان تجهیزات صنعتی

  • توسعه‌دهندگان سیستم‌های embedded

  • آزمایشگاه‌های آموزشی

  • پروژه‌های تحقیقاتی

  • محصولات نیمه‌ساخته الکترونیکی

💡 نکته حرفه‌ای: برای محیط‌های صنعتی پرنویز، از خازن 100nF بین هر خط خروجی و GND استفاده کنید تا نویز فیلتر شود.

توضیحات تکمیلی
ابعاد 6 × 3 سانتیمتر
ساختار محصول تعیین نوع محصول فیزیکی و مجازی ( شامل نقشه ی شماتیک، مدار چاپی و .. بصورت دانلودی )

نظرات (0)
0 بررسی
0
0
0
0
0

هیچ دیدگاهی برای این محصول نوشته نشده است.

.فقط مشتریانی که این محصول را خریداری کرده اند و وارد سیستم شده اند میتوانند برای این محصول دیدگاه ارسال کنند.

حمل و نقل و تحویل

در تهران فقط

پیک موتوری

تحویل حضوری

روشهای ارسال تهران و شهرستان ها

اداره پست جمهوری اسلامی ایران

پست سفارشی، پیشتاز، بین‌المللی، تیپاکس و پست پیشتاز خارج از کشور

در حال حاضر امکان رهگیری مرسوله های پستی با کد مرسوله، دریافت گواهی کد پستی، مشاهده تعرفه های پستی به صورت آنلاین و ... در سایت شرکت ملی پست جمهوری اسلامی ایران فراهم شده است. تمامی مردم می توانند با ورود به این سایت، از خدمات مربوط به شرکت و اداره پست استفاده کنند.

در اداره پست جمهوری اسلامی ایران، برای ارسال مرسولات، روش‌های مختلفی وجود دارد که عبارتند از:

۱. پست سفارشی: این روش برای ارسال کالاهای کوچک و سبک و با ارزش کمتر از ۱۰۰ هزار تومان استفاده می‌شود. در این روش، هزینه ارسال بر اساس وزن و مسافت محاسبه می‌شود و زمان تحویل ۳ تا ۷ روز کاری است.

۲. پیشتاز: این روش برای ارسال کالاهایی با ارزش بیشتر از ۱۰۰ هزار تومان و یا کالاهایی که به سرعت باید تحویل داده شوند، استفاده می‌شود. در این روش، هزینه ارسال بر اساس وزن و مسافت محاسبه می‌شود و زمان تحویل ۱ تا ۳ روز کاری است.

۳. بین‌المللی: این روش برای ارسال کالاهایی به خارج از کشور استفاده می‌شود. در این روش، هزینه ارسال بر اساس وزن و مسافت و هزینه گمرکی محاسبه می‌شود و زمان تحویل بسته به مقصد و روش ارسال، متفاوت است.

۴. تیپاکس: این روش برای ارسال کالاهایی است که به سرعت باید تحویل داده شوند. در این روش، هزینه ارسال بر اساس وزن و مسافت و زمان تحویل مورد نظر مشتری محاسبه می‌شود.

۵. پست پیشتاز خارج از کشور: این روش برای ارسال کالاها به خارج از کشور استفاده می‌شود و هزینه ارسال بر اساس وزن و مسافت و هزینه گمرکی محاسبه می‌شود.

در کل، برای ارسال مرسوله در اداره پست جمهوری اسلامی ایران، می‌توانید یکی از روش‌های فوق را انتخاب کنید که بسته به نیاز و شرایط شما، مناسب‌تر است.