Სარჩევი:

Arduino კალკულატორი: 6 ნაბიჯი
Arduino კალკულატორი: 6 ნაბიჯი

ვიდეო: Arduino კალკულატორი: 6 ნაბიჯი

ვიდეო: Arduino კალკულატორი: 6 ნაბიჯი
ვიდეო: LDmicro 6: Arduino nano Breadboard Circuit (Microcontroller PLC Ladder Programming with LDmicro) 2024, ნოემბერი
Anonim
არდუინოს კალკულატორი
არდუინოს კალკულატორი

პროგრამირება ყოველთვის სახალისოა და Arduino არის შესანიშნავი პლატფორმა, თუ თქვენ ახლახან იწყებთ ჩაშენებულ პროგრამირებას. ამ გაკვეთილში ჩვენ ავაშენებთ ჩვენს საკუთარ კალკულატორს Arduino– ით. ღირებულებების გაგზავნა შესაძლებელია კლავიატურის საშუალებით (4 × 4 კლავიატურა) და შედეგი შეიძლება ნახოთ LCD ეკრანზე (16 × 2 წერტილოვანი მატრიცა). ამ კალკულატორს შეუძლია შეასრულოს მარტივი ოპერაციები, როგორიცაა შეკრება, გამოკლება, გამრავლება და გაყოფა მთელი რიცხვებით. კონცეფციის გაგების შემდეგ თქვენ შეგიძლიათ განახორციელოთ თუნდაც მეცნიერული ფუნქციები Arduino– ს ჩაშენებული ფუნქციებით. ამ პროექტის დასასრულს თქვენ გეცოდინებათ როგორ გამოიყენოთ 16x2 LCD და კლავიატურა Arduino– სთან ერთად და ასევე რამდენად ადვილია მათთვის ადვილად პროგრამირება ხელმისაწვდომი ბიბლიოთეკები. თქვენ ასევე გესმით, თუ როგორ უნდა დაპროგრამდეს თქვენი Arduino კონკრეტული დავალების შესასრულებლად.

ნაბიჯი 1: საჭირო ნივთები

Arduino Uno (ნებისმიერი ვერსია იმუშავებს) 16 × 2 LCD დისპლეი 4 × 4 კლავიატურა 9V ბატარეა დაფა და დამაკავშირებელი მავთულები

ნაბიჯი 2: სქემის დიაგრამა

Წრიული დიაგრამა
Წრიული დიაგრამა

ნაბიჯი 3: Arduino კალკულატორის პროგრამა

ამ პროექტის ბოლოს მოცემულია Arduino– ს სრული პროგრამა. კოდი დაყოფილია პატარა მნიშვნელოვან ნაწილებად და განმარტებულია ქვემოთ. როგორც უკვე აღვნიშნეთ, ჩვენ ვაპირებთ ბიბლიოთეკების გამოყენებით Arduino– სთან LCD და კლავიატურის ინტერფეისს. მოდით, პირველ რიგში დავამატოთ ისინი ჩვენს Arduino IDE- ში. LCD– ის ბიბლიოთეკა უკვე ნაგულისხმევია თქვენს Arduino– ში, ასე რომ ჩვენ არ უნდა ვიდარდოთ ამაზე. კლავიატურის ბიბლიოთეკისთვის დააჭირეთ ბმულს, რომ გადმოწეროთ Github– დან. თქვენ მიიღებთ ZIP ფაილს, შემდეგ დაამატეთ ეს lib Arduino– ს Sketch– ით -> ბიბლიოთეკის ჩართვა ->. ZIP ფაილის დამატება და მიუთითეთ მდებარეობა ამ გადმოწერილ ფაილზე. დასრულების შემდეგ ჩვენ ყველანი ვართ დაპროგრამებული. მიუხედავად იმისა, რომ ჩვენ გამოვიყენეთ ბიბლიოთეკა კლავიატურის გამოყენებისათვის, ჩვენ უნდა აღვნიშნოთ რამდენიმე დეტალი (ნაჩვენებია ქვემოთ) Arduino– ს კლავიატურის შესახებ. ცვლადი ROWS და COLS გეტყვით რამდენი სტრიქონი და სვეტი აქვს ჩვენს კლავიატურას და კლავიატურის რუქაზე ნაჩვენებია კლავიშებზე კლავიშების თანმიმდევრობა. კლავიატურა, რომელსაც მე ვიყენებ ამ პროექტში, გამოიყურება ქვემოთ, როგორც გასაღები რუქაზე ასევე იგივეს. შემდგომში ჩვენ აღვნიშნეთ, რომელ პინებს უკავშირდება კლავიატურა ცვლადი მასივის rowPins და colPins გამოყენებით. კონსტანტირება byte ROWS = 4; // ოთხი რიგის კონსტრუქციის ბაიტი COLS = 4; // სამი სვეტი // განსაზღვრა Keymapchar გასაღებები [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {'*',' 0 ','#',' D '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // შეუერთეთ კლავიატურა ROW0, ROW1, ROW2 და ROW3 ამ Arduino ქინძისთავებს. Byte colPins [COLS] = {4, 5, 6, 7}; // დაუკავშირეთ კლავიატურა COL0, COL1 და COL2 ამ Arduino ქინძისთავებს. მას შემდეგ რაც აღვნიშნეთ რა ტიპის კლავიატურას ვიყენებთ და როგორ არის დაკავშირებული, ჩვენ შეგვიძლია შევქმნათ კლავიატურა ამ დეტალების გამოყენებით ქვემოთ მოცემული ხაზის გამოყენებით Keypad kpd = Keypad (makeKeymap (გასაღებები), rowPins, colPins, ROWS, COLS); // შექმენით კლავიატურა ანალოგიურად ჩვენ ასევე უნდა გითხრათ Arduino– ს რომელ პინებს უკავშირდება LCD. ჩვენი სქემის დიაგრამის მიხედვით განმარტებები იქნება ქვემოთ კონსტრუქცია int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // ქინძისთავები, რომელთანაც LCD არის დაკავშირებული LiquidCrystal LCD (rs, en, d4, d5, d6, d7); // შექმენით LCD- ის დაყენების ფუნქციის შიგნით, ჩვენ უბრალოდ ვაჩვენებთ პროექტის სახელს და შემდეგ ვაგრძელებთ მარყუჟს, სადაც მდებარეობს მთავარი პროექტი. ძირითადად, ჩვენ უნდა შევამოწმოთ, არის თუ არა რაიმე აკრეფილი კლავიატურაზე, თუ აკრეფილი, ჩვენ უნდა ვაღიაროთ რას აკრეფენ და შემდეგ გარდაქმნიან მას ცვლადად როდესაც "=" დაჭერილია ჩვენ უნდა გამოვთვალოთ შედეგი და შემდეგ საბოლოოდ გამოვაჩინოთ ის LCD- ზე. ეს არის ზუსტად ის, რაც კეთდება მარყუჟის ფუნქციის შიგნით, როგორც ნაჩვენებია ქვემოთ keykey = kpd.getKey (); // დაჭერილი გასაღების მნიშვნელობის შენახვა შარიფში (გასაღები! = NO_KEY) DetectButtons (); თუ (შედეგი == ჭეშმარიტი) CalculateResult (); DisplayResult (); ის, რაც ხდება თითოეული ფუნქციის შიგნით, განმარტებულია კომენტარების ხაზების გამოყენებით, გაიარეთ ქვემოთ მოყვანილი სრული კოდი, დაათვალიერეთ ის, რომ გაიგოთ როგორ მუშაობს სინამდვილეში. თუ თქვენ გაქვთ რაიმე ეჭვი კონკრეტულ ხაზზე, მოგერიდებათ გამოიყენოთ კომენტარების განყოფილება ან ფორუმები.

ნაბიჯი 4:

ნაბიჯი 5: Arduino კალკულატორის მუშაობა

Arduino კალკულატორის მუშაობა
Arduino კალკულატორის მუშაობა

