Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino rekenmachine bouwen met 16x2 LCD en keypad

Onderdelen en benodigdheden

Arduino UNO 1
RGB LCD Shield Kit, 16x2 Karakterdisplay 1
Jumper-draden (generiek) 1
9V-batterij (generiek) 1
Breadboard (generiek) 1

Over dit project

Aan het einde van dit project weet je hoe je een 16x2 LCD en keypad met Arduino gebruikt en hoe eenvoudig het is om ervoor te programmeren met de beschikbare bibliotheken. Je leert ook hoe je je Arduino programmeert voor een specifieke taak.

Benodigde materialen

  • Arduino Uno (elke versie werkt)
  • 16×2 LCD-display
  • 4×4 Keypad
Arduino rekenmachine bouwen met 16x2 LCD en keypad
  • 9V-batterij
  • Breadboard en verbindingsdraden

Pin-aansluitingen

Arduino-pin Functie
D01e pin van toetsenbord
D12e pin van toetsenbord
D23e pin van toetsenbord
D34e pin van toetsenbord
D45e pin van toetsenbord
D56e pin van toetsenbord
D67e pin van toetsenbord
D78e pin van toetsenbord
D8Register select pin van LCD (pin 4)
D9Enable pin van LCD (pin 6)
D10Datapin 4 (pin 11)
D11Datapin 5 (pin 12)
D12Datapin 6 (pin 13)
D13Datapin 7 (pin 14)
+5VVerbonden met Vdd-pin van LCD (pin 2)
GNDVerbonden met Vss, Vee en RW-pin van LCD (pin 1, 3 en 5)

Sommige Arduino-borden kunnen een fout tonen tijdens het uploaden als er iets aan pin 0 en pin 1 zit. Als je dit ervaart, haal dan het keypad eraf tijdens het uploaden.

Zodra je verbindingen klaar zijn, ziet je hardware er ongeveer zo uit:

Arduino rekenmachine bouwen met 16x2 LCD en keypad

Code

Arduino Keypad Rekenmachine-programma

/* 
 * Arduino Keypad Rekenmachine Programma 
 */
#include <LiquidCrystal.h> // Header voor LCD van https://www.arduino.cc/en/Reference/LiquidCrystal
#include <Keypad.h> // Header voor Keypad van https://github.com/Chris--A/Keypad

const byte ROWS = 4; // Vier rijen
const byte COLS = 4; // Vier kolommen

// Keymap definiëren
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, ROW1, ROW2, ROW3 aan deze Arduino-pinnen
byte colPins[COLS] = { 4, 5, 6, 7 }; // Keypad COL0, COL1, COL2, COL3 aan deze Arduino-pinnen

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

const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pinnen waar LCD op aangesloten is
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 Rekenmachine"); // Intro-bericht
  lcd.setCursor(0, 1); // Cursor naar kolom 0, regel 1
  lcd.print("-CircuitDigest"); // Intro-bericht
  delay(2000); // Wachten tot display info toont
  lcd.clear(); // Wissen
}

void loop() {
  key = kpd.getKey(); // Ingedrukte toets opslaan in char
  if (key != NO_KEY) DetectButtons();
  if (result == true) CalculateResult();
  DisplayResult();
}

void DetectButtons() {
  lcd.clear();
  if (key == '*') { // Annuleren-knop
    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; }
  if (key == 'A' || key == 'B' || key == 'C' || key == 'D') { // Kolom 4 detecteren
    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);
}

Schema's

Arduino rekenmachine bouwen met 16x2 LCD en keypad

Productieproces

  1. De Deegroller: Van Etrusken tot Moderne Vakmanschap
  2. De Evolutie en Vakmanschap van Moderne Bowlingpinnen
  3. Voorkomen van USB HID-aanvallen: Arduino Leonardo Toetsenbord-exploit Demo
  4. Atmel AT89-serie moeiteloos programmeren met Arduino Uno – Stapsgewijze handleiding
  5. Bluetooth-gecontroleerde Arduino Spybot bouwen
  6. RC-ontvanger PPM-signalen decoderen met Arduino: Stapsgewijze handleiding
  7. FlickMote: Gebarengecontroleerde IR-afstandsbediening voor Slimme Huizen
  8. DIY Arduino TV-B-Gone: Universele TV-uit-schakelaar
  9. Bouw een Aangepaste LED Hoofdklok met Alarm – Zichtbaar vanaf 12 Meter
  10. Verander je MIDI-toetsenbord in een slimme pianotutor met Arduino, LEDs en MuseScore
  11. 25 kHz 4-pins PWM-ventilatorbesturing met Arduino Uno – Bouw, Code & Test