Zum Inhalt springen

Raspberry Pi-Rechnerprojekt

27 Nov 2023
Raspberry Pi Calculator Project

Elektronikrechner

Sie da!

In der aufregenden Welt der Technologie verschieben Innovationen ständig die Grenzen dessen, was wir für möglich gehalten haben. Und jetzt haben wir etwas wirklich Erstaunliches, das wir mit Ihnen teilen können: das Raspberry Pi-Rechner! Dieses bahnbrechende Projekt wird die Art und Weise, wie wir mathematische Probleme lösen, revolutionieren. Stellen Sie sich Folgendes vor: Sie sitzen an Ihrem Computer und stehen vor einer kniffligen Mathematikaufgabe. Aber anstatt sich den Kopf zu kratzen und sich überfordert zu fühlen, müssen Sie den Picobricks-Rechner nur an Ihren Computer anschließen. Und wie von Zauberhand erscheint die Meldung „Picobricks-Rechner bereit zum Lösen“. So einfach ist das! Kein Ringen oder Stress mehr wegen Matheaufgaben. Mit dem Picobricks-Rechner können Sie sich auf eine Reise der mühelosen Problemlösung begeben. Machen Sie sich also bereit, sich von diesen frustrierenden Momenten zu verabschieden und zu beginnen Codierung eines Taschenrechners!

Details und Algorithmen

Der Vorgang ist unglaublich einfach! Mit dem Elektronik Taschenrechnerhaben Sie alle wichtigen Vorgänge direkt zur Hand. Es ist kein gewöhnlicher Taschenrechner; Es ist ein Game-Changer! Keine mühsamen Tastatureingaben mehr. Stattdessen navigieren Sie mit der Präzision und Leichtigkeit eines erfahrenen Forschers durch Ihre mathematische Reise.

Zahlen addieren? Drücken Sie einfach leicht auf den Aufwärtspfeil. Müssen Sie subtrahieren? Der Abwärtspfeil dient als Hilfe. Für die Multiplikation nutzen Sie den rechten Pfeil und für die Division steht Ihnen der linke Pfeil zur Seite.

Sobald Sie Ihre Gleichung eingegeben haben, drücken Sie einmal auf das Quadrat Taste verrät Ihre Lösung. Es ist schnell, genau und vor allem benutzerfreundlich.

Dieses Projekt ist ein großer Fortschritt bei der Vereinfachung der Lösung mathematischer Probleme für alle. Ganz gleich, ob Sie ein Student sind, der sich mit schwierigen Kursarbeiten beschäftigt, ein Profi, der sich mit komplexen Berechnungen beschäftigt, oder einfach jemand, der die Schönheit der Mathematik liebt, der Picobricks-Rechner ist hier, um Ihnen das Leben zu erleichtern.

Kommen Sie und tauchen Sie mit uns in die faszinierende Welt dieses erstaunlichen Taschenrechnerprojekts ein! Wir werfen einen genaueren Blick auf die Technologie, die ihr zugrunde liegt, ihre zahlreichen Anwendungen in verschiedenen Bereichen und den unglaublichen Einfluss, den sie auf die Art und Weise haben wird, wie wir mathematische Probleme angehen. Machen Sie sich bereit für eine neue Ära der Mathematik, in der uns eine einfache Fernbedienung und ein paar sorgfältig ausgewählte Pfeile mühelos zu Lösungen führen. Willkommen in der Zukunft der Mathematik, ein Picobricks nach dem anderen!

Komponenten

1 x PicoBricks

Schaltplan 

Calculator project wiring

MicroPython-Rechnercode

Vom Maschinenimport Pin, Timer, I2C
Zeit importieren
Von Picobricks importieren Sie SSD1306_I2C
Framebuf importieren
 
debug=True
 
i2c = I2C(0, scl=Pin(5), sda=Pin(4), freq=200000)
oled = SSD1306_I2C(128, 64, i2c)
 
keyName = [['1','2','3','+'],
           ['4','5','6','-'],
           ['7','8','9','*'],
           ['c','0','=','/']]
