Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Assalomu alaykum bolalar, biz Arduino yordamida asosiy hisob -kitoblarni bajaradigan kalkulyator tayyorlaymiz. Shunday qilib, biz asosan 4x4 klaviaturadan ma'lumotlarni olamiz va ma'lumotlarni 16x2 lcd displeyda chop etamiz va arduino hisob -kitoblarni amalga oshiradi.
1 -qadam: Sizga kerak bo'lgan narsalar
Bu ko'rsatmalar uchun bizga quyidagilar kerak bo'ladi: Arduino Uno (har qanday versiya ishlaydi)
16 × 2 LCD displey
4 × 4 klaviatura 9V akkumulyator paneliBarmoqlarni ulash
2 -qadam: ulanishlar
Arduino Kalkulyator loyihasining to'liq sxemasi yuqorida keltirilgan. O'chirish sxemasida ko'rsatilgan +5V va erga ulanishni Arduino -ning 5V va topraklama pinidan olish mumkin. Arduino-ni noutbukdan yoki shahar uyasi orqali 12V adapter yoki 9V batareya yordamida quvvatlantirish mumkin, biz Arduino-da LCD-ni 4-bitli rejimda ishlaymiz, shuning uchun LCD-ning oxirgi to'rtta ma'lumoti Arduino-ga ulangan. Klaviaturada yuqoridagi rasmda ko'rsatilgandek, pin 7 dan pin 7 gacha ulanishi kerak bo'lgan 8 ta chiqish pimi bo'ladi, agar Arduino -ning ba'zi platalari 0 va pin1 -ga ulangan biror narsa bo'lsa, dasturni yuklashda xato ko'rsatishi mumkin. dasturni yuklashda klaviatura.
3 -qadam: kod
Quyidagi kodni nusxa ko'chiring va unga arduino -ni yuklang:/ * * Arduino klaviatura kalkulyatori dasturi */#"LiquidCrystal.h" ni o'z ichiga oladi // https://www.arduino.cc/en/Reference/LiquidCrystal# dan LCD uchun sarlavha fayli. "Keypad.h" ni o'z ichiga oladi // Klaviatura uchun sarlavha fayli https://github.com/Chris--A/Keypadconst baytidan ROWS = 4; // To'rt qatorli bayt COLS = 4; // Uchta ustun // Klaviatura tugmachalarini belgilang [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {'*',' 0 ','#',' A '}}; bayt qatorlari [ROWS] = {0, 1, 2, 3}; // ROW0, ROW1, ROW2 va ROW3 klaviaturasini ushbu Arduino pinlariga ulang.byte colPins [COLS] = {4, 5, 6, 7}; // COL0, COL1 va COL2 klaviaturasini ushbu Arduino pinlariga ulang. Keypad kpd = Klaviatura (makeKeymap (tugmalar), rowPins, colPins, ROWS, COLS); // Klaviatura panelini yarating int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // LCD ulangan pinlarLiquidCrystal lcd (rs, en, d4, d5, d6, d7); uzun Num1, Num2, Raqam; char tugmasi, harakat; boolean result = false; void setup () {lcd.begin (16, 2); // Biz 16*2 LCD displeydan foydalanmoqdamiz lcd.print ("DIY kalkulyatori"); // lcd.setCursor kirish xabarini ko'rsatish (0, 1); // kursorni 0 -ustun, 1 -satr kechiktirishi (2000); // displey ma'lumoti ko'rsatilishini kuting lcd.clear (); // Keyin tozalang} void loop () {key = kpd.getKey (); // bosilgan kalit qiymatini xarifda saqlash (kalit! = NO_KEY) DetectButtons (); if (natija == rost) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // Keyin tozalang, agar (key == '*') // Bekor qilish tugmasi bosilsa {Serial.println ("Tugmani bekor qilish"); Raqam = Num1 = Num2 = 0; result = false;} if (key == '1') // Agar 1 -tugma bosilsa {Serial.println ("1 -tugma"); agar (Raqam == 0) Raqam = 1; else Raqam = (Raqam*10) + 1; // ikki marta bosildi} if (key == '4') // Agar 4 -tugma bosilsa {Serial.println ("Button 4"); agar (Raqam == 0) Raqam = 4; else Raqam = (Raqam*10) + 4; // ikki marta bosildi} if (key == '7') // Agar 7 -tugma bosilsa {Serial.println ("7 -tugma"); agar (Raqam == 0) Raqam = 7; else Raqam = (Raqam*10) + 7; // ikki marta bosildi} if (key == '0') {Serial.println ("Button 0"); // 0 tugmasi bosiladi, agar (Raqam == 0) Raqam = 0; else Raqam = (Raqam*10) + 0; // ikki marta bosildi} if (key == '2') // 2 -tugma bosilsa {Serial.println ("2 -tugma"); agar (Raqam == 0) Raqam = 2; else Raqam = (Raqam*10) + 2; // ikki marta bosildi} if (key == '5') {Serial.println ("5 -tugma"); agar (Raqam == 0) Raqam = 5; else Raqam = (Raqam*10) + 5; // ikki marta bosildi} if (key == '8') {Serial.println ("8 -tugma"); agar (Raqam == 0) Raqam = 8; else Raqam = (Raqam*10) + 8; // ikki marta bosildi} if (key == '#') {Serial.println ("Teng tugma"); Num2 = Raqam; natija = rost; } if (key == '3') {Serial.println ("3 -tugma"); agar (Raqam == 0) Raqam = 3; else Raqam = (Raqam*10) + 3; // ikki marta bosildi} if (key == '6') {Serial.println ("Button 6"); agar (Raqam == 0) Raqam = 6; else Raqam = (Raqam*10) + 6; // ikki marta bosildi} if (key == '9') {Serial.println ("9 -tugma"); agar (Raqam == 0) Raqam = 9; else Raqam = (Raqam*10) + 9; // ikki marta bosildi} agar (tugmachasi == 'A' || kalit == 'B' || kalit == 'C' || kalit == 'D') // 4 -ustunda tugmalarni aniqlash {Num1 = Raqam; Raqam = 0; if (key == 'A') {Serial.println ("Qo'shish"); harakat = '+';} if (key == 'B') {Serial.println ("Chiqarish"); harakat = '-'; } if (key == 'C') {Serial.println ("Ko'paytirish"); harakat = '*';} if (key == 'D') {Serial.println ("Devesion"); harakat = '/';} kechiktirish (100); }}
void 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); // kursorni 0 -ustun, 1 -qator lcd.print (Num1) ga o'rnating; lcd.print (harakat); lcd.print (Num2); agar (natija == rost) {lcd.print ("="); lcd.print (Raqam);} // Natijani ko'rsatish lcd.setCursor (0, 1); // kursorni 0 -ustun, 1 -qator lcd.print (Raqam) ga o'rnating; // Natijani ko'rsatish}
4 -qadam: Kalkulyator chiqishi
Shunday qilib, biz ulanishlarni yakunladik va kodni arduino -ga yukladik va uning quvvatini o'chirib qo'yishimiz va ba'zi hisob -kitoblarni bajarishimiz kerak va men ko'rib turganingizdek, men klaviatura yordamida hisob -kitob qilyapman va siz natijalarni lcd -da ko'rishingiz mumkin. Shunday qilib, arduino yordamida o'zingizning shaxsiy kalkulyatoringizni yasang.