Prosty Kalkulator na Arduino

Prosty Kalkulator na Arduino

Zapewne każdy z nas korzystał chociaż raz z kalkulatora. Będąc dzieckiem zawsze zastanawiałem się jak to jest możliwe, że takie małe urządzenie potrafi tak szybko obliczyć wszystkie wpisywane przeze mnie działania. Pragnąłem w przyszłości zbudować własną maszynkę do liczenia ( No co? Każdy ma przecież jakieś dziwne marzenia ;) ) 

Wreszcie nastał ten dzień kiedy leżąc sobie chory w łóżku z kubkiem gorącej herbaty postanowiłem spełnić swoje dziecięce pragnienie. 

Pod ręką leżało akurat arduino które kilka dni wcześniej przyleciało od naszych skośnookich przyjaciół wiec trzeba było je przetestować. 

To do roboty. 

Rzeczy wykorzystane w projekcie: 

  • Klon Arduino Uno 
  • Wyświetlacz LCD 16×2
  • Konwerter I2C 
  • Klawiatura tact switch 4×4
  • Płytka stykowa
  • Przewody połączeniowe 
  • Komputer z arduino ide 
  • I oczywiście kubek gorącej herbaty :) 

Po skompletowaniu elementów zabrałem się za połączenie tego wszystkiego do kupy. 

Przygotowałem schemat połączenia

Następnie połączyłem wszystko według schematu

No i przyszła pora na napisanie programu dla mojego kalkulatora. Założenie było takie aby kalkulator liczył tylko liczby całkowite, bez żadnych przecinków ponieważ zabrakło by na to miejsca na klawiaturze.   Tak wiec herbata w dłoń i piszemy. 

Pierwsze co musimy zrobić to dodać biblioteki których jeszcze nie mamy. Ja skorzystałem z :

  • Wire.h – domyślna biblioteka w arduino IDE
  • LiquidCrystal_I2C.h – do pobrania tutaj
  • Keypad.h – do pobrania tutaj

W celu wgrania biblioteki przechodzimy do Szkic -> Dołącz bibliotekę -> Dodaj bibliotekę .ZIP  i wyszukujemy nasze pliki do dodania.

Po tym możemy się już zabrać za pisanie właściwego kodu.

W kodzie jak możecie zauważyć jest również połączenie z monitorem portu szeregowego po to aby można było sprawdzić czy klawisze są dobrze rozpoznawane. 

W zależności od podłączenia przewodów do arduino klawiatura może różnie je wykrywać. W razie potrzeby można zmienić układ klawiszy w poniższych linijkach kodu.

Po kilku błędach kompilacji przez brakujące przecinki czy literówki w nazwach zmiennych mogłem wreszcie wgrać program do arduino i zacząć bawić się moim “nowym wynalazkiem”. 

Tak oto spełniłem swoje małe marzenie z dzieciństwa. Nie jest to co prawda maszynka z NASA a na rynku dostępne są o wiele lepsze kalkulatory, no ale nic tak nie cieszy jak własnoręczna robota, przecież o to chodzi w majsterkowaniu :) 

Ps. Proszę o wyrozumiałość ponieważ jest to mój pierwszy post na portalu. Mam nadzieję, że przymiecie mnie do majsterkowej rodzinki i podpowiecie co mógłbym poprawić aby następne posty były coraz lepsze. 

Ocena: 4.64/5 (głosów: 11)

Podobne posty

19 komentarzy do “Prosty Kalkulator na Arduino

    • Dzięki za podpowiedź.
      Dodałem wyświetlenie błędu przy próbie dzielenia przez zero.
      Mógłbyś napisać coś więcej o kodzie, bo za bardzo nie wiem co mam w nim poprawić. Bazuje teraz na wiedzy którą zdobyłem na dodatkowych lekcjach w technikum i cały czas uczę się sam, więc chętnie przeczytam co mogę poprawić. ;)

      Odpowiedz
  • Sprawa jest prosta….
    – używaj bloków instrukcji za pomocą {} przy if-ach żeby później uniknąć sytuacji typu czemu się to nie wykonuje jak powinno;
    – jeśli już tak dużo if używasz , to zrób jeden if a następnie else if … a nie tyle if-ów bo strasznie nieczytelne się to staje;
    – następnie zamiast tych if-ów zastosuj w przyszłości switch (jest to wtedy bardziej czytelne jak dla mnie !) albo zrób proste przeliczenia, redukując ilość tych if-ów.

    Ogólnie projekt spoko :) ale popracuj trochę nad kodem.
    Pozdrawiam Piro

    Odpowiedz
  • Arduino:1.8.7 (Windows XP), Płytka:”Arduino/Genuino Uno”

    sketch_nov24a:10:53: error: ‘POSITIVE’ was not declared in this scope

    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

    ciągle wyskakuje mi ten błąd .Co robić.

    exit status 1
    ‘POSITIVE’ was not declared in this scope

    Ten raport powinien zawierać więcej informacji jeśli w \\\\\\
    File -> Preferencje zostanie włączona opcja “Pokaż
    szczegółowe informacje podczas kompilacji”

    Odpowiedz
  • zamiast LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
    daj tam to z bilioteki hello world przykład u mie zadziałałLiquidCrystal_I2C lcd(0x27,20,4)

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?