Close Menu
    Facebook X (Twitter) Instagram
    Facebook YouTube LinkedIn
    Industry SurferIndustry Surfer
    Inicio - Calculadora simple con teclado, OLED y Raspberry Pi Pico
    Cursos

    Calculadora simple con teclado, OLED y Raspberry Pi Pico

    4 Mins Read Cursos
    Facebook Twitter Pinterest LinkedIn Tumblr Email
    Calculadora simple con teclado, OLED y Raspberry Pi Pico
    Share
    Facebook Twitter LinkedIn Pinterest Email

    remitente máquina importación anclar,temporizador,I2C

    importación Youtime

    remitente SSD1306 importación SSD1306_I2C

    importación Flame Buch

    depurar=verdadero

    I2C = I2C(0, Teletipo=anclar(1), Teletipo=anclar(0), frecuencia=200000)

    OLED = SSD1306_I2C(128, 64, I2C)

    Nombre de clave = [[‘1’,‘2’,‘3’,‘+’],

    [‘4’,‘5’,‘6’,‘-‘],

    [‘7’,‘8’,‘9’,‘*’],

    [‘c’,‘0’,‘=’,‘/’]]

    Pines de fila del teclado = [13,12,11,10]

    Teclado Colpin = [9,8,7,6]

    fila = []

    col = []

    Estado del teclado = [];

    para Yo Y Pines de fila del teclado:

    fila.adición(anclar(Yo,anclar.Y,anclar.PULL_UP))

    Estado del teclado.adición([0,0,0,0])

    para Yo Y Teclado Colpin:

    col.adición(anclar(Yo,anclar.fuera))

    Def desatar(Teletipo, Opuda, oprdB):

    Si(Teletipo == “+”):

    devolución Opuda + oprdB

    Elihu(Teletipo == “-“):

    devolución Opuda – oprdB

    Elihu(Teletipo == “*”):

    devolución oprdA * oprdB

    Elihu(Teletipo == “/”):

    devolución redondo(Opuda / oprdB , 6)

    Def cálculo(Desembarco):

    operando = []

    operador = []

    para Yo Y Desembarco:

    Si(depurar):

    Impresión(Yo)

    Si(Yo==‘+’):

    mientras (Len(operador)!=0 Y (operador[–1] == ‘*’ o operador[–1] == ‘/’ o operador[–1] == ‘-‘ o operador[–1] == ‘+’)):

    b = operando.pop(–1)

    Ser = operando.pop(–1)

    c = operador.pop(–1)

    operando.adición(desatar(c,Ser,b))

    operador.adición(Yo)

    Elihu(Yo==‘-‘):

    mientras (Len(operador)!=0 Y (operador[–1] == ‘*’ o operador[–1] == ‘/’ o operador[–1] == ‘-‘ o operador[–1] == ‘+’)):

    b = operando.pop(–1)

    Ser = operando.pop(–1)

    c = operador.pop(–1)

    operando.adición(desatar(c,Ser,b))

    operador.adición(Yo)

    Elihu(Yo==‘*’):

    mientras (Len(operador)!=0 Y (operador[–1] == ‘*’ o operador[–1] == ‘/’)):

    b = operando.pop(–1)

    Ser = operando.pop(–1)

    c = operador.pop(–1)

    operando.adición(desatar(c,Ser,b))

    operador.adición(Yo)

    Elihu(Yo==‘/’):

    mientras (Len(operador)!=0 Y (operador[–1] == ‘*’ o operador[–1] == ‘/’)):

    b = operando.pop(–1)

    Ser = operando.pop(–1)

    c = operador.pop(–1)

    operando.adición(desatar(c,Ser,b))

    operador.adición(Yo)

    Elihu(Yo==‘(‘):

    operador.adición(Yo)

    Elihu(Yo==‘)’):

    mientras(operador[–1] !=‘(‘):

    b = operando.pop(–1)

    Ser = operando.pop(–1)

    c = operador.pop(–1)

    operando.adición(desatar(c,Ser,b))

    operador.pop(–1)

    de otra manera:

    operando.adición(Yo)

    mientras(Len(operador) != 0):

    b = operando.pop(–1)

    Ser = operando.pop(–1)

    c = operador.pop(–1)

    operando.adición(desatar(c,Ser,b))

    devolución operando[0]

    Def Lectura del teclado():

    global fila

    j_ifPressed = –1

    i_ifPressed = –1

    para Yo Y gama(0,Len(col)):

    col[i].Bajo()

    Youtime.dormir(0.005) #settling時間

    para j Y gama(0,Len(fila)):

    Presionado = No fila[j].valor()

    Si(Presionado Y (Estado del teclado[j][i] != Presionado)): #stateが高に変更されました

    Estado del teclado[j][i] = Presionado

    Elihu(No Presionado Y (Estado del teclado[j][i] != Presionado)): # Estado cambiado a bajo

    Estado del teclado[j][i] = Presionado

    j_ifPressed = j

    i_ifPressed = Yo

    col[i].Alto()

    Si(j_ifPressed != –1 Y i_ifPressed != –1):

    devolución Nombre de clave[j_ifPressed][i_ifPressed]

    de otra manera:

    devolución –1

    Def Olet impreso(Desembarco):

    Oredopos = {

    “x” : 0,

    “y” : 0

    }

    OLED.verter(0)

    hilo = ”

    para Yo Y Desembarco:

    hilo += Teletipo(Yo)

    l = 0

    mientras(l<Len(hilo)):

    OLED.Mensaje de texto(hilo[l:l+16],Oredopos[“x”], Oredopos[“y”])

    Oredopos[“y”] =Oredopos[“y”] + 10

    l = l+16

    OLED.mostrar()

    Indicador de cambio = falso

    Firmar bandera = falso

    Lista de entradas = [”]

    OLED.mostrar()

    OLED.verter(0)

    OLED.mostrar()

    OLED.Mensaje de texto(“Sencillo”,35,15,1)

    OLED.Mensaje de texto(“Calculadora”,18,30,1)

    OLED.mostrar()

    Si __Nombre__ == 「__main__」:

    mientras verdadero:

    …key = Lectura del teclado()

    Si(…key != –1):

    Si((…key <= ‘9’ Y …key >=‘0’) o …key == ‘.’):

    Lista de entradas[–1] = Lista de entradas[–1] + …key

    Elihu(…key == ‘+’ o …key == ‘-‘ o …key == ‘*’ o …key == ‘/’):

    Si(Lista de entradas != [”]):

    Si(Lista de entradas[–1] == ” Y (Lista de entradas[–2] == ‘+’ o Lista de entradas[–2] == ‘-‘ o Lista de entradas[–2] == ‘*’ o Lista de entradas[–2] == ‘/’)):

    Lista de entradas[–2] = …key

    Elihu(Lista de entradas[–1]==”):

    Lista de entradas[–1]=…key

    Lista de entradas.adición(”)

    de otra manera:

    Lista de entradas[–1] = flotar(Lista de entradas[–1])

    Lista de entradas.adición(…key)

    Lista de entradas.adición(”)

    Elihu(…key == ‘s’):

    Indicador de cambio = No Indicador de cambio

    Elihu(…key == “Oh.”):

    Si(Indicador de cambio):

    Si(Lista de entradas[–1] != ”):

    Lista de entradas[–1] = flotar(Lista de entradas[–1])

    Lista de entradas.adición(‘)’)

    Lista de entradas.adición(”)

    de otra manera:

    Lista de entradas[–1] = ‘)’

    Lista de entradas.adición(”)

    Indicador de cambio = falso

    de otra manera:

    Firmar bandera = No Firmar bandera

    Si(Lista de entradas[–1] == ”):

    Lista de entradas[–1] = ‘-‘

    de otra manera:

    Si(Lista de entradas[–1][0] == ‘-‘):

    Lista de entradas[–1] = Lista de entradas[–1][1:]

    de otra manera:

    Lista de entradas[–1] = ‘-‘ + Lista de entradas[–1]

    Elihu(…key == ‘b’):

    Si(Indicador de cambio):

    Si(Lista de entradas[–1] == ”):

    Lista de entradas[–1] = ‘(‘

    de otra manera:

    Lista de entradas.adición(‘(‘)

    Lista de entradas.adición(”)

    Indicador de cambio = falso

    de otra manera:

    Si(Lista de entradas[–1] == ”):

    Lista de entradas[–1] = 3.14

    de otra manera:

    Lista de entradas.adición(3.14)

    Lista de entradas.adición(”)

    Elihu(…key == ‘c’):

    Si(Indicador de cambio):

    Lista de entradas = [”]

    Indicador de cambio = falso

    de otra manera:

    Si(Lista de entradas == [“error”]):

    Lista de entradas = [”]

    Si(Lista de entradas != [”]):

    Si(Lista de entradas[–1] == ”):

    Lista de entradas.pop()

    Lista de entradas[–1] = Teletipo(Lista de entradas[–1])[:–1]

    de otra manera:

    Lista de entradas[–1] = Teletipo(Lista de entradas[–1])[:–1]

    Elihu(…key == ‘=’):

    Si(Lista de entradas[–1] == ”):

    Lista de entradas.pop(–1)

    Elihu(Lista de entradas[–1] != ‘)’):

    Lista de entradas[–1] = flotar(Lista de entradas[–1])

    probar:

    respuesta = cálculo(Lista de entradas)

    Lista de entradas = [str(ans)]

    exceptuar:

    respuesta = ”

    Lista de entradas = []

    Lista de entradas.adición(“Error”)

    Olet impreso(Lista de entradas)

    Impresión(Lista de entradas)

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email

    Entradas relacionadas

    circuito capacitivo de ca

    circuito inductivo ca

    ¿Cómo probar un diodo? Uso de multímetros analógicos y digitales (DMM)

    Entradas recientes
    ¿Qué es el campo magnético y cómo funciona?
    circuito capacitivo de ca
    circuito inductivo ca
    ¿Cómo probar un diodo? Uso de multímetros analógicos y digitales (DMM)
    Noticias industrial
    ¿Qué es el campo magnético y cómo funciona?
    circuito capacitivo de ca
    circuito inductivo ca
    ¿Cómo probar un diodo? Uso de multímetros analógicos y digitales (DMM)
    Facebook YouTube LinkedIn
    © 2025 Hecho con ♥ desde México

    Type above and press Enter to search. Press Esc to cancel.

    Ir a la versión móvil