Агуулгын хүснэгт:

Arduino тооцоолуур: 6 алхам
Arduino тооцоолуур: 6 алхам

Видео: Arduino тооцоолуур: 6 алхам

Видео: Arduino тооцоолуур: 6 алхам
Видео: Как работают стеклоподъёмники, доводчик. Неисправности, ремонт. 2024, Аравдугаар сар
Anonim
Arduino тооцоолуур
Arduino тооцоолуур

Програмчлал нь үргэлж хөгжилтэй байдаг бөгөөд хэрэв та Embedded програмчлалыг дөнгөж эхлүүлж байгаа бол Arduino бол гайхалтай платформ юм. Энэхүү гарын авлагад бид Arduino ашиглан өөрийн тооцоолуур хийх болно. Энэ утгыг товчлуураар (4 × 4 товчлуур) илгээж, үр дүнг LCD дэлгэц дээр (16 × 2 цэг матриц) үзэх боломжтой. Энэхүү тооцоолуур нь нэмэх, хасах, үржүүлэх, хуваах гэх мэт энгийн үйлдлүүдийг бүхэл тоогоор гүйцэтгэх боломжтой. Гэхдээ энэ ойлголтыг ойлгосноор та Arduino -ийн суурилуулсан функцүүдийг ашиглан шинжлэх ухааны чиг үүргийг хэрэгжүүлж чадна. Төслийн төгсгөлд та Arduino -той 16x2 хэмжээтэй LCD болон товчлуурыг хэрхэн ашиглах, мөн тэдгээрийг ашиглан програмчлах нь хэр хялбар болохыг мэдэх болно. боломжтой номын сангууд. Тодорхой даалгаврыг биелүүлэхийн тулд Arduino -г хэрхэн програмчлах талаар та бас ойлгох болно.

Алхам 1: Шаардлагатай зүйл

Arduino Uno (Ямар ч хувилбар ажиллах болно) 16 × 2 LCD дэлгэц 4 × 4 товчлуур 9V зайБоловсруулах самбар ба холбох утас

Алхам 2: Хэлхээ диаграм

Хэлхээ диаграм
Хэлхээ диаграм

Алхам 3: Arduino тооцоолох програм

Энэхүү төслийн бүрэн Arduino програмыг энэ төслийн төгсгөлд өгсөн болно. Кодыг жижиг утгатай хэсгүүдэд хувааж, доор тайлбарласан болно. Өмнө дурьдсанчлан бид номын санг ашиглан Arduino -тай LCD болон товчлуурыг холбох болно. Тиймээс эхлээд тэдгээрийг Arduino IDE дээрээ нэмье. LCD -ийн номын сан нь таны Arduino -д аль хэдийн орсон байдаг тул бид үүнд санаа зовох хэрэггүй болно. Товчлуурын номын сангийн хувьд Github -аас татаж авах линк дээр дарна уу. Та ZIP файлыг авах болно, дараа нь энэ lib -ийг Sketch by Arduino дээр нэмээд -Номын санг оруулах ->. ZIP файл нэмж, татаж авсан файл руу байршлыг зааж өгнө үү. Бид товчлуурыг ашиглахын тулд номын сан ашигладаг байсан ч гэсэн Arduino -ийн товчлуурын талаар цөөн хэдэн мэдээллийг (доор харуулав) дурдах ёстой. ROWS ба COLS хувьсагч нь бидний товчлуурт хичнээн мөр, багана байгааг хэлж өгөх бөгөөд товчлуур нь гар дээрх товчлууруудын дарааллыг харуулдаг. Миний энэ төсөлд ашиглаж байгаа товчлуурууд нь түлхүүр газрын зураг дээр мөн адил харагдаж байна. Дараах мөрөнд аль товчлуурыг rowPins болон colPins хувьсагч массив ашиглан холбосон талаар дурдсан болно.const байт ROWS = 4; // Дөрвөн эгнээний конст байт COLS = 4; // Гурван багана // Keymapchar түлхүүрүүдийг тодорхойлох [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {'*',' 0 ','#',' D '}}; байт мөрийн хавчаарууд [ROWS] = {0, 1, 2, 3}; // ROW0, ROW1, ROW2 ба ROW3 товчлууруудыг эдгээр Arduino pin -тэй холбоно уу. Byte colPins [COLS] = {4, 5, 6, 7}; // COL0, COL1, COL2 товчлууруудыг эдгээр Arduino тээглүүрт холбоно уу. Бид ямар төрлийн товчлуур ашиглаж байгаа болон хэрхэн холбогдсон талаар дурьдсаны дараа доорх мөрийг ашиглан товчлууруудыг үүсгэж болно Keypad kpd = Keypad (makeKeymap), rowPins, colPins, ROWS, COLS); // Товчлуурыг үүсгээрэй LCD дэлгэц нь Arduino -ийн аль зүүтэй холбогдсоныг мөн адил хэлэх ёстой. Бидний хэлхээний диаграмын дагуу тодорхойлолтууд доорх шиг байх болно int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // LCD холбогдсон зүүLiquidCrystal lcd (rs, en, d4, d5, d6, d7); // LCD үүсгэх Тохиргооны функц дотор бид зөвхөн төслийн нэрийг харуулаад үндсэн төслийн хаана байгаа гогцоонд шилжих болно. Үндсэндээ товчлуур дээр ямар нэгэн зүйл бичиж байгаа эсэхийг шалгах ёстой. бичиж байгаа зүйлээ "=" дарахад хувьсагч болгон хөрвүүлэхийн тулд бид үр дүнг тооцоолж, эцэст нь LCD дэлгэц дээр харуулах ёстой. Энэ нь доор үзүүлсэн шиг давталтын функц дотор хийгддэг зүйл юм = kpd.getKey (); // дарагдсан түлхүүрийн утгыг charif -д хадгалах (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); Функц бүрийн дотор юу болж байгааг тайлбарын мөрийг ашиглан тайлбарлаж, доорхи кодыг бүрэн гүйцэд судалж, эргэн тойрондоо хуурч, энэ нь хэрхэн ажилладагийг ойлгох болно. Хэрэв та тодорхой шугам дээр эргэлзэж байвал сэтгэгдэл бичих хэсэг эсвэл форумыг ашиглах боломжтой.

Алхам 4:

Алхам 5: Arduino тооцоолуурын ажиллах

Arduino тооны машины ажил
Arduino тооны машины ажил

Холболтыг схемийн дагуу хийж, доорх кодыг байршуулна уу. Хэрэв алдаа гарсан бол дээр дурдсан зааврын дагуу номын санг нэмж оруулсан эсэхээ шалгаарай. Асуудал нь таны техник хангамжид байгаа эсэхийг шалгахын тулд та симуляцийг туршиж үзэж болно. Хэрэв бүх зүйл төлөвлөсний дагуу хийгдсэн бол таны техник хангамж 4x4 товчлуурыг ашиглан LCD дэлгэцийг харуулах болно. Энд ашигласан товчлуур дээр зохих тэмдэглэгээ байхгүй тул би цагаан толгойнуудыг оператор гэж үздэг. Доор жагсаасан товчлуур дээрх тэмдэгт "A" нэмэлт (+) "B" хасах (-) "C" үржүүлэх (*) "D" хэлтэс (/) "*" Clear (C) "#" тэнцүү (=) гэж үзсэн Тэмдэглэгч ашиглан товчлуур бүр яг юу илэрхийлж байгааг бичих боломжтой бөгөөд ингэснээр та тооцоолуур ашиглаж болно. Дугаарыг бичээд хоёр дахь мөрөнд гарч ирэх бөгөөд операнд дээр дараад хоёр дахь дугаараа бичээд эцэст нь "#" товчлуур дээр дарж үр дүнгээ аваарай. Та мөн энэ мэдрэгчтэй дэлгэц дээр суурилсан Arduino тооцоолуур бүтээхийг оролдож болно.

Алхам 6: Код

/ * * Arduino Keypad тооцоолох програм */#оруулах // https://www.arduino.cc/en/Reference/LiquidCrystal#include линкээс LCD дэлгэцийн толгой файл // https://github.com/ дээрээс товчлуурын толгой файл. Крис-A/Keypadconst байт ROWS = 4; // Дөрвөн эгнээний конст байт COLS = 4; // Гурван багана // Keymapchar түлхүүрүүдийг тодорхойлох [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {'*',' 0 ','#',' A '}}; байт мөрийн хавчуурууд [ROWS] = {0, 1, 2, 3}; // ROW0, ROW1, ROW2, ROW3 товчлууруудыг эдгээр Arduino pin -тэй холбоно уу. Byte colPins [COLS] = {4, 5, 6, 7}; // COL0, COL1 ба COL2 товчлууруудыг эдгээр Arduino тээглүүрт холбоно уу. Keypad kpd = Keypad (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, Number; char түлхүүр, үйлдэл; boolean result = false; 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 (); // дарагдсан түлхүүрийн утгыг charif -д хадгалах (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); } хүчингүй DetectButtons () {lcd.clear (); // Дараа нь үүнийг цэвэрлэнэ үү (key == '*') // Хэрэв цуцлах товчлуур дарагдсан бол {Serial.println ("Button Cancel"); Дугаар = Num1 = Num2 = 0; result = false;} if (key == '1') // If Button 1 дарагдсан бол {Serial.println ("Button 1"); if (Number == 0) Number = 1; өөр тоо = (тоо*10) + 1; // Хоёр удаа дарсан} if (key == '4') // If Button 4 дарагдсан бол {Serial.println ("Button 4"); хэрэв (Дугаар == 0) Дугаар = 4; өөр тоо = (тоо*10) + 4; // Хоёр удаа дарсан} if (key == '7') // If Button 7 дарагдсан бол {Serial.println ("Button 7"); хэрэв (Дугаар == 0) Дугаар = 7; өөр тоо = (тоо*10) + 7; // хоёр удаа дарагдсан} if (key == '0') {Serial.println ("Button 0"); // (Тоон == 0) Дугаар = 0 бол 0 товчлуур дарагдана. өөр тоо = (тоо*10) + 0; // хоёр удаа дарагдсан} if (key == '2') // 2 -р товчлуур дарагдсан {Serial.println ("Button 2"); хэрэв (Дугаар == 0) Дугаар = 2; өөр тоо = (тоо*10) + 2; // Хоёр удаа дарсан} if (key == '5') {Serial.println ("Button 5"); хэрэв (Дугаар == 0) Дугаар = 5; өөр тоо = (тоо*10) + 5; // Хоёр удаа дарагдсан} if (key == '8') {Serial.println ("Button 8"); хэрэв (Дугаар == 0) Дугаар = 8; өөр тоо = (тоо*10) + 8; // хоёр удаа дарагдсан} if (key == '#') {Serial.println ("Товч тэнцүү"); Num2 = тоо; үр дүн = үнэн; } if (key == '3') {Serial.println ("Button 3"); хэрэв (Дугаар == 0) Дугаар = 3; өөр тоо = (тоо*10) + 3; // Хоёр удаа дарсан} if (key == '6') {Serial.println ("Button 6"); хэрэв (Дугаар == 0) Дугаар = 6; өөр тоо = (тоо*10) + 6; // Хоёр удаа дарсан} if (key == '9') {Serial.println ("Button 9"); хэрэв (Дугаар == 0) Дугаар = 9; өөр тоо = (тоо*10) + 9; // хоёр удаа дарсан} хэрэв (түлхүүр == 'A' || түлхүүр == 'B' || түлхүүр == 'C' || түлхүүр == 'D') // 4 -р баганад байгаа товчлууруудыг илрүүлэх {Num1 = Дугаар; Дугаар = 0; if (key == 'A') {Serial.println ("Нэмэлт"); action = '+';} if (key == 'B') {Serial.println ("хасах"); үйлдэл = '-'; } if (key == 'C') {Serial.println ("Үржүүлэх"); action = '*';} if (key == 'D') {Serial.println ("Devesion"); үйлдэл = '/';} саатал (100); }} void CalculateResult () {if (action == '+') Number = Num1+Num2; if (action == '-') Number = Num1-Num2; if (action == '*') Number = Num1*Num2; if (action == '/') Number = Num1/Num2; } хоосон DisplayResult () {lcd.setCursor (0, 0); // курсорыг 0 багана, 1 -р мөр lcd.print (Num1) болгож тохируулна уу; lcd.хэвлэх (үйлдэл); lcd.print (Num2); if (үр дүн == үнэн) {lcd.print ("="); lcd.print (Number);} // Үр дүнг харуулах lcd.setCursor (0, 1); // курсорыг 0 -р баганын 1 -р мөрөнд тохируулна уу lcd.print (Дугаар); // Үр дүнг харуулах}

Зөвлөмж болгож буй: