Sisällysluettelo:

Arduino -laskin: 6 vaihetta
Arduino -laskin: 6 vaihetta

Video: Arduino -laskin: 6 vaihetta

Video: Arduino -laskin: 6 vaihetta
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Marraskuu
Anonim
Arduino -laskin
Arduino -laskin

Ohjelmointi on aina hauskaa ja Arduino on loistava alusta, jos olet vasta aloittamassa sulautettua ohjelmointia. Tässä opetusohjelmassa rakennamme oman laskimemme Arduinolla. Arvot voidaan lähettää näppäimistön (4 × 4 näppäimistö) kautta ja tulosta voidaan tarkastella nestekidenäytöllä (16 × 2 pistematriisi). Tämä laskin voi suorittaa yksinkertaisia toimintoja, kuten yhteenlasku, vähennyslasku, kertolasku ja jako kokonaisluvuilla. Mutta kun ymmärrät konseptin, voit toteuttaa jopa tieteellisiä toimintoja Arduinon sisäänrakennettujen toimintojen avulla. Tämän projektin lopussa tiedät kuinka käyttää 16x2 LCD -näyttöä ja näppäimistöä Arduinon kanssa ja kuinka helppoa on ohjelmoida heille käytettävissä olevat kirjastot. Ymmärrät myös kuinka ohjelmoida Arduinosi tietyn tehtävän suorittamiseen.

Vaihe 1: Tarvittavat asiat

Arduino Uno (mikä tahansa versio toimii) 16 × 2 LCD -näyttö 4 × 4 Näppäimistö 9 V Akku Leipälevy ja liitäntäjohdot

Vaihe 2: Piirikaavio

Piirikaavio
Piirikaavio

Vaihe 3: Arduino -laskinohjelma

Tämän projektin täydellinen Arduino -ohjelma on tämän projektin lopussa. Koodi on jaettu pieniin merkityksellisiin paloihin ja selitetty alla, kuten aiemmin kerrottiin, aiomme liittää nestekidenäytön ja näppäimistön Arduinon kanssa kirjastojen avulla. Joten lisätään ne ensin Arduino IDE: hen. LCD -kirjasto sisältyy jo oletusarvoisesti Arduinoosi, joten meidän ei tarvitse huolehtia siitä. Napsauta näppäimistökirjastoa ladataksesi sen Githubista. Saat ZIP -tiedoston, lisää sitten tämä lib Arduinoon Sketch -> Sisällytä kirjasto -> Lisää. ZIP -tiedosto ja osoita sijainti tähän ladattuun tiedostoon. Kun olemme tehneet, olemme kaikki valmiita ohjelmoimaan. Muuttuja ROWS ja COLS kertoo, kuinka monta riviä ja saraketta näppäimistöllämme on, ja näppäimistö näyttää järjestyksen, jossa näppäimet ovat näppäimistöllä. Näppäimistö, jota käytän tässä projektissa, näyttää tältä alla näppäinkartalle. // Neljä riviriviä tavu COLS = 4; // Kolme saraketta // Määritä avainnumeronäppäimet [RIVIT] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {'*',' 0 ','#',' D '}}; tavu rowPins [ROWS] = {0, 1, 2, 3}; // Liitä näppäimistö ROW0, ROW1, ROW2 ja ROW3 näihin Arduino -nastoihin. Tavua colPins [COLS] = {4, 5, 6, 7}; // Liitä näppäimistö COL0, COL1 ja COL2 näihin Arduino -nastoihin. Kun olemme maininneet, minkä tyyppistä näppäimistöä käytämme ja miten se on kytketty, voimme luoda näppäimistön käyttämällä näitä tietoja alla olevan rivin avulla Näppäimistö kpd = Näppäimistö (makeKeymap (näppäimet), rivitapit, colPins, RIVIT, COLS); // Luo näppäimistö Samoin meidän on myös kerrottava, mihin Arduinon nastoihin nestekidenäyttö on kytketty. Kytkentäkaavion mukaan määritelmät olisivat seuraavanlaisia: int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Nastat, joihin LCD on liitetty LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // Luo nestekidenäyttö Asetustoiminnon sisällä näytämme vain projektin nimen ja siirrymme sitten silmukkaan, jossa pääprojekti sijaitsee. Periaatteessa meidän on tarkistettava, kirjoitetaanko jotain näppäimistöllä, jos kirjoitetaan, meidän on tunnistettava mitä kirjoitetaan ja muuntaa sen muuttujaksi, kun "=" painetaan, meidän on laskettava tulos ja näytettävä se lopulta nestekidenäytöllä. Juuri näin tehdään silmukkafunktion sisällä, kuten alla on esitetty avain = kpd.getKey (); // painetun näppäimen arvon tallentaminen charifiin (avain! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); Mitä kunkin toiminnon sisällä tapahtuu, selitetään kommenttiriveillä, käy läpi alla oleva koodi, piilota se ymmärtääksesi kuinka se todella toimii. Jos sinulla on epäilyksiä tietyllä rivillä, voit käyttää kommenttiosaa tai foorumeita.

Vaihe 4:

Vaihe 5: Arduino -laskimen käyttö

Arduino -laskimen toiminta
Arduino -laskimen toiminta