გააკეთეთ კავშირები სქემის დიაგრამის მიხედვით და ატვირთეთ კოდი ქვემოთ. თუ ის აჩვენებს შეცდომას, დარწმუნდით, რომ დაამატეთ ბიბლიოთეკა ზემოთ მოცემული ინსტრუქციის შესაბამისად. თქვენ ასევე შეგიძლიათ სცადოთ სიმულაცია იმის შესამოწმებლად, არის თუ არა პრობლემა თქვენს აპარატურაში. თუ ყველაფერი კეთდება ისე, როგორც უნდა ყოფილიყო, მაშინ თქვენი აპარატურა ასე გამოიყურება ქვემოთ LCD– ით, რომელიც აჩვენებს Arduino კალკულატორს 4x4 კლავიატურის მოქმედებაში, ვინაიდან აქ გამოყენებულ კლავიატურას არ აქვს შესაბამისი ნიშნები, მე ვივარაუდე, რომ ანბანი ოპერატორები არიან ქვემოთ ჩამოთვლილი სიმბოლო კლავიატურაზე ვარაუდობენ, რომ არის "A" დამატება (+) "B" გამოკლება (-) "C" გამრავლება (*) "D" განყოფილება (/) "*" წმინდა (C) "#" უდრის (=) შეგიძლია გამოიყენეთ მარკერი იმის დასაწერად, თუ რას წარმოადგენს თითოეული ღილაკი სინამდვილეში. ამის გაკეთებით, თქვენ შეგიძლიათ პირდაპირ დაიწყოთ კალკულატორის გამოყენება. აკრიფეთ ნომერი და გამოჩნდება მეორე ხაზზე დააჭირეთ ოპერანდს და ჩაწერეთ თქვენი მეორე ნომერი ბოლოს დააჭირეთ##ღილაკს თქვენი შედეგის მისაღებად. თქვენ ასევე შეგიძლიათ სცადოთ ამ Touchscreen დაფუძნებული Arduino კალკულატორი.

ნაბიჯი 6: კოდი

/ * * Arduino Keypad კალკულატორი პროგრამა */#მოიცავს // სათაურის ფაილი LCD– დან https://www.arduino.cc/en/Reference/LiquidCrystal#include // სათაურის ფაილი კლავიატურისთვის https://github.com/ კრის-A/Keypadconst byte ROWS = 4; // ოთხი რიგის კონსტრუქციის ბაიტი COLS = 4; // სამი სვეტი // განსაზღვრა Keymapchar გასაღებები [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {'*',' 0 ','#',' A '}}; ბაიტი rowPins [ROWS] = {0, 1, 2, 3}; // შეუერთეთ კლავიატურა ROW0, ROW1, ROW2 და ROW3 ამ Arduino ქინძისთავებს. Byte colPins [COLS] = {4, 5, 6, 7}; // დააკავშირეთ კლავიატურა COL0, COL1 და COL2 ამ Arduino ქინძისთავებთან. Keypad kpd = კლავიატურა (makeKeymap (გასაღებები), rowPins, colPins, ROWS, COLS); // შექმნა Keypadconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // ქინძისთავები, რომელთანაც LCD არის დაკავშირებული LiquidCrystal LCD (rs, en, d4, d5, d6, d7); გრძელი Num1, Num2, ნომერი; char გასაღები, მოქმედება; ლოგიკური შედეგი = ყალბი; void setup () {lcd.begin (16, 2); // ჩვენ ვიყენებთ 16*2 LCD ეკრანს lcd.print ("DIY კალკულატორი"); // ჩვენების ჩვენება lcd.setCursor (0, 1); // კურსორის დაყენება 0 სვეტზე, სტრიქონი 1 lcd.print ("-CircuitDigest"); // ინტრო შეტყობინების დაგვიანების ჩვენება (2000); // დაელოდეთ ჩვენებას ინფორმაციის ჩვენებისათვის lcd.clear (); // შემდეგ გაასუფთავეთ} void loop () {key = kpd.getKey (); // დაჭერილი გასაღების მნიშვნელობის შენახვა შარიფში (გასაღები! = NO_KEY) DetectButtons (); თუ (შედეგი == ჭეშმარიტი) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // შემდეგ გაასუფთავეთ თუ (გასაღები == '*') // თუ გაუქმების ღილაკზეა დაჭერილი {Serial.println ("ღილაკის გაუქმება"); ნომერი = Num1 = Num2 = 0; შედეგი = ყალბი;} თუ (გასაღები == '1') // თუ ღილაკზე 1 დაჭერილია {Serial.println ("ღილაკი 1"); თუ (რიცხვი == 0) ნომერი = 1; else ნომერი = (ნომერი*10) + 1; // ორჯერ დაჭერილი} თუ (გასაღები == '4') // თუ 4 ღილაკზე დაჭერილია {Serial.println ("ღილაკი 4"); თუ (რიცხვი == 0) ნომერი = 4; else ნომერი = (ნომერი*10) + 4; // ორჯერ დაჭერილი} თუ (გასაღები == '7') // თუ ღილაკზე 7 დაჭერილია {Serial.println ("ღილაკი 7"); თუ (რიცხვი == 0) ნომერი = 7; else ნომერი = (ნომერი*10) + 7; // ორჯერ დაჭერილი} if (გასაღები == '0') {Serial.println ("ღილაკი 0"); // ღილაკი 0 დაჭერილია თუ (რიცხვი == 0) ნომერი = 0; else ნომერი = (ნომერი*10) + 0; // ორჯერ დაჭერილი} თუ (გასაღები == '2') // ღილაკზე 2 დაჭერილია {Serial.println ("ღილაკი 2"); თუ (რიცხვი == 0) ნომერი = 2; else ნომერი = (ნომერი*10) + 2; // ორჯერ დაჭერილი} if (გასაღები == '5') {Serial.println ("ღილაკი 5"); თუ (რიცხვი == 0) ნომერი = 5; else ნომერი = (ნომერი*10) + 5; // ორჯერ დაჭერილი} if (გასაღები == '8') {Serial.println ("ღილაკი 8"); თუ (რიცხვი == 0) ნომერი = 8; else ნომერი = (ნომერი*10) + 8; // ორჯერ დაჭერილი} if (გასაღები == '#') {Serial.println ("ღილაკი თანაბარია"); Num2 = ნომერი; შედეგი = ჭეშმარიტი; } if (გასაღები == '3') {Serial.println ("ღილაკი 3"); თუ (რიცხვი == 0) ნომერი = 3; else ნომერი = (ნომერი*10) + 3; // ორჯერ დაჭერილი} if (გასაღები == '6') {Serial.println ("ღილაკი 6"); თუ (რიცხვი == 0) ნომერი = 6; else ნომერი = (ნომერი*10) + 6; // ორჯერ დაჭერილი} if (გასაღები == '9') {Serial.println ("ღილაკი 9"); თუ (რიცხვი == 0) ნომერი = 9; else ნომერი = (ნომერი*10) + 9; // ორჯერ დაჭერილი} if (გასაღები == 'A' || გასაღები == 'B' || გასაღები == 'C' || გასაღები == 'D') // სვეტებზე 4 ღილაკების გამოვლენა {რიცხვი 1 = ნომერი; რიცხვი = 0; if (გასაღები == 'A') {Serial.println ("დამატება"); action = '+';} if (გასაღები == 'B') {Serial.println ("გამოკლება"); action = '-'; } if (გასაღები == 'C') {Serial.println ("გამრავლება"); action = '*';} if (გასაღები == 'D') {Serial.println ("დევეზია"); action = '/';} დაგვიანებით (100); }} void CalculateResult () {if (action == '+') Number = Num1+Num2; if (action == '-') ნომერი = Num1-Num2; if (action == '*') ნომერი = Num1*Num2; if (action == '/') ნომერი = Num1/Num2; } void DisplayResult () {lcd.setCursor (0, 0); // კურსორის დაყენება 0 სვეტზე, სტრიქონი 1 lcd.print (Num1); lcd. ბეჭდვა (მოქმედება); lcd.print (Num2); if (შედეგი == ჭეშმარიტი) {lcd.print ("="); lcd.print (ნომერი);} // შედეგის ჩვენება lcd.setCursor (0, 1); // კურსორის დაყენება 0 სვეტზე, სტრიქონი 1 lcd.print (ნომერი); // შედეგის ჩვენება}

გირჩევთ: