Obsah:

Kalkulačka Arduino: 6 kroků
Kalkulačka Arduino: 6 kroků

Video: Kalkulačka Arduino: 6 kroků

Video: Kalkulačka Arduino: 6 kroků
Video: Arduino Projekt: Pokročilá Kalkulačka | Česky (FilipProjects) 2024, Červenec
Anonim
Kalkulačka Arduino
Kalkulačka Arduino

Programování je vždy zábava a Arduino je skvělá platforma, pokud s Embedded programováním teprve začínáte. V tomto tutoriálu si vytvoříme vlastní kalkulačku s Arduinem. Hodnoty lze odeslat pomocí klávesnice (klávesnice 4 × 4) a výsledek lze zobrazit na obrazovce LCD (16 × 2 jehličková matice). Tato kalkulačka mohla provádět jednoduché operace jako sčítání, odčítání, násobení a dělení s celými čísly. Ale jakmile porozumíte konceptu, můžete implementovat i vědecké funkce s vestavěnými funkcemi Arduina. Na konci tohoto projektu budete vědět, jak používat 16x2 LCD a klávesnici s Arduino a také jak snadné je pro ně snadno programovat pomocí snadno dostupné knihovny. Budete také rozumět tomu, jak naprogramovat Arduino pro splnění konkrétního úkolu.

Krok 1: Požadované věci

Arduino Uno (jakákoli verze bude fungovat) 16 × 2 LCD displej 4 × 4 klávesnice 9V baterie Breadboard a připojovací vodiče

Krok 2: Schéma zapojení

Kruhový diagram
Kruhový diagram

Krok 3: Program kalkulačky Arduino

Kompletní program Arduino pro tento projekt je uveden na konci tohoto projektu. Kód je rozdělen na malé smysluplné bloky a vysvětlen níže. Jak již bylo řečeno, propojíme pomocí klávesnice Arduino LCD a klávesnici. Pojďme je tedy nejprve přidat do našeho Arduino IDE. Knihovna pro LCD je již ve výchozím nastavení součástí vašeho Arduina, takže si s tím nemusíme dělat starosti. Knihovnu klávesnic si kliknutím na odkaz stáhnete z Githubu. Získáte soubor ZIP, poté toto lib přidáte do Arduina pomocí Sketch -> Include Library -> Add. ZIP file a ukažte umístění na tento stažený soubor. Jakmile jsme hotovi, jsme všichni připraveni na programování. I když jsme použili knihovnu pro použití klávesnice, musíme zmínit několik podrobností (zobrazených níže) o klávesnici pro Arduino. Proměnná ROWS a COLS řekne, kolik řádků a sloupců má naše klávesnice a mapa kláves ukazuje pořadí, ve kterém jsou klávesy na klávesnici přítomny. Klávesnice, kterou používám v tomto projektu, vypadá takto níže na mapě klíčů, která také představuje totéž. Dále jsme zmínili, ke kterým kolíkům je klávesnice připojena pomocí proměnného pole rowPins a colPins.const byte ROWS = 4; // Čtyřřádkový bajt COLS = 4; // Tři sloupce // Definujte klíče Keymapchar [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {'*',' 0 ','#',' D '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Připojte klávesnici ROW0, ROW1, ROW2 a ROW3 k těmto pinům Arduino.byte colPins [COLS] = {4, 5, 6, 7}; // K těmto pinům Arduino připojte klávesnici COL0, COL1 a COL2. Jakmile jsme zmínili, jaký typ klávesnice používáme a jak je připojena, můžeme pomocí níže uvedených řádků vytvořit klávesnici Klávesnice kpd = Klávesnice (makeKeymap (klávesy), rowPins, colPins, ROWS, COLS); // Vytvořte klávesnici Podobně musíme také říci, ke kterým pinům Arduina je připojen LCD. Podle našeho schématu zapojení by definice byly podobné nížeconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Piny, ke kterým je připojen LCDLiquidCrystal lcd (rs, en, d4, d5, d6, d7); // vytvoření LCD Uvnitř funkce nastavení zobrazíme pouze název projektu a poté přejdeme do smyčky while, kde leží hlavní projekt. V zásadě musíme zkontrolovat, zda se něco zadává na klávesnici, pokud zadáme, musíme rozpoznat to, co se zadává, a poté to převést na proměnnou, když je stisknuto „=“, musíme vypočítat výsledek a nakonec jej zobrazit na LCD. To je přesně to, co se děje uvnitř funkce smyčky, jak je uvedeno níže key = kpd.getKey (); // uložení hodnoty stisknuté klávesy na charif (klíč! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); Co se děje uvnitř každé funkce, je vysvětleno pomocí řádků komentářů, projděte si níže uvedený kompletní kód, pohrajte si s ním, abyste pochopili, jak vlastně funguje. Máte -li jakékoli pochybnosti o konkrétním řádku, použijte sekci komentářů nebo fóra.

Krok 4:

Krok 5: Práce s kalkulačkou Arduino

Práce kalkulačky Arduino
Práce kalkulačky Arduino

Proveďte zapojení podle schématu zapojení a nahrajte níže uvedený kód. Pokud se zobrazí chyba, ujistěte se, že jste přidali knihovnu podle výše uvedených pokynů. Můžete také vyzkoušet simulaci a zkontrolovat, zda problém není ve vašem hardwaru. Pokud je vše provedeno tak, jak má, pak bude váš hardware vypadat takto níže s LCD zobrazením kalkulačky Arduino pomocí klávesnice 4x4 v akci Protože zde použitá klávesnice nemá správné označení, předpokládal jsem, že abecedy jsou operátory jako níže uvedený znak na klávesnici Předpokládá se, že sčítání „A“(+) „B“Odčítání (-) „C“Násobení (*) „D“dělení (/) „*“Vymazat (C) „#“se rovná (=) Můžete pomocí značky zapište, co která tlačítka ve skutečnosti představují. Po dokončení můžete přímo začít používat kalkulačku. Zadejte číslo a objeví se na druhém řádku, stiskněte operand a zadejte druhé číslo a nakonec stiskněte klávesu „#“, abyste získali výsledek. Můžete také zkusit sestavit tuto kalkulačku Arduino založenou na dotykové obrazovce.

Krok 6: Kód

/ * * Program kalkulačky klávesnice Arduino */#include // Soubor záhlaví pro LCD z https://www.arduino.cc/en/Reference/LiquidCrystal#include // Soubor záhlaví pro klávesnici z https://github.com/ Chris-A/Keyconcon byte ROWS = 4; // Čtyřřádkový bajt COLS = 4; // Tři sloupce // Definujte klíče Keymapchar [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {'*',' 0 ','#',' A '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Připojte klávesnici ROW0, ROW1, ROW2 a ROW3 k těmto pinům Arduino.byte colPins [COLS] = {4, 5, 6, 7}; // K těmto pinům Arduino připojte klávesnici COL0, COL1 a COL2. Keypad kpd = Keypad (makeKeymap (klíče), rowPins, colPins, ROWS, COLS); // Vytvořte Keypadconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Piny, ke kterým je připojen LCDLiquidCrystal lcd (rs, en, d4, d5, d6, d7); dlouhý Num1, Num2, Number; char klíč, akce; boolean result = false; void setup () {lcd.begin (16, 2); // Používáme 16*2 LCD displej lcd.print ("DIY Calculator"); // Zobrazení úvodní zprávy lcd.setCursor (0, 1); // nastavte kurzor na sloupec 0, řádek 1 lcd.print ("-CircuitDigest"); // Zobrazení zpoždění úvodní zprávy (2000); // Počkejte, až se na displeji zobrazí informace lcd.clear (); // Potom jej vyčistěte} void loop () {key = kpd.getKey (); // uložení hodnoty stisknuté klávesy na charif (klíč! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); } neplatné DetectButtons () {lcd.clear (); // Potom jej vyčistěte if (key == '*') // Pokud je stisknuto tlačítko Cancel {Serial.println ("Button Cancel"); Number = Num1 = Num2 = 0; result = false;} if (key == '1') // Pokud je stisknuto tlačítko 1 {Serial.println ("Tlačítko 1"); if (Number == 0) Number = 1; jinak Číslo = (Číslo*10) + 1; // Stiskněte dvakrát} if (klávesa == '4') // Pokud je stisknuto tlačítko 4 {Serial.println ("Tlačítko 4"); if (Number == 0) Number = 4; jinak Číslo = (Číslo*10) + 4; // Stiskněte dvakrát} if (klávesa == '7') // Pokud je stisknuto tlačítko 7 {Serial.println ("Tlačítko 7"); if (Number == 0) Number = 7; jinak Číslo = (Číslo*10) + 7; // Stiskněte dvakrát} if (klíč == '0') {Serial.println ("Tlačítko 0"); // Tlačítko 0 je stisknuto, pokud (Číslo == 0) Číslo = 0; jinak Číslo = (Číslo*10) + 0; // Stiskněte dvakrát} if (key == '2') // Tlačítko 2 je stisknuto {Serial.println ("Tlačítko 2"); if (Number == 0) Number = 2; jinak Číslo = (Číslo*10) + 2; // Stiskněte dvakrát} if (klíč == '5') {Serial.println ("Tlačítko 5"); if (Number == 0) Number = 5; jinak Číslo = (Číslo*10) + 5; // Stiskněte dvakrát} if (klíč == '8') {Serial.println ("Tlačítko 8"); if (Number == 0) Number = 8; jinak Číslo = (Číslo*10) + 8; // Stiskněte dvakrát} if (key == '#') {Serial.println ("Button Equal"); Num2 = číslo; výsledek = true; } if (key == '3') {Serial.println ("Button 3"); if (Number == 0) Number = 3; jinak Číslo = (Číslo*10) + 3; // Stiskněte dvakrát} if (klíč == '6') {Serial.println ("Tlačítko 6"); if (Number == 0) Number = 6; jinak Číslo = (Číslo*10) + 6; // Stiskněte dvakrát} if (klíč == '9') {Serial.println ("Tlačítko 9"); if (Number == 0) Number = 9; jinak Číslo = (Číslo*10) + 9; // Stiskněte dvakrát} if (klíč == 'A' || klíč == 'B' || klíč == 'C' || klíč == 'D') // Detekce tlačítek ve sloupci 4 {Num1 = Číslo; Číslo = 0; if (klíč == 'A') {Serial.println ("Přidání"); action = '+';} if (key == 'B') {Serial.println ("Subtraction"); action = '-'; } if (key == 'C') {Serial.println ("Násobení"); action = '*';} if (key == 'D') {Serial.println ("Devesion"); action = '/';} zpoždění (100); }} neplatné 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); // nastavte kurzor na sloupec 0, řádek 1 lcd.print (Num1); lcd.print (akce); lcd.print (Num2); if (result == true) {lcd.print ("="); lcd.print (Number);} // Zobrazí výsledek lcd.setCursor (0, 1); // nastavte kurzor na sloupec 0, řádek 1 lcd.print (Number); // Zobrazit výsledek}

Doporučuje: