Πίνακας περιεχομένων:

Υπολογιστής οθόνης αφής Arduino: 7 βήματα
Υπολογιστής οθόνης αφής Arduino: 7 βήματα

Βίντεο: Υπολογιστής οθόνης αφής Arduino: 7 βήματα

Βίντεο: Υπολογιστής οθόνης αφής Arduino: 7 βήματα
Βίντεο: Using multiple TM1637 4 digits LED Display with Arduino 2024, Ιούλιος
Anonim
Υπολογιστής οθόνης αφής Arduino
Υπολογιστής οθόνης αφής Arduino

Γειά σου! Πρόκειται για ένα έργο κατασκευής αριθμομηχανής οθόνης αφής χρησιμοποιώντας Arduino Uno και ασπίδα LCD TFT. Σκέφτηκα την ιδέα για το μάθημα προγραμματισμού στο σπίτι μου και η εμπειρία στην κατασκευή αυτού του έργου ήταν πολύ ενδιαφέρουσα. Αυτός ο υπολογιστής μπορεί να κάνει τις τέσσερις απλές μαθηματικές πράξεις (πρόσθεση, αφαίρεση, πολλαπλασιασμός και διαίρεση). Εμφανίζει επίσης έως και δύο δεκαδικά ψηφία για τις απαντήσεις διαίρεσης που τις έχουν. Ας βουτήξουμε αμέσως! Οι προμήθειες για αυτό το έργο παρατίθενται παρακάτω.

Προμήθειες

- Arduino Uno

-2.4 TFT LCD Shield (εδώ το αγόρασα:

- Καλώδιο USB A έως B (καλώδιο για σύνδεση Arduino με υπολογιστή)

- Υπολογιστής με εγκατεστημένο το Arduino IDE

- Θα χρειαστεί επίσης να κατεβάσετε δύο βιβλιοθήκες: MCUFRIEND_kbv και οθόνη αφής. Το πρώτο που μπορείτε να βρείτε στο github (σύνδεσμος: https://github.com/prenticedavid/MCUFRIEND_kbv) ή μπορείτε να χρησιμοποιήσετε το αρχείο zip της βιβλιοθήκης που έχω συμπεριλάβει παρακάτω. Το δεύτερο βρίσκεται στον διαχειριστή βιβλιοθήκης Arduino για εγκατάσταση.

Βήμα 1: Συνδέσεις υλικού

Συνδέσεις υλικού
Συνδέσεις υλικού
Συνδέσεις υλικού
Συνδέσεις υλικού
Συνδέσεις υλικού
Συνδέσεις υλικού

Η σύνδεση της ασπίδας οθόνης αφής στο Arduino Uno είναι απλή και γρήγορη. Το μόνο που έχετε να κάνετε είναι να ευθυγραμμίσετε τους χαμηλότερους πείρους στην ασπίδα με τους χαμηλότερους πείρους στο Arduino και να σπρώξετε την ασπίδα στις ακίδες. Ο κορυφαίος πείρος 5V και ο πείρος χωρίς ετικέτα στην πλευρά τροφοδοσίας δεν πρέπει να έχουν καρφίτσες από την ασπίδα, με τις ίδιες παραμέτρους να ισχύουν για τις ακίδες με την ένδειξη SCL και SDA στην άλλη πλευρά του πίνακα. Τώρα, είμαστε έτοιμοι για κωδικοποίηση!

Βήμα 2: Ο Κώδικας: Παγκόσμιοι Ορισμοί & Ρύθμιση

#περιλαμβάνω

MCUFRIEND_kbv tft; // έτσι κι αλλιώς για ασπίδες UNO

#περιλαμβάνω

#define YP A3

#define XM A2

#define YM 9

#define XP 8

TouchScreen ts = Οθόνη αφής (XP, YP, XM, YM, 300);

#define MINPRESSURE 10

Αυτή είναι η αρχή του κώδικα, όπου συμπεριλαμβάνουμε βιβλιοθήκες (MCUFRIEND_kbv & Touchscreen), ορίζουμε τις ακίδες X και Y, ρυθμίζουμε τις παραμέτρους της οθόνης αφής και ορίζουμε την ελάχιστη πίεση που απαιτείται για το Arduino να καταχωρήσει ένα πάτημα χρήστη.

int ID;

int user_selection;

float save_number = 0;

float term1;

int op_num;

float αποτέλεσμα?

int cursorLocX = 5;

int cursorLocY = 20;

Ακριβώς πριν από τη ρύθμιση, πρέπει να ορίσουμε ορισμένες καθολικές μεταβλητές. Το ID σας βοηθά να ενεργοποιήσετε την οθόνη αφής. user_selection περιέχει έναν αριθμό που αντιστοιχεί στο κλειδί που επιλέγει ο χρήστης όταν πατάει την οθόνη αφής. save_number είναι η μεταβλητή που εκτυπώνουμε στην οθόνη μετά από μια καταχώριση χρήστη (περισσότερα για αυτό στον βρόχο). Είναι ένα float ώστε να μπορεί να κρατήσει δεκαδικούς αριθμούς καθώς και ακέραιους αριθμούς. term1 είναι η μεταβλητή στην οποία αποθηκεύεται ο πρώτος αριθμός της εξίσωσης μετά την επιλογή ενός τελεστή. Το op_num αποθηκεύει τον τελεστή ως αριθμό (1 για πρόσθεση, 2 για αφαίρεση, 3 για πολλαπλασιασμό και 4 για διαίρεση). Το αποτέλεσμα είναι η μεταβλητή που εκτυπώνεται στην οθόνη αφού ο χρήστης πατήσει το σύμβολο ισότητας. Είναι επίσης ένα πλωτήρα. Το cursorLocX και το cursorLocY είναι τα σημεία αντιστοίχισης στην οθόνη αφής όπου ο δρομέας έχει οριστεί πολλές φορές (βρίσκεται στη γκρι γραμμή στο επάνω μέρος, αλλιώς γνωστό ως πεδίο αποτελεσμάτων).

void setup () {

tft.reset ();

ID = tft.readID ();

tft.begin (ID);

tft.setRotation (0);

tft.fillScreen (TFT_DARKGREY);

τετράγωνα ()?

αριθμοί ()?

tft.setTextSize (3);

tft.setTextColor (TFT_BLUE, TFT_DARKGREY);

}

Η λειτουργία ρύθμισης περιέχει πρώτα την αρχικοποίηση για την ασπίδα της οθόνης αφής (γραμμές 1-3). Ο προσανατολισμός της ασπίδας ορίζεται χρησιμοποιώντας την εντολή tft.setRotation (), με το 0 να είναι όρθιο. Ολόκληρη η οθόνη είναι χρωματισμένη σε σκούρο γκρι με την εντολή tft.fillScreen (), την οποία θα γράψουμε στην κορυφή (εκτός από το πεδίο αποτελεσμάτων). Οι συναρτήσεις τετραγώνων () και αριθμών () σχεδιάζουν τα τετράγωνα της αριθμομηχανής, χρωματίζουν τα τετράγωνα ασπρόμαυρα με μοτίβο σκακιέρας και γράφουν αριθμούς/τελεστές στα τετράγωνα με μπλε χρώμα. Θα τα πούμε στο επόμενο βήμα. Η εντολή tft.setTextSize () ορίζει το μέγεθος κειμένου του πεδίου αποτελεσμάτων σε 3, το οποίο είναι μια μεσαία γραμματοσειρά. Η εντολή tft.setTextColor () ορίζει το χρώμα κειμένου του πεδίου αποτελεσμάτων σε μπλε, το οποίο γράφεται πάνω από το σκούρο γκρι πεδίο.

Βήμα 3: Ο Κώδικας: Βρόχος

void loop () {numberSelect ();

καθυστέρηση (100)?

αν (user_selection == 16) {

;

}αλλού{

αν (user_selection <10) {

αποθηκευμένος_αριθμός = αποθηκευμένος_αριθμός * 10 + επιλογή_χρήστη

tft.setCursor (cursorLocX, cursorLocY);

tft.print (αποθηκευμένος_αριθμός);

} else if (user_selection> 10) {

εναλλαγή (user_selection) {

περίπτωση 11:

op_num = 1;

tft.setCursor (cursorLocX, cursorLocY);

tft.print ("+");

term1 = αποθηκευμένος_αριθμός?

αποθηκευμένος_αριθμός = 0;

Διακοπή;

περίπτωση 12:

op_num = 2;

tft.setCursor (cursorLocX, cursorLocY);

tft.print ("-");

term1 = αποθηκευμένος_αριθμός?

αποθηκευμένος_αριθμός = 0;

Διακοπή;

περίπτωση 13:

op_num = 3;

tft.setCursor (cursorLocX, cursorLocY);

tft.print ("X");

term1 = αποθηκευμένος_αριθμός?

αποθηκευμένος_αριθμός = 0;

Διακοπή;

περίπτωση 14:

op_num = 4;

tft.setCursor (cursorLocX, cursorLocY);

tft.print ("/");

term1 = αποθηκευμένος_αριθμός?

αποθηκευμένος_αριθμός = 0;

Διακοπή;

περίπτωση 15:

αποθηκευμένος_αριθμός = 0;

όρος1 = 0;

op_num = 0;

tft.setCursor (cursorLocX, cursorLocY);

tft.print ("");

Διακοπή;

}

tft.setCursor (cursorLocX, cursorLocY);

Αυτό είναι πολύ για μάσημα, οπότε θα εξηγήσω τι παραπάνω. Ξεκινάμε καλώντας τη λειτουργία numberSelect (), η οποία εκχωρεί έναν αριθμό σε κάθε τετράγωνο στην οθόνη αφής. Όταν ένας χρήστης πατήσει ένα από αυτά τα τετράγωνα, η συνάρτηση ορίζει τη μεταβλητή user_selection στον αριθμό του τετραγώνου. Η πρώτη εντολή if είναι να εκτελείται μόνο μέσω του βρόχου εάν έχει γίνει έγκυρη επιλογή χρήστη. Αν είναι, η επόμενη αν ερώτηση ρωτά αν ο χρήστης_επιλογή έχει αποθηκευμένο αριθμό μικρότερο από 10 (οι αριθμοί 0-9). Εάν συμβεί, ο αποθηκευμένος_αριθμός πολλαπλασιάζεται με 10 και ο αριθμός στην επιλογή_χρήστη προστίθεται στον αποθηκευμένο_ αριθμό, ο οποίος εκτυπώνεται στο πεδίο αποτελεσμάτων στην οθόνη αφής. Εάν δεν το κάνει, η επόμενη δήλωση αν ρωτά εάν ο χρήστης_επιλογή έχει αποθηκευμένο αριθμό μεγαλύτερο από 10 (οι τελεστέοι αριθμοί: 11 για +, 12 για -, 13 για Χ, 14 για /και 15 για το καθαρό τετράγωνο οθόνης). Μια λειτουργία διακόπτη φροντίζει για κάθε περίπτωση (καθορίζεται από την επιλογή_χρήστη). Στη μεταβλητή op_num δίνεται ένας αριθμός που αντιστοιχεί στον τελεστή που επιλέχθηκε (1 για +, 2 για -, 3 για Χ και 4 για /). Η τιμή του αποθηκευμένου_αριθμού αποθηκεύεται στον μεταβλητό όρο1, έτσι ώστε η μεταβλητή αποθηκευμένου_αριθμού να μπορεί να χρησιμοποιηθεί για το δεύτερο μισό της εξίσωσης. Το σύμβολο τελεστή εκτυπώνεται στην οθόνη μαζί με την εκκαθάριση τυχόν αριθμών στο πεδίο αποτελεσμάτων. Η μόνη εξαίρεση είναι το καθαρό τετράγωνο οθόνης, το οποίο επαναφέρει όλες τις μεταβλητές υπολογισμού και καθαρίζει το πεδίο αποτελεσμάτων από οτιδήποτε υπάρχει σε αυτό.

}αλλού{

διακόπτης (op_num) {

περίπτωση 1:

αποτέλεσμα = term1 + αποθηκευμένος_αριθμός

tft.setCursor (cursorLocX, cursorLocY);

tft.print (διπλό (αποτέλεσμα))

Διακοπή;

περίπτωση 2:

αποτέλεσμα = όρος1 - αποθηκευμένος_αριθμός

tft.setCursor (cursorLocX, cursorLocY);

tft.print (διπλό (αποτέλεσμα))

Διακοπή;

περίπτωση 3:

αποτέλεσμα = όρος1 * αποθηκευμένος_αριθμός

tft.setCursor (cursorLocX, cursorLocY);

tft.print (διπλό (αποτέλεσμα))

Διακοπή;

περίπτωση 4:

αποτέλεσμα = float (term1) / float (αποθηκευμένος_αριθμός)?

tft.setCursor (cursorLocX, cursorLocY);

tft.print (αποτέλεσμα)?

Διακοπή;

}

tft.setCursor (cursorLocX, cursorLocY);

αποθηκευμένος_αριθμός = αποτέλεσμα

όρος1 = 0;

op_num = 0;

καθυστέρηση (1000)?

}

}

}

Το τελευταίο μέρος του βρόχου ασχολείται με το γεγονός του χρήστη που επιλέγει το σύμβολο ίσων (user_selection == 10). Μια άλλη συνάρτηση διακόπτη λειτουργεί μέσω των τεσσάρων μαθηματικών συναρτήσεων (καθορίζεται από το op_num). Η περίθεση προσθήκης (περίπτωση 1) προσθέτει τον όρο 1 και τον αποθηκευμένο αριθμό μαζί και αποθηκεύει τον αριθμό στη μεταβλητή αποτελέσματος. Το αποτέλεσμα εκτυπώνεται στο πεδίο αποτελεσμάτων ως διπλό. Η περίπτωση αφαίρεσης (περίπτωση 2) αφαιρεί τον αποθηκευμένο αριθμό από τον όρο 1 και αποθηκεύει τον αριθμό στη μεταβλητή αποτελέσματος. Το αποτέλεσμα εκτυπώνεται στο πεδίο αποτελεσμάτων ως διπλό. Η περίπτωση πολλαπλασιασμού (περίπτωση 3) πολλαπλασιάζει τον όρο 1 με αποθηκευμένο αριθμό και αποθηκεύει τον αριθμό στη μεταβλητή αποτελέσματος. Το αποτέλεσμα εκτυπώνεται στο πεδίο αποτελεσμάτων ως διπλό. Η περίπτωση διαίρεσης (περίπτωση 4) διαιρεί τον όρο1 με αποθηκευμένο_αριθμό μαζί και αποθηκεύει τον αριθμό στη μεταβλητή αποτελέσματος. Το αποτέλεσμα εκτυπώνεται στο πεδίο αποτελεσμάτων ως float (επειδή οι απαντήσεις διαίρεσης μπορεί να είναι δεκαδικοί αριθμοί). Μετά την εκτύπωση ενός αριθμού, τελεστή ή αποτελέσματος στην οθόνη, ο δρομέας επαναφέρεται, ο αποθηκευμένος αριθμός έχει οριστεί στο προηγούμενο αποτέλεσμα και ο όρος1 & op_num επαναφέρονται.

Λίγες σημειώσεις: ο χρήστης δεν μπορεί να εισαγάγει δεκαδικούς αριθμούς στην αριθμομηχανή λόγω έλλειψης τετραγώνου δεκαδικής υποδιαστολής. Επίσης, ο χρήστης μπορεί να κάνει μόνο μία εξίσωση τη φορά. Δεν μπορείτε να υπολογίσετε ένα αποτέλεσμα και στη συνέχεια να προσθέσετε/αφαιρέσετε/πολλαπλασιάσετε/διαιρέσετε αυτό το αποτέλεσμα. Στη λειτουργία numberSelect (), υπάρχει μια λειτουργία που καθαρίζει την οθόνη μετά την εκτύπωση ενός αποτελέσματος εάν ένας χρήστης έχει πατήσει ένα άλλο τετράγωνο.

Βήμα 4: Η συνάρτηση Κώδικας: Τετράγωνα

κενά τετράγωνα () {

// ασπρόμαυρα τετράγωνα εναλλάσσονται σε κάθε σειρά και η πρώτη και η τρίτη σειρά έχουν ένα αντίθετο μοτίβο από τη δεύτερη και την τέταρτη σειρά

tft.fillRect (0, 60, 60, 65, TFT_BLACK); // ξεκινάει η πρώτη σειρά τετραγώνων, μαύρο σε λευκό tft.fillRect (60, 60, 60, 65, TFT_WHITE);

tft.fillRect (120, 60, 60, 65, TFT_BLACK);

tft.fillRect (180, 60, 60, 65, TFT_WHITE); // τελειώνει η πρώτη σειρά τετραγώνων

tft.fillRect (0, 125, 60, 65, TFT_WHITE); // ξεκινάει η δεύτερη σειρά τετραγώνων, από λευκό σε μαύρο tft.fillRect (60, 125, 60, 65, TFT_BLACK)

tft.fillRect (120, 125, 60, 65, TFT_WHITE);

tft.fillRect (180, 125, 60, 65, TFT_BLACK); // τελειώνει η δεύτερη σειρά τετραγώνων

tft.fillRect (0, 190, 60, 65, TFT_BLACK); // ξεκινάει η τρίτη σειρά τετραγώνων, μαύρο σε λευκό tft.fillRect (60, 190, 60, 65, TFT_WHITE);

tft.fillRect (120, 190, 60, 65, TFT_BLACK);

tft.fillRect (180, 190, 60, 65, TFT_WHITE); // τελειώνει η τρίτη σειρά τετραγώνων

tft.fillRect (0, 255, 60, 65, TFT_WHITE); // ξεκινάει η τέταρτη σειρά τετραγώνων, από λευκό σε μαύρο tft.fillRect (60, 255, 60, 65, TFT_BLACK)

tft.fillRect (120, 255, 60, 65, TFT_WHITE);

tft.fillRect (180, 255, 60, 65, TFT_BLACK); // τελειώνει η τέταρτη σειρά τετραγώνων

}

Η συνάρτηση των τετραγώνων () είναι αρκετά απλή. Η εντολή tft.fillRect (X1, Y1, X2, Y2, TFT_COLOR) σχεδιάζει ένα ορθογώνιο σύμφωνα με τις παραμέτρους που μεταβιβάζονται σε αυτό, οι οποίες είναι οι πρώτες θέσεις x και y, οι δεύτερες θέσεις x και y και το χρώμα με το οποίο είναι γεμάτο το ορθογώνιο Το Αυτή η συνάρτηση σχεδιάζει και τις τέσσερις σειρές τετραγώνων (τεχνικά ορθογώνια) και γεμίζει κάθε τετράγωνο με το χρώμα που του έχει περάσει.

Βήμα 5: Η συνάρτηση Κωδικός: Αριθμοί

άκυροι αριθμοί () {

tft.setTextColor (TFT_BLUE); // ορίζει τον αριθμό/χρώμα χαρακτήρων σε μπλε

tft.setTextSize (5); // ορίζει αριθμό/μέγεθος χαρακτήρα σε 5

tft.setCursor (18, 75); // ορίζει δρομέα για την πρώτη σειρά αριθμών/χαρακτήρων

tft.print ("7 8 9 /"); // εκτυπώνει την πρώτη σειρά αριθμών/χαρακτήρων

tft.setCursor (18, 140); // ορίζει δρομέα για τη δεύτερη σειρά αριθμών/χαρακτήρων

tft.print ("4 5 6 X"); // εκτυπώνει τη δεύτερη σειρά αριθμών/χαρακτήρων

tft.setCursor (18, 205); // ορίζει δρομέα για την τρίτη σειρά αριθμών/χαρακτήρων

tft.print ("1 2 3 -"); // εκτυπώνει τρίτη σειρά αριθμών/χαρακτήρων

tft.setCursor (18, 270); // ορίζει δρομέα για την τέταρτη γραμμή αριθμών/χαρακτήρων

tft.print ("C 0 = +"); // εκτυπώνει την τέταρτη σειρά αριθμών/χαρακτήρων

}

Η συνάρτηση αριθμών () είναι επίσης απλή. Οι δύο πρώτες γραμμές ορίζουν το μέγεθος του κειμένου μεγαλύτερο και το χρώμα σε μπλε. Η εντολή tft.setCursor () ορίζει τον κέρσορα στη θέση σε κάθε γραμμή από την οποία ξεκινά η γραφή των αριθμών. Στη συνέχεια, η εντολή tft.print () εκτυπώνει τους αριθμούς/χαρακτήρες στα τετράγωνα.

Βήμα 6: Ο κωδικός: NumberSelect Function

void numberSelect () {

TSPoint p = ts.getPoint ();

pinMode (XM, OUTPUT);

pinMode (YP, OUTPUT);

εάν (p.z> MINPRESSURE) {

p.x = χάρτης (p.x, 250, 845, 0, 239);

p.y = χάρτης (p.y, 245, 860, 0, 319);

αν (αποτέλεσμα! = 0) {

αποτέλεσμα = 0;

αποθηκευμένος_αριθμός = 0;

tft.print ("CLEAR VALUES");

καθυστέρηση (500)?

tft.setCursor (cursorLocX, cursorLocY);

tft.print ("");

tft.setCursor (cursorLocX, cursorLocY);

}

Για να ξεκινήσει η λειτουργία numberSelect (), ζητάμε εισαγωγή χρήστη από την οθόνη αφής με την εντολή ts.getPoint (). Μόλις συλλεχθούν αυτά τα δεδομένα, ελέγχουμε αν έχει ξεπεραστεί η ελάχιστη πίεση (ή, με άλλα λόγια, εάν ο χρήστης έχει πατήσει κάπου στην οθόνη αφής). Εάν είναι, οι συντεταγμένες x και y αντιστοιχίζονται από καρτεσιανές συντεταγμένες σε συντεταγμένες που σχετίζονται με την οθόνη αφής. (0, 0) είναι η επάνω αριστερή γωνία της οθόνης αφής, με τον άξονα x να περνά κατά μήκος και τον άξονα y να κατεβαίνει. Το επόμενο μέρος ελέγχει αν υπάρχει αριθμός που έχει αποθηκευτεί στο αποτέλεσμα. Εάν υπάρχει, το αποτέλεσμα και ο αποθηκευμένος_αριθμός επαναφέρονται στο 0. Το μήνυμα "CLEAR VALUES" εκτυπώνεται στο πεδίο αποτελεσμάτων και η οθόνη διαγράφεται με τον κέρσορα πίσω στην αρχική του θέση.

if (σελ.y 60) {// πρώτη σειρά τετραγώνων

αν (σελ.χ <60)

user_selection = 7;

αλλιώς αν (σελ.χ <120)

user_selection = 8;

αλλιώς αν (σελ.χ <180)

user_selection = 9;

αλλιώς user_selection = 14;

} else if (σελ. 125) {// δεύτερη σειρά τετραγώνων

αν (σελ.χ <60)

user_selection = 4;

αλλιώς αν (σελ.χ <120)

user_selection = 5;

αλλιώς αν (σελ.χ <180)

user_selection = 6;

else user_selection = 13;

} else if (σελ.y 190) {// τρίτη σειρά τετραγώνων

αν (σελ.χ <60)

user_selection = 1;

αλλιώς αν (σελ.χ <120)

user_selection = 2;

αλλιώς αν (σελ.χ <180)

user_selection = 3;

αλλιώς user_selection = 12;

} else if (p.y> 255) {// τέταρτη σειρά τετραγώνων

αν (σελ.χ <60)

user_selection = 15;

αλλιώς αν (σελ.χ <120)

user_selection = 0;

αλλιώς αν (σελ.χ <180)

user_selection = 10;

else user_selection = 11;

}

}αλλού{

user_selection = 16; // user_selection έχει οριστεί σε 16 (τίποτα μεταβλητό)

}

}

Αυτό είναι το τμήμα που καθορίζει ποιο κουμπί έχει επιλεγεί. Ξεκινώντας από την επάνω σειρά τετραγώνων και τελειώνοντας με την κάτω σειρά, το Arduino ψάχνει για το σημείο στο οποίο ήταν πραγματικά πατημένη η οθόνη. Στη συνέχεια, εκχωρεί έναν αριθμό στο τετράγωνο και αποθηκεύει αυτόν τον αριθμό στην επιλογή χρήστη. Οι αριθμοί 0-9 αντιστοιχούν στα τετράγωνα αριθμών, οι αριθμοί 11-15 αντιστοιχούν στα τετράγωνα τελεστών και το καθαρό τετράγωνο και ο αριθμός 10 αντιστοιχεί στο τετράγωνο συμβόλων ίσων. Εάν δεν έχει επιλεγεί κανένα τετράγωνο, τότε το user_selection έχει οριστεί σε 16, το οποίο θα κάνει τον βρόχο να ξεκινήσει ξανά (δείτε τη λειτουργία βρόχου).

Βήμα 7: Απολαύστε το Ολοκληρωμένο Έργο σας

Ορίστε το! Έχετε τώρα μια αριθμομηχανή οθόνης αφής που μπορεί να κάνει προσθήκη, αφαίρεση, πολλαπλασιασμό και διαίρεση. Αυτό το έργο άλλαξε ολόκληρο τον τρόπο που νόμιζα ότι μια αριθμομηχανή δούλευε. Καθώς δούλευα σε αυτό το έργο, θυμάμαι να λέω στον εκπαιδευτή μου στην τάξη: "Δεν θα κοιτάξω ποτέ ξανά τον υπολογιστή με τον ίδιο τρόπο!" Οι λειτουργίες που εσείς ως χρήστης πιστεύετε ότι είναι εύκολες είναι κάπως δύσκολες όταν βρίσκεστε πίσω από τον υπολογιστή προσπαθώντας να μιμηθείτε την ιδέα σας. Ελπίζω να σας άρεσε το έργο και ελπίζω να έχει αλλάξει και η νοοτροπία σας για το πώς λειτουργεί η αριθμομηχανή!

Ακολουθεί ολόκληρος ο κωδικός για τη διευκόλυνσή σας. Είναι γεμάτο σχόλια, οπότε αν έχετε προβλήματα θα πρέπει να σας δείξουν τι κάνει κάθε γραμμή.

Συνιστάται: