Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino-Rechner mit 16x2 LCD und Tastatur bauen

Komponenten und Materialien

Arduino UNO × 1
RGB LCD Shield Kit, 16x2 Zeichen Display × 1
Jumper-Kabel (generisch) × 1
9V-Batterie (generisch) × 1
Breadboard (generisch) × 1

Über dieses Projekt

Am Ende dieses Projekts wissen Sie, wie man ein 16x2 LCD und eine Tastatur mit Arduino verwendet und wie einfach es ist, sie mit den verfügbaren Bibliotheken zu programmieren. Sie verstehen auch, wie man den Arduino für eine bestimmte Aufgabe programmiert.

Benötigte Materialien:

Arduino-Rechner mit 16x2 LCD und Tastatur bauen

Pinbelegung

Arduino Pin Verbindung
D01. Pin der Tastatur
D12. Pin der Tastatur
D23. Pin der Tastatur
D34. Pin der Tastatur
D45. Pin der Tastatur
D56. Pin der Tastatur
D67. Pin der Tastatur
D78. Pin der Tastatur
D8Register Select Pin des LCD (Pin 4)
D9Enable Pin des LCD (Pin 6)
D10Datenpin 4 (Pin 11)
D11Datenpin 5 (Pin 12)
D12Datenpin 6 (Pin 13)
D13Datenpin 7 (Pin 14)
+5VVdd Pin des LCD (Pin 2)
GNDVss, Vee und RW Pin des LCD (Pin 1, 3, 5)

Hinweis: Manche Arduino-Boards zeigen einen Fehler beim Hochladen, wenn Pins 0 und 1 belegt sind. Falls dies auftritt, Tastatur beim Hochladen abziehen.

Nach dem Verbinden sollte Ihre Hardware etwa so aussehen:

Arduino-Rechner mit 16x2 LCD und Tastatur bauen

Code

Arduino Taschenrechner-Programm

/* Arduino Keypad Calculator Program */
#include <LiquidCrystal.h> // LCD-Bibliothek: https://www.arduino.cc/en/Reference/LiquidCrystal
#include <Keypad.h>        // Keypad-Bibliothek: https://github.com/Chris--A/Keypad

const byte ROWS = 4; // Vier Zeilen
const byte COLS = 4; // Vier Spalten

// Tastenbelegung definieren
char keys[ROWS][COLS] = {
  {'7','8','9','D'},
  {'4','5','6','C'},
  {'1','2','3','B'},
  {'*','0','#','A'}
};

byte rowPins[ROWS] = {0, 1, 2, 3}; // Keypad ROW0-ROW3 an diese Arduino-Pins
byte colPins[COLS] = {4, 5, 6, 7}; // Keypad COL0-COL3 an diese Arduino-Pins

Keypad kpd = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // LCD-Pins
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

long Num1, Num2, Number;
char key, action;
boolean result = false;

void setup() {
  lcd.begin(16, 2); // 16x2 LCD Display
  lcd.print("DIY Calculator"); // Intro-Nachricht
  lcd.setCursor(0, 1); // Spalte 0, Zeile 1
  lcd.print("-CircuitDigest");
  delay(2000); // 2 Sekunden warten
  lcd.clear(); // Display löschen
}

void loop() {
  key = kpd.getKey(); // Gedrückte Taste speichern
  if (key != NO_KEY) DetectButtons();
  if (result == true) CalculateResult();
  DisplayResult();
}

void DetectButtons() {
  lcd.clear();
  if (key == '*') { // Abbrechen
    Serial.println("Button Cancel");
    Number = Num1 = Num2 = 0;
    result = false;
  }
  if (key == '1') { Serial.println("Button 1"); if (Number == 0) Number = 1; else Number = (Number * 10) + 1; }
  if (key == '4') { Serial.println("Button 4"); if (Number == 0) Number = 4; else Number = (Number * 10) + 4; }
  if (key == '7') { Serial.println("Button 7"); if (Number == 0) Number = 7; else Number = (Number * 10) + 7; }
  if (key == '0') { Serial.println("Button 0"); if (Number == 0) Number = 0; else Number = (Number * 10) + 0; }
  if (key == '2') { Serial.println("Button 2"); if (Number == 0) Number = 2; else Number = (Number * 10) + 2; }
  if (key == '5') { Serial.println("Button 5"); if (Number == 0) Number = 5; else Number = (Number * 10) + 5; }
  if (key == '8') { Serial.println("Button 8"); if (Number == 0) Number = 8; else Number = (Number * 10) + 8; }
  if (key == '#') { Serial.println("Button Equal"); Num2 = Number; result = true; }
  if (key == '3') { Serial.println("Button 3"); if (Number == 0) Number = 3; else Number = (Number * 10) + 3; }
  if (key == '6') { Serial.println("Button 6"); if (Number == 0) Number = 6; else Number = (Number * 10) + 6; }
  if (key == '9') { Serial.println("Button 9"); if (Number == 0) Number = 9; else Number = (Number * 10) + 9; }

  // Spalte 4: Operatoren
  if (key == 'A' || key == 'B' || key == 'C' || key == 'D') {
    Num1 = Number;
    Number = 0;
    if (key == 'A') { Serial.println("Addition"); action = '+'; }
    if (key == 'B') { Serial.println("Subtraction"); action = '-'; }
    if (key == 'C') { Serial.println("Multiplication"); action = '*'; }
    if (key == 'D') { Serial.println("Division"); action = '/'; }
    delay(100);
  }
}

void CalculateResult() {
  if (action == '+') Number = Num1 + Num2;
  if (action == '-') Number = Num1 - Num2;
  if (action == '*') Number = Num1 * Num2;
  if (action == '/') Number = Num1 / Num2;
}

void DisplayResult() {
  lcd.setCursor(0, 0);
  lcd.print(Num1);
  lcd.print(action);
  lcd.print(Num2);
  if (result == true) {
    lcd.print(" =");
    lcd.print(Number);
  }
  lcd.setCursor(0, 1);
  lcd.print(Number);
}

Schaltplan

Arduino-Rechner mit 16x2 LCD und Tastatur bauen

Herstellungsprozess

  1. Das Nudelholz: Von etruskischen Ursprüngen bis zur modernen Handwerkskunst
  2. Die Entwicklung und Handwerkskunst moderner Bowling-Pins
  3. USB-HID-Angriffe verhindern: Arduino Leonardo Tastatur-Exploit Demo
  4. ATmel AT89-Serie mühelos mit Arduino Uno programmieren – Schritt-für-Schritt-Anleitung
  5. Bluetooth-gesteuerter Arduino-Spybot bauen – Überwachungsroboter mit IP-Kamera
  6. RC-Empfänger PPM-Signal mit Arduino auslesen – Schritt-für-Schritt
  7. FlickMote: Gestensteuerung per Ultraschall & IR für Smart Home (Arduino 101)
  8. DIY Arduino TV-B-Gone: Universelle TV-Aus-Fernbedienung
  9. Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
  10. 25-kHz-4-Pin-PWM-Lüftersteuerung mit Arduino Uno – Bau, Code & Test