Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Hej, tak nedávno jsem zkoumal, jak implementovat různé typy kódu do obvodu. Zjistil jsem, že vytvoření kalkulačky by byl skvělý způsob, jak implementovat „case“a další formy kódu, které mě zaujaly. V minulosti jsem vytvořil kalkulačky přímo z kódu, ale vytvoření obvodu pro mě mě zaujalo. Zvláště v této době karantény, kde jsem téměř celý den na počítači. Projekt má implementovat matematické operace na LCD obrazovce.
Krok 1: Materiály
Pro obvod:
- LCD 16 x 2
- Arduino Uno R3
- Klávesnice 4x4
- Malé prkénko
- Potenciometr (250 kΩ)
- Rezistor (1kΩ)
- x26 Propojovací vodiče
Krok 2: Připojení klávesnice 4x4
Připojte 4řadé piny na klávesnici 4x4 k vývodům Arduino 4-7 a připojte 4pinové vývody k vývodům Arduino 0-3.
Krok 3: Zajistěte napájení Breadboardu a připojte LCD
Pro prkénko jsem použil napájecí napětí 5. Připojil jsem napájení a zem k prkénku. LCD je umístěn na prkénko a umístěno tak, aby se všechny jeho piny připojily k prkénku.
Krok 4: Připojte napájení a uzemnění k LCD
K připojení LCD budou potřeba 3 piny země. Jeden bude připojen k zemi, jeho vlastní LCD, další bude připojen k LED na LCD a poslední bude připojen k RW. VCC LCD a LED bude vyžadovat připojení. Napájení LED však bude vyžadovat odpor připojený. V tomto případě jsem použil odpor 1 kΩ.
Krok 5: Připojení potenciometru
Připojte potenciometr k prkénku pomocí 3 volných sloupců. Bude mít 3 piny, sloupec, který obsahuje 1 pin terminálu, bude potřebovat uzemnění. Sloupec, který obsahuje pin 2 terminálu, bude potřebovat napájení. Poté bude mít stěrač ve svém sloupku propojovací vodič, který se připojí k VO LCD.
Krok 6: Připojení Arduina k LCD
Piny 8-13 na Arduinu budou připojeny k LCD. Piny 8-11 na Arduinu se připojí k D8 (7-4). Poté se pin 12 Arduina spojí s aktivací LCD a pin 13 na Arduinu se připojí k registru LCD.
Krok 7: Implementujte kód
K použití matematických operací s klávesnicí a displejem LCD bude zapotřebí kód. Kód, který jsem použil, bude následující, ale stále mohu implementovat několik změn, aby byl čistší a lepší. Tak si s tím klidně trochu pohrajte.
#include #include
LiquidCrystal lcd (13, 12, 11, 10, 9, 8);
dlouhý první = 0;
dlouhá sekunda = 0;
dvojnásobek celkem = 0;
int posit = 0;
char customKey;
konstantní bajty Řádky = 4;
konstantní bajt COLS = 4;
znaky [ROWS] [COLS] = {
{'1', '2', '3', '/'}, {'4', '5', '6', '*'}, {'7', '8', '9', '-'}, {'C', '0', '=', '+'}};
byte rowPins [ROWS] = {7, 6, 5, 4};
byte colPins [COLS] = {3, 2, 1, 0};
Keypad customKeypad = Klávesnice (makeKeymap (klíče), rowPins, colPins, ROWS, COLS);
neplatné nastavení () {
lcd.begin (16, 2);
lcd.setCursor (5, 0);
lcd.clear (); }
prázdná smyčka () {
customKey = customKeypad.getKey ();
switch (customKey) {
případ '0' … '9':
lcd.setCursor (0, 0);
first = first * 10 + (customKey - '0');
lcd.print (první);
posit ++;
přestávka;
případ '+':
první = (celkem! = 0? celkem: první);
lcd.setCursor (pozit, 0);
lcd.print ("+");
posit ++;
second = SecondNumber ();
celkem = první + sekunda;
lcd.setCursor (1, 1);
lcd.print (celkem);
první = 0, sekunda = 0;
posit = 0;
přestávka;
případ '-':
první = (celkem! = 0? celkem: první);
lcd.setCursor (pozit, 0);
lcd.print ("-");
posit ++;
second = SecondNumber ();
celkem = první - druhý;
lcd.setCursor (1, 1);
lcd.print (celkem);
první = 0, sekunda = 0;
posit = 0;
přestávka;
případ '*':
první = (celkem! = 0? celkem: první);
lcd.setCursor (pozit, 0);
lcd.print ("*");
posit ++;
second = SecondNumber ();
celkem = první * sekunda;
lcd.setCursor (1, 1);
lcd.print (celkem);
první = 0, sekunda = 0;
posit = 0;
přestávka;
případ '/':
první = (celkem! = 0? celkem: první);
lcd.setCursor (pozit, 0);
lcd.print ("/");
posit ++;
second = SecondNumber (); lcd.setCursor (1, 1);
druhý == 0? lcd.print ("Chyba"): celkem = (float) první / (float) sekunda;
lcd.print (celkem);
první = 0, sekunda = 0;
posit = 0;
přestávka;
případ 'C':
celkem = 0;
první = 0;
sekunda = 0;
posit = 0;
lcd.clear ();
přestávka; }
}
dlouhé druhé číslo () {
zatímco (1) {
customKey = customKeypad.getKey ();
if (customKey> = '0' && customKey <= '9') {
sekunda = sekunda * 10 + (customKey - '0');
lcd.setCursor (pozit, 0);
lcd.print (druhý); }
if (customKey == 'C') {
celkem = 0;
první = 0;
sekunda = 0;
posit = 0;
lcd.clear ();
přestávka; }
if (customKey == '=') {
lcd.setCursor (0, 1);
lcd.print ("=");
posit = celkem;
lcd.clear ();
lcd.setCursor (0, 1);
lcd.print ("=");
přestávka; }
}
vrátit se druhý;}
Krok 8: Výsledek
Doufám, že se vám všem tento návod líbil. Děkuji za přečtení!
Saim.