Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Hej, nedávno som skúmal, ako implementovať rôzne typy kódu do obvodu. Zistil som, že vytvorenie kalkulačky by bolo skvelým spôsobom, ako implementovať „prípad“a iné formy kódu, ktoré ma zaujali. V minulosti som vyrábal kalkulačky priamo z kódu, ale vytvoriť pre ne obvod ma zaujalo. Zvlášť v tomto období karantény, kde som takmer celý deň na počítači. Cieľom projektu je implementácia matematických operácií na obrazovke LCD.
Krok 1: Materiály
Pre obvod:
- LCD 16 x 2
- Arduino Uno R3
- Klávesnica 4x4
- Malý Breadboard
- Potenciometer (250 kΩ)
- Odpor (1kΩ)
- x26 prepojovacie vodiče
Krok 2: Pripojenie klávesnice 4x4
Pripojte 4 radové kolíky na klávesnici 4x4 k pinom Arduino 4-7 a 4 stĺpcové kolíky k kolíkom Arduino 0-3.
Krok 3: Zabezpečte napájanie Breadboardu a pripojte LCD displej
Na dosku na chlieb som použil napájacie napätie 5. Pripojil som napájanie a zem k doske na chlieb. LCD je umiestnený na doske a je umiestnený tak, aby sa všetky jeho kolíky spojili s doskou.
Krok 4: Pripojte napájanie a uzemnenie k LCD
Na pripojenie LCD budú potrebné 3 kolíky uzemnenia. Jeden bude spojený so zemou, samotný LCD, druhý bude spojený s LED na LCD a posledný bude spojený s RW. VCC LCD a diódy LED vyžadujú pripojenie. Napájanie LED však bude vyžadovať zapojený odpor. V tomto prípade som použil odpor 1 kΩ.
Krok 5: Pripojenie potenciometra
Pripojte potenciometer k breadboardu pomocou 3 voľných stĺpcov. Bude mať 3 piny, stĺpec, ktorý obsahuje pól terminálu 1, bude potrebovať uzemnenie. Stĺpec, ktorý obsahuje pól 2 svorky, bude potrebovať príslušnú energiu. Potom bude mať stierač v stĺpci prepojovací vodič, ktorý sa pripája k VO LCD.
Krok 6: Pripojenie Arduina k LCD
Piny 8-13 na Arduine budú prepojené s LCD. Piny 8-11 na Arduine sa pripoja k D8 (7-4) resp. Potom sa pin 12 Arduina spojí s aktiváciou LCD a pin 13 na Arduine sa spojí s registrom LCD.
Krok 7: Implementujte kód
Na používanie matematických operácií s klávesnicou a LCD displejom bude potrebný kód. Kód, ktorý som použil, bude nasledujúci, ale stále môžem implementovať niekoľko zmien, aby bol čistejší a lepší. Neváhajte sa s tým teda trochu pohrať.
#include #include
LiquidCrystal lcd (13, 12, 11, 10, 9, 8);
dlhý prvý = 0;
dlhá sekunda = 0;
dvojitý súčet = 0;
int pozit = 0;
char customKey;
konštantný bajt ROWS = 4;
konštantný bajt COLS = 4;
kľúče znakov [ROWS] [COLS] = {
{'1', '2', '3', '/'}, {'4', '5', '6', '*'}, {'7', '8', '9', '-'}, {'C', '0', '=', '+'}};
bajtové riadky [ROWS] = {7, 6, 5, 4};
byte colPins [COLS] = {3, 2, 1, 0};
Keypad customKeypad = Keypad (makeKeymap (klávesy), rowPins, colPins, ROWS, COLS);
neplatné nastavenie () {
lcd.begin (16, 2);
lcd.setCursor (5, 0);
lcd.clear (); }
prázdna slučka () {
customKey = customKeypad.getKey ();
prepínač (customKey) {
prípad „0“… „9“:
lcd.setCursor (0, 0);
first = first * 10 + (customKey - '0');
lcd.print (prvý);
klad ++;
prestávka;
prípad „+“:
first = (total! = 0? total: first);
lcd.setCursor (predpoklad, 0);
lcd.print ("+");
klad ++;
sekunda = DruhéČíslo ();
celkom = prvý + druhý;
lcd.setCursor (1, 1);
lcd.print (celkom);
prvý = 0, sekunda = 0;
predpoklad = 0;
prestávka;
prípad '-':
first = (total! = 0? total: first);
lcd.setCursor (predpoklad, 0);
lcd.print ("-");
klad ++;
sekunda = DruhéČíslo ();
celkom = prvý - druhý;
lcd.setCursor (1, 1);
lcd.print (celkom);
prvý = 0, sekunda = 0;
predpoklad = 0;
prestávka;
prípad '*':
first = (total! = 0? total: first);
lcd.setCursor (predpoklad, 0);
lcd.print ("*");
klad ++;
sekunda = DruhéČíslo ();
celkom = prvý * druhý;
lcd.setCursor (1, 1);
lcd.print (celkom);
prvý = 0, sekunda = 0;
predpoklad = 0;
prestávka;
prípad '/':
first = (total! = 0? total: first);
lcd.setCursor (predpoklad, 0);
lcd.print ("/");
klad ++;
sekunda = DruhéČíslo (); lcd.setCursor (1, 1);
druhý == 0? lcd.print ("Chyba"): celkom = (float) prvý / (float) druhý;
lcd.print (celkom);
prvý = 0, sekunda = 0;
predpoklad = 0;
prestávka;
prípad „C“:
celkom = 0;
prvý = 0;
sekunda = 0;
predpoklad = 0;
lcd.clear ();
prestávka; }
}
dlhé druhé číslo () {
pričom (1) {
customKey = customKeypad.getKey ();
if (customKey> = '0' && customKey <= '9') {
sekunda = sekunda * 10 + (customKey - '0');
lcd.setCursor (predpoklad, 0);
lcd.print (druhý); }
if (customKey == 'C') {
celkom = 0;
prvý = 0;
sekunda = 0;
predpoklad = 0;
lcd.clear ();
prestávka; }
if (customKey == '=') {
lcd.setCursor (0, 1);
lcd.print ("=");
posit = celkom;
lcd.clear ();
lcd.setCursor (0, 1);
lcd.print ("=");
prestávka; }
}
vráť sa druhý;}
Krok 8: Výsledok
Dúfam, že sa vám tento návod páčil. Ďakujem za čítanie!
Saim.