INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
In hierdie handleiding bou ons ons eie sakrekenaar met Arduino. Die waardes kan via 'n klavier (4 × 4 klavier) gestuur word, en die resultaat kan op 'n LCD -skerm besigtig word. Hierdie sakrekenaar kan eenvoudige bewerkings soos optelling, aftrekking, vermenigvuldiging en deling met heelgetalle uitvoer. Maar sodra u die konsep verstaan, kan u selfs wetenskaplike funksies implementeer met die ingeboude funksies van Arduino.
Voorrade
Arduino Uno
16 × 2 LCD -skerm
4 × 4 Toetsenbord
Broodbord
Springkabels
Arduino kabel
Stap 1: Skema's
Stap 2: Installasie van biblioteek:
Soos vroeër gesê, gaan ons 'n LCD en bedieningspaneel met Arduino koppel met behulp van biblioteke. Laat ons hulle dus eers by ons Arduino IDE voeg. Die biblioteek vir LCD is standaard reeds by u Arduino ingesluit, sodat ons ons nie daaroor hoef te bekommer nie. Vir die sleutelbordbiblioteek (klik op die skakel om dit van Github af te laai). U kry 'n zip -lêer en voeg hierdie lib by Arduino by Sketch -> Include Library -> Voeg. ZIP -lêer by en wys die plek na die afgelaaide lêer. As ons klaar is, is ons gereed vir programmering.
Stap 3: Bronkode:
/*
© Techtronic Harsh
*/
#insluit
#insluit
LiquidCrystal lcd (0, 1, 2, 3, 4, 5);
const byte RYDE = 4; const byte COLS = 4;
char sleutels [ROWS] [COLS] = {
{'1', '2', '3', '+'}, {'4', '5', '6', '-'}, {'7', '8', '9', ' *'}, {' C ',' 0 ',' = ','/'}}; byte rowPins [ROWS] = {13, 12, 11, 10}; byte colPins [COLS] = {9, 8, 7, 6};
Toetsenbord myKeypad = Keypad (makeKeymap (sleutels), rowPins, colPins, ROWS, COLS);
boolean presentValue = false;
boolean next = false; boolean final = false; String num1, num2; int antwoord; char op;
leemte opstelling ()
{lcd.begin (16, 2); lcd.setCursor (0, 0); lcd.print ("Techtronic Harsh"); lcd.setCursor (0, 1); lcd.print ("Sakrekenaar"); vertraging (3000); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Like En"); lcd.setCursor (0, 1); lcd.print ("teken ons in"); vertraging (3000); lcd.clear (); }
leemte -lus () {
char sleutel = myKeypad.getKey ();
if (sleutel! = NO_KEY && (sleutel == '1' || sleutel == '2' || sleutel == '3' || sleutel == '4' || sleutel == '5' || sleutel = = '6' || sleutel == '7' || sleutel == '8' || sleutel == '9' || sleutel == '0'))
{if (presentValue! = true) {num1 = num1 + sleutel; int numLength = num1.length (); lcd.setCursor (15 - numLength, 0); // om 'n wit spasie aan te pas vir operateur lcd.print (num1); } anders {num2 = num2 + sleutel; int numLength = num2.length (); lcd.setCursor (15 - numLength, 1); lcd.print (num2); finale = waar; }}
anders as (presentValue == false && sleutel! = NO_KEY && (sleutel == '/' || sleutel == '*' || sleutel == '-' || sleutel == '+'))
{if (presentValue == false) {presentValue = true; op = sleutel; lcd.setCursor (15, 0); lcd.print (op); }}
anders as (final == true && key! = NO_KEY && key == '=') {
as (op == ' +') {antwoord = num1.toInt () + num2.toInt (); } anders as (op == ' -') {antwoord = num1.toInt () - num2.toInt (); } anders as (op == ' *') {antwoord = num1.toInt () * num2.toInt (); } anders as (op == ' /') {antwoord = num1.toInt () / num2.toInt (); } lcd.clear (); lcd.setCursor (15, 0); lcd.autoscroll (); lcd.print (antwoord); lcd.noAutoscroll (); } anders as (sleutel! = NO_KEY && sleutel == 'C') {lcd.clear (); presentValue = vals; finale = vals; num1 = ""; num2 = ""; antwoord = 0; op = ''; }}
/*
© Techtronic Harsh
*/
Stap 4: Werk:
Maak die verbindings volgens die stroomdiagram en laai die kode op. As dit fout toon, maak seker dat u die biblioteek bygevoeg het volgens die instruksies hierbo.
Karakter op die klavier en veronderstelling:
- “A” - Byvoeging (+)
- “B” - Aftrekking (-)
- “C” - Vermenigvuldiging (*)
- “D” - Afdeling (/)
- “*” - Duidelik (C)
- “#” - Gelyk (=)