keypadRowPins = [16,15,14,13]
keypadColPins = [9,8,3,2]
 
Zeile = []
col = []
keypadState = [];
für i in keypadRowPins:
    row.append(Pin(i,Pin.IN,Pin.PULL_UP))
    keypadState.append([0,0,0,0])
für i in keypadColPins:
    col.append(Pin(i,Pin.OUT))
 
defsolve(oprt, oprdA, oprdB):
    if(oprt == "+"):
        Rückkehr oprdA + oprdB
    elif(oprt == "-"):
        Rückkehr oprdA - oprdB
    elif(oprt == "*"):
        return oprdA * oprdB
    elif(oprt == "/"):
        Rückkehrrunde (oprdA / oprdB, 6)
 
def calc(lst):
    Operand = []
    Operator = []
   
    für i in lst:
        if(debug):
            drucken(i)
        if(i=='+'):
            while (len(operator)!=0 und (operator[-1] == '*' oder Operator[-1] == '/' oder Operator[-1] == '-' oder Operator[-1] = = '+')):
                b = operand.pop(-1)
                a = operand.pop(-1)
                c = Operator.pop(-1)
                operand.append(solve(c,a,b))
            Operator.append(i)
        elif(i=='-'):
            while (len(operator)!=0 und (operator[-1] == '*' oder Operator[-1] == '/' oder Operator[-1] == '-' oder Operator[-1] = = '+')):
                b = operand.pop(-1)
                a = operand.pop(-1)
                c = Operator.pop(-1)
                operand.append(solve(c,a,b))
            Operator.append(i)
        elif(i=='*'):
            while (len(operator)!=0 und (operator[-1] == '*' oder Operator[-1] == '/')):
                b = operand.pop(-1)
                a = operand.pop(-1)
                c = Operator.pop(-1)
                operand.append(solve(c,a,b))
            Operator.append(i)
        elif(i=='/'):
            while (len(operator)!=0 und (operator[-1] == '*' oder Operator[-1] == '/')):
                b = operand.pop(-1)
                a = operand.pop(-1)
                c = Operator.pop(-1)
                operand.append(solve(c,a,b))
            Operator.append(i)
 
        elif(i=='('):
            Operator.append(i)
 
        elif(i==')'):
            while(operator[-1] !='('):
                b = operand.pop(-1)
                a = operand.pop(-1)
                c = Operator.pop(-1)
                operand.append(solve(c,a,b))
            Operator.pop(-1)
        anders:
            operand.append(i)
           
    while(len(operator) != 0):
        b = operand.pop(-1)
        a = operand.pop(-1)
        c = Operator.pop(-1)
        operand.append(solve(c,a,b))
 
    Rückgabeoperand[0]
 
def keypadRead():
    globale Zeile
    j_ifPressed = -1
    i_ifPressed = -1
    für i in range(0,len(col)):
        col[i].low()
        utime.sleep(0.005) #Einschwingzeit
        für j in range(0,len(row)):
            gedrückt = nicht row[j].value()
            if(pressed and (keypadState[j][i] !=pressed)): #state wurde auf high geändert
                keypadState[j][i] = gedrückt
            elif(nicht gedrückt und (keypadState[j][i] != gedrückt)): # Zustand auf niedrig geändert
                keypadState[j][i] = gedrückt
                j_ifPressed = j
                i_ifPressed = i
        col[i].high()
    if(j_ifPressed != -1 und i_ifPressed != -1):
        return keyName[j_ifPressed][i_ifPressed]
    anders:
        Rückgabe -1
 
def printOled(lst):
    oledPos = {
            "x" : 0,
            „y“ : 0
          }
   
    oled.fill(0)
    string = ''
    für i in lst:
        string += str(i)
    l = 0
    while(l='0') oder key == '.'):
                inputList[-1] = inputList[-1] + Schlüssel
            elif(key == '+' oder key == '-' oder key == '*' oder key == '/'):
                if(inputList != ['']):
                    if(inputList[-1] == '' und (inputList[-2] == '+' oder inputList[-2] == '-' oder inputList[-2] == '*' oder inputList[-2 ] == '/')):
                        inputList[-2] = Schlüssel
                    elif(inputList[-1]==''):
                        inputList[-1]=Schlüssel
                        inputList.append('')
                    anders:
                        Eingabeliste[-1] = float(Eingabeliste[-1])
                        inputList.append(key)
                        inputList.append('')
                   
            elif(key == 's'):
                ShiftFlag = nicht ShiftFlag
            elif(key == 'a'):
                if(shiftFlag):
                    if(inputList[-1] != ''):
                        Eingabeliste[-1] = float(Eingabeliste[-1])
                        inputList.append(')')
                        inputList.append('')
                    anders:
                        inputList[-1] = ')'
                        inputList.append('')
                    ShiftFlag = False
                anders:
                    signFlag = nicht signFlag
                    if(inputList[-1] == ''):
                        Eingabeliste[-1] = '-'
                    anders:
                        if(inputList[-1][0] == '-'):
                           Eingabeliste[-1] = Eingabeliste[-1][1:]
                        anders:
                            Eingabeliste[-1] = '-' + Eingabeliste[-1]
               
            elif(key == 'b'):
                if(shiftFlag):
                    if(inputList[-1] == ''):
                        inputList[-1] = '('
                    anders:
                        inputList.append('(')
                    inputList.append('')
                    ShiftFlag = False
                anders:
                    if(inputList[-1] == ''):
                        Eingabeliste[-1] = 3.14
                    anders:
                        inputList.append(3.14)
                    inputList.append('')
            elif(key == 'c'):
                if(shiftFlag):
                    Eingabeliste = ['']
                    ShiftFlag = False
                anders:
                    if(inputList == ["error"]):
                        inputList = ['']
                    if(inputList != ['']):
                        if(inputList[-1] == ''):
                            inputList.pop()
                            inputList[-1] = str(inputList[-1])[:-1]
                        anders:
                            inputList[-1] = str(inputList[-1])[:-1]
            elif(key == '='):
                if(inputList[-1] == ''):
                    inputList.pop(-1)
                elif(inputList[-1] != ')'):
                    Eingabeliste[-1] = float(Eingabeliste[-1])
                versuchen:
                    ans = calc(inputList)
                    inputList = [str(ans)]
                außer:
                    ans = ''
                    Eingabeliste = []
                    inputList.append("error")
               
            printOled(Eingabeliste)
            print(Eingabeliste)

PicoBricks-Code des Raspberry Pi-Rechners

Da der Code lang ist, haben wir einen Download-Button für Sie vorbereitet. Vielleicht können Sie es mit Ihrem PicoBrick versuchen. Sie können es über die Schaltfläche unten herunterladen. 

HERUNTERLADEN

 

Arduino Code of Electronics-Rechner

#enthalten
#include „ACROBOTIC_SSD1306.h“
#enthalten
#enthalten
#define BUTTON_PIN 10
#define IR_RECEIVE_PIN 0

bool secondNumber = false;
bool firstNumber = true ;
bool berechnet = false;
String Nummer1 = „“;
String Nummer2 = „“;
char-Operation;
String-Berechnung;
Zeichenfolge a;

void writeScreen() {
  if (!secondNumber && !firstNumber) {
    oled.clearDisplay();
    oled.setTextXY(0, 0);
    oled.putString(number1);
    oled.setTextXY(0, (number1.length() + 1));
    oled.putString(String(operation));
  } else if (secondNumber && berechnet) {
    Serial.print(“Berechnung sollte gedruckt werden:“);
    Serial.println(Berechnung);
    oled.setTextXY(3, 5);
    oled.putString(calculation);
  } else if (firstNumber && !secondNumber) {
    oled.clearDisplay();
    oled.setTextXY(0, 0);
    oled.putString(number1);
    oled.setTextXY(0, (number1.length() + 3));
    oled.putString(number2);
  } else if (!firstNumber && secondNumber) {
    oled.clearDisplay();
    oled.setTextXY(0, 0);
    oled.putString(number1);
    oled.setTextXY(0, (number1.length() + 1));
    oled.putString(String(operation));
    oled.setTextXY(0, (number1.length() + 3));
    oled.putString(number2);
  }
}

void writeChc(char Zeichen) {
  if (firstNumber && !secondNumber) {
    // Die erste Zahl wird eingetragen, sonst wird nichts eingetragen!
    if (isDigit(character)) {
      Zahl1 += Zeichen;
    } else if (!(number1 == ” “)) {
      Operation = Zeichen;
      firstNumber = false;
    }
  } else if (!firstNumber && ! secondNumber) {
    // Nur die Operation wird eingegeben. Wenn eine neue eingegeben wird, wird die alte Operation gelöscht und aktualisiert.
    // Wenn die Nummer eingegeben wird, wird Nummer2 der zweiten Nummer zugewiesen und auf true gesetzt.
    if (isDigit(character)) {
      Zahl2 += Zeichen;
      secondNumber = true;
    } else if (!(number1 == ” “)) {
      Operation = Zeichen;
    }
  } else if (!firstNumber && secondNumber) {
    if (character == 'c') {
      long int n1 = number1.toInt();
      long int n2 = number2.toInt();
      berechnet = wahr;
      if (operation == ‘*’) {
        Berechnung = String (n1 * n2);
      } else if (operation == ‘/’) {
        Berechnung = String (n1 / n2);
      } else if (operation == ‚+‘) {
        Berechnung = String (n1 + n2);
      } else if (operation == ‘-‘) {
        Berechnung = String (n1 – n2);
      }
    } anders {
      Zahl2 += Zeichen;
    }
  }
  writeScreen();
}

void setup() {
  Serial.begin(9600);
  Wire.begin();
  oled.init();
  oled.clearDisplay();
  pinMode(0, INPUT);
  pinMode(BUTTON_PIN, INPUT);
  IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
}

void loop() {
  Verzögerung (500);
  if (IrReceiver.decode()) {
    int a = (IrReceiver.decodedIRData.decodedRawData);
    Serial.println(a);
    IrReceiver.resume(); // Den nächsten Wert erhalten
    if (a == -417792256) {
      writeChc(‘*’);
    } else if (a == -1387069696) {
      writeChc(‘+’);
    } else if (a == -150405376) {
      writeChc(‘/’);
    } else if (a == -1520763136) {
      writeChc(‘-‘);
    } else if (a == -484638976) {
      writeChc(‘C’);
    } else if (a == -1169817856) {

      writeChc(‘1’);
    } else if (a == 1186529536) {
      writeChc(‘2’);
    } else if (a == -1203241216) {
      writeChc(‘3’);
    } else if (a == -1153106176) {
      writeChc(‘4’);
    } else if (a == -1086259456) {
      writeChc(‘5’);
    } else if (a == -1136394496) {
      writeChc(‘6’);
    } else if (a == -1153106176) {
      writeChc(‘7’);
    } else if (a == -367657216) {
      writeChc(‘8’);
    } else if (a == -167117056) {
      writeChc(‘9’);
    } else if (a == -434503936) {
      writeChc(‘0’);
    }
  }
  while (berechnet) {
    writeScreen();
    oled.setTextXY(5, 0);
    oled.putString(“Drücken Sie die Picobricks-Taste, um neu zu beginnen”);
    if (digitalRead(BUTTON_PIN)) {
      Zahl1 = „“;
      Zahl2 = „“;
      operation = ‘ ‘;
      Berechnung = ” „;
      berechnet = falsch;
      secondNumber = false;
    }
  }
}
Vorheriger Beitrag
Nächster Beitrag

Danke fürs Abonnieren!

Diese E-Mail wurde registriert!

Shoppen Sie den Look
Wählen Sie Optionen

Bearbeitungsoption

Benachrichtigung wieder auf Lager

Vergleichen

Produkt ArtikelnummerBewertungBeschreibung Sammlung Verfügbarkeit Produktart Andere Details
this is just a warning
Anmeldung
Einkaufswagen
0 Artikel
Same Day Shipping No Extra Costs
Easy Returns Guarantee Return with Ease
Secure Checkout Secure Payment