Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Raspberry pi pico 2w
90 min
Share

كيفية استخدام لوحة المفاتيح مع لوحة الراسبيرى باى بيكو

في هذا الدرس سنتعلم كيفية استخدام لوحة المفاتيح مع لوحة الراسبيرى باي بيكو2W في الجزء الأول سنقوم بعرض الزر الذي تضغط عليه في لوحة المفاتيح على الشاشة، وفي الجزء الثاني سنبني نظاماً لتحريك محرك السيرفو بزوايا معينة عند الضغط على أزرار معينة في لوحة المفاتيح.

Project Video

Overview

Getting the Items

Raspberry Pi Pico 2 wireless
Get Item
16 Key Keypad
Get Item
SG90 Servo -Positional Rotation
Get Item
Full-size Breadboard
Get Item
Jumper Wires - Male to Male (40 Pack)
Get Item
Jumper Wires – Male to Female (40 Pack)
Get Item

Steps

Wiring it Up

قم بتوصيل الأسلاك بين لوحة راسبيرى باى بيكو 2W ولوحة المفاتيح ومحرك السيرفو كما فى الصورة التالية :

التوصيلات من لوحة راسبيرى باى بيكو 2W :

• نقوم بتوصيل منفذ ال VBUS بلوحة راسبيرى باى بيكو2W   ← المنافذ الموجبة بلوحة التجارب

• منفذ ال GND بلوحة راسبيرى باى بيكو2W  ←المنافذ السالبة بلوحة التجارب

ثانيا : لوحة المفاتيح

• منفذ رقم 1 ← منفذ رقم 16 فى لوحة راسبيرى باى بيكو 2W

• منفذ رقم 2 ← منفذ رقم 17 فى لوحة راسبيرى باى بيكو 2W

• منفذ رقم 3 ← منفذ رقم 18 فى لوحة راسبيرى باى بيكو 2W

• منفذ رقم 4 ← منفذ رقم 19 فى لوحة راسبيرى باى بيكو 2W

• منفذ رقم 5 ← منفذ رقم 20 فى لوحة راسبيرى باى بيكو 2W

• منفذ رقم 6 ← منفذ رقم 21 فى لوحة راسبيرى باى بيكو 2W

• منفذ رقم 7 ← منفذ رقم 22 فى لوحة راسبيرى باى بيكو 2W

• منفذ رقم 8 ← منفذ رقم 26 فى لوحة راسبيرى باى بيكو 2W

التوصيلات من محرك السيرفو:

• المنفذ الموجب لمحرك السيرفو ← المنافذ الموجبة بلوحة التجارب

• المنفذ السالب لمحرك السيرفو ←المنافذ السالبة بلوحة التجارب

• منفذ الإشارة لمحرك السيرفو ← منفذ رقم 15 في لوحة راسبيرى باى بيكو 2W

Coding

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

'''

Voltaat Learn (http://learn.voltaat.com)

Link to the full tutorial:

Tutorial: How to use the keyboard with the Raspberry Pi Pico.

This sketch prints the number of the button that was pressed on the keyboard.

Note: You can use this sketch with any Raspberry Pi Pico.

'''

from machine import Pin

import time

# Define keypad rows and columns

rows = [Pin(26, Pin.OUT), Pin(22, Pin.OUT), Pin(21, Pin.OUT), Pin(20, Pin.OUT)]

cols = [Pin(19, Pin.IN, Pin.PULL_DOWN), Pin(18, Pin.IN, Pin.PULL_DOWN),

       Pin(17, Pin.IN, Pin.PULL_DOWN), Pin(16, Pin.IN, Pin.PULL_DOWN)]

# Key map (according to the 4x4 keypad layout)

keys = [['1', '2', '3', 'A'],

       ['4', '5', '6', 'B'],

       ['7', '8', '9', 'C'],

       ['*', '0', '#', 'D']]

def read_keypad():

   for i, row in enumerate(rows):

       row.value(1)  # Activate current row

       for j, col in enumerate(cols):

           if col.value() == 1:   # If a key is pressed

               row.value(0)

               return keys[i][j]

       row.value(0)

   return None

# Main program

print("Press any key on the keypad ...")

while True:

   key = read_keypad()

   if key:

       print("Key pressed:", key)

       time.sleep(0.2)  # Prevent fast repetition

'''

Voltaat Learn (http://learn.voltaat.com)

Link to the full tutorial:

Tutorial: How to use the keyboard with the Raspberry Pi Pico.

This code controls a servo motor by pressing keyboard buttons.

Note: You can use this sketch with any Raspberry Pi Pico.

'''

from machine import Pin

import time

from servo import Servo   # Import Servo library

# Define keypad rows and columns

rows = [Pin(26, Pin.OUT), Pin(22, Pin.OUT), Pin(21, Pin.OUT), Pin(20, Pin.OUT)]

cols = [Pin(19, Pin.IN, Pin.PULL_DOWN), Pin(18, Pin.IN, Pin.PULL_DOWN),

       Pin(17, Pin.IN, Pin.PULL_DOWN), Pin(16, Pin.IN, Pin.PULL_DOWN)]

# Key map (according to the 4x4 keypad layout)

keys = [['1', '2', '3', 'A'],

       ['4', '5', '6', 'B'],

       ['7', '8', '9', 'C'],

       ['*', '0', '#', 'D']]

# Initialize servo on GP15

my_servo = Servo(pin_id=15)

def read_keypad():

   for i, row in enumerate(rows):

       row.value(1)  # Activate current row

       for j, col in enumerate(cols):

           if col.value() == 1:   # If a key is pressed

               row.value(0)

               # wait until release (debounce)

               while col.value() == 1:

                   time.sleep(0.01)

               return keys[i][j]

       row.value(0)

   return None

# Main program

print("Press 1, 2, 3, or 4 to move servo ...")

while True:

   key = read_keypad()

   if key:

       print("Key pressed:", key)

       if key == '1':

           my_servo.write(0)     # Move to 0 degrees

       elif key == '2':

           my_servo.write(45)    # Move to 45 degrees

       elif key == '3':

           my_servo.write(90)    # Move to 90 degrees

       elif key == '4':

           my_servo.write(180)   # Move to 135 degrees

       time.sleep(0.2)  # Small delay to prevent bouncing

Testing it Out

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

Resources

No items found.