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

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

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

Project Video

Overview

Getting the Items

Raspberry Pi Pico 2 wireless
Get Item
16 Key Keypad
Get Item
2×16 LCD with I2C Module
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 بلوحة راسبيرى باى بيكو W2 ←  المنافذ السالبة بلوحة التجارب

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

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

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

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

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

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

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

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

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

التوصيلات من الشاشة الكريستالية:

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

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

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

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

Coding

وظيفة النص البرمجي التالي هي القيام بأي عملية حسابية تقوم بإدخالها مثل الجمع والطرح والضرب والقسمة.

'''

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

Link to the full tutorial:

Tutorial: How to Build a Calculator Using a Raspberry Pi Pico Board

This code is for building a Calculator Using a Raspberry Pi Pico Board

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

'''

import machine

from machine import Pin, I2C

import time

from lcd_api import LcdApi

from pico_i2c_lcd import I2cLcd

# -------------------- LCD Setup --------------------

I2C_ADDR = 0x27

I2C_NUM_ROWS = 2

I2C_NUM_COLS = 16

i2c = I2C(0, sda=machine.Pin(0), scl=machine.Pin(1), freq=400000)

lcd = I2cLcd(i2c, I2C_ADDR, I2C_NUM_ROWS, I2C_NUM_COLS)

lcd.clear()

lcd.putstr("  Calculator Ready")

# -------------------- Keypad Setup --------------------

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)]

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

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

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

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

def read_keypad():

   """Reads pressed key from the keypad"""

   for i, row in enumerate(rows):

       row.value(1)

       for j, col in enumerate(cols):

           if col.value() == 1:

               row.value(0)

               return keys[i][j]

       row.value(0)

   return None

# -------------------- Calculator Logic --------------------

expression = ""

time.sleep(1)

lcd.clear()

lcd.putstr("Enter:")  # Display on first line

while True:

   key = read_keypad()

   if key:

       if key == '*':  # Clear

           expression = ""

           lcd.clear()

           lcd.putstr("Enter:")

           lcd.move_to(0, 1)

           lcd.putstr("Cleared")

           time.sleep(0.6)

           lcd.move_to(0, 1)

           lcd.putstr(" " * 16)  # Clear second line

           lcd.move_to(0, 1)

           

       elif key == '#':  # Calculate

           lcd.move_to(0, 1)

           lcd.putstr(" " * 16)  # Clear second line

           lcd.move_to(0, 1)

           try:

               result = eval(expression)

               lcd.putstr("= " + str(result))

               expression = str(result)

               expression = ""

           except:

               lcd.putstr("Error!")

               expression = ""

           time.sleep(1.8)

           lcd.move_to(0, 1)

           lcd.putstr(" " * 16)

           lcd.move_to(0, 1)

       elif key in ['A', 'B', 'C', 'D']:  # Operations

           if key == 'A':

               expression += '+'

           elif key == 'B':

               expression += '-'

           elif key == 'C':

               expression += '*'

           elif key == 'D':

               expression += '/'

           lcd.move_to(0, 1)

           lcd.putstr(" " * 16)

           lcd.move_to(0, 1)

           lcd.putstr(expression)

       else:  # Numbers

           expression += key

           lcd.move_to(0, 1)

           lcd.putstr(" " * 16)  # Clear second line

           lcd.move_to(0, 1)

           lcd.putstr(expression)

       time.sleep(0.25)

Testing it Out

بعد رفع النص البرمجي، قم بإدخال أي عملية حسابية بها جمع أو طرح أو ضرب أو قسمة باستخدام لوحة المفاتيح وستجد أنه يتم طباعة الناتج بعد الضغط على علامة الـ # وإذا أدخلت معادلة خاطئة قم بالضغط على زر النجمة لمسح ما تم كتابته.

Resources

No items found.