Tee liitännät piirikaavion mukaisesti ja lataa alla oleva koodi. Jos se näyttää virheen, varmista, että olet lisännyt kirjaston yllä olevien ohjeiden mukaisesti. Voit myös kokeilla simulaatiota tarkistaaksesi, onko ongelma laitteistossasi. Jos kaikki on tehty niin kuin sen pitäisi olla, laitteistosi näyttää seuraavanlaiselta, kun LCD -näyttö näyttää tämän. Arduino -laskin, jossa käytetään 4x4 -näppäimistöä lueteltu allaMerkki näppäimistöllä Oletetaan olevan "A" -lisäys (+) "B" -vähennys (-) "C" -kerroin (*) "D" -jako (/) "*" Kirkas (C) "#" Sama kuin (=) Voit Käytä merkkiä kirjoittaaksesi, mitä kukin painike todellisuudessa edustaa. Kun olet valmis, voit aloittaa laskimen käytön. Kirjoita numero ja ilmestyy toiselle riville paina operandia ja kirjoita toinen numero lopuksi painamalla#-näppäintä saadaksesi tuloksen. Voit myös yrittää rakentaa tämän kosketusnäyttöpohjaisen Arduino -laskimen.

Vaihe 6: Koodi

/ * * Arduino -näppäimistölaskinohjelma */#include // LCD -otsikkotiedosto osoitteesta https://www.arduino.cc/en/Reference/LiquidCrystal#include // Näppäimistön otsikkotiedosto osoitteesta https://github.com/ Chris-A/Näppäimistön tavu RIVIT = 4; // Neljä riviriviä tavu COLS = 4; // Kolme saraketta // Määritä avainnumeronäppäimet [RIVIT] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {'*',' 0 ','#',' A '}}; tavu rowPins [ROWS] = {0, 1, 2, 3}; // Liitä näppäimistö ROW0, ROW1, ROW2 ja ROW3 näihin Arduino -nastoihin. Tavua colPins [COLS] = {4, 5, 6, 7}; // Kytke näppäimistö COL0, COL1 ja COL2 näihin Arduino -nastoihin. // Luo näppäimistökonst. Int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Nastat, joihin LCD on liitetty LiquidCrystal lcd (rs, en, d4, d5, d6, d7); pitkä Num1, Num2, Number; char -näppäin, toiminta; boolen tulos = false; void setup () {lcd.begin (16, 2); // Käytämme 16*2 LCD -näyttöä lcd.print ("DIY Calculator"); // Näytä intro -viesti lcd.setCursor (0, 1); // aseta kohdistin sarakkeeseen 0, rivi 1 lcd.print ("-CircuitDigest"); // Näytä intro -viestin viive (2000); // Odota, kunnes näytössä näkyy tiedot lcd.clear (); // Puhdista sitten} void loop () {key = kpd.getKey (); // painetun näppäimen arvon tallentaminen charifiin (avain! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); } mitätön DetectButtons () {lcd.clear (); // Puhdista se, jos (key == '*') // Jos peruutuspainiketta painetaan {Serial.println ("Button Cancel"); Luku = Num1 = Num2 = 0; result = false;} if (key == '1') // Jos painiketta 1 painetaan {Serial.println ("Button 1"); jos (luku == 0) luku = 1; else Luku = (luku*10) + 1; // Painamalla kahdesti} if (key == '4') // Jos painiketta 4 painetaan {Serial.println ("Button 4"); jos (luku == 0) luku = 4; else Luku = (luku*10) + 4; // Painamalla kahdesti} if (key == '7') // Jos painiketta 7 painetaan {Serial.println ("Button 7"); jos (luku == 0) luku = 7; else Luku = (luku*10) + 7; // Painamalla kahdesti} if (key == '0') {Serial.println ("Button 0"); // Painiketta 0 painetaan, jos (luku == 0) numero = 0; else Luku = (luku*10) + 0; // Painamalla kahdesti} if (key == '2') // Painike 2 on painettu {Serial.println ("Button 2"); jos (luku == 0) luku = 2; else Luku = (luku*10) + 2; // Painamalla kahdesti} if (key == '5') {Serial.println ("Button 5"); jos (luku == 0) luku = 5; muu Luku = (luku*10) + 5; // Painamalla kahdesti} if (key == '8') {Serial.println ("Button 8"); jos (luku == 0) luku = 8; muu Luku = (luku*10) + 8; // Painamalla kahdesti} if (key == '#') {Serial.println ("Button Equal"); Num2 = luku; tulos = totta; } if (key == '3') {Serial.println ("Button 3"); jos (luku == 0) luku = 3; else Luku = (luku*10) + 3; // Painamalla kahdesti} if (key == '6') {Serial.println ("Button 6"); jos (luku == 0) luku = 6; muu Luku = (luku*10) + 6; // Painamalla kahdesti} if (key == '9') {Serial.println ("Button 9"); jos (luku == 0) luku = 9; muu Luku = (luku*10) + 9; // Painamalla kahdesti} if (näppäin == 'A' || näppäin == 'B' || näppäin == 'C' || näppäin == 'D') // Tunnistuspainikkeet sarakkeessa 4 {Num1 = luku; Luku = 0; if (key == 'A') {Serial.println ("Lisäys"); action = '+';} if (key == 'B') {Serial.println ("Vähennys"); toiminta = '-'; } if (key == 'C') {Serial.println ("Kertolasku"); action = '*';} if (key == 'D') {Serial.println ("Devesion"); action = '/';} viive (100); }} mitätön CalculateResult () {if (action == '+') Number = Num1+Num2; jos (toiminta == '-') Luku = Num1-Num2; if (toiminta == '*') Luku = Num1*Num2; jos (toiminta == '/') Luku = Num1/Num2; } mitätön DisplayResult () {lcd.setCursor (0, 0); // aseta kohdistin sarakkeeseen 0, rivi 1 lcd.print (Num1); lcd.print (toiminta); lcd.print (Num2); jos (tulos == tosi) {lcd.print ("="); lcd.print (luku);} // Näytä tulos lcd.setCursor (0, 1); // aseta kohdistin sarakkeeseen 0, rivi 1 lcd.print (Number); // Näytä tulos}

Suositeltava: