2 товчлууртай квадрат тэгшитгэлийн шийдэл: 5 алхам
2 товчлууртай квадрат тэгшитгэлийн шийдэл: 5 алхам
Anonim
Image
Image

Танилцуулга

Миний анхны зааварчилгаанд тавтай морил!

Би програмчлалын мэдлэгээ өргөжүүлэх зорилгоор энэ төслийг эхлүүлсэн. Ихэнхдээ та өөр өөр эх кодыг нэгтгэн өөрт хэрэгтэй програмаа бүтээдэг. Миний зорилго бол хэрэгсэлтэй харьцах програмын кодоо өөрөө бичих явдал байв. Би тооцоолох энгийн хэрэгсэл бүтээх дуртай байсан. Хэдэн сарын өмнө би найзыгаа квадрат тэгшитгэлийг шийдвэрлэхийг дэмжсэн.

Базинга! энэ бол хэрэглээний тохиолдол!

Би хуучин төмөр хайрцгийг дахин ашигласан. Би багаж хэрэгслийн минималист төрх, интерфэйсийг илүүд үзсэн. Энэ бол би оролт өгөхийн тулд 2 товчлуур ашиглахыг хүсч байгаа шалтгаан юм. Уралдааныг энгийн LCD дэлгэцээр харуулах болно.

Хангамж

материалын жагсаалт:

хайрцаг

2 товчлууртай аркад загвар

Arduino Nano, эсвэл үүнтэй төстэй

I2C адаптертай LCD дэлгэц 1602

асаах/унтраах унтраалга

утаснууд

2х 10 к Ом эсэргүүцэл

зай 9в блок

9в батерейны холбогч

талх

төрөл бүрийн (модон хэсэг, металл өнцөг, кабелийн хэлхээ, шураг, угаагч)

хэрэгсэл:

харсан

гагнуурын төмөр

өрөмдөгч машин

програмчлах компьютер

Алхам 1: Математикийн арын дэвсгэр

Програм хангамж
Програм хангамж

Математикийн арын дэвсгэр

2 товчлууртай квадрат тэгшитгэл нь квадрат функцийн X тэнхлэгийг огтлох утгыг харуулна. Квадрат функц нь X тэнхлэгийг хэзээ ч, нэг эсвэл хоёр удаа давж чадахгүй.

Эдгээр утгыг тооцоолох янз бүрийн арга байдаг. Миний хэрэгслийн хувьд би PQ-ийн томъёог ашигладаг (энэ илэрхийлэлийг дэлхий даяар ашиглах эсэхийг би сайн мэдэхгүй байна).

Квадрат тэгшитгэл нь дараахь хэлбэртэй байна.

ax²+bx+c = 0

Дамжин өнгөрөх цэгүүдийг тооцоолохдоо маягтыг x²+px+q = 0 -ээр хувааж p = b/a; q = c/a

PQ томъёо:

x1 = -p/2 + sqrt ((p/2) ² -q)

x2 = -p/2 -sqrt ((p/2) ² -q)

Үр дүн x нь 0, 1 эсвэл 2 утгыг авах боломжтой. Энэ нь квадрат язгуурын доорх утгаас хамаарна.

0 гэсэн утгатай бол PQ-Формула нь хоёр шийдэлтэй байна.

Утга = 0, тэгвэл PQ-Формула нь нэг шийдэлтэй байна

утга нь <0, дараа нь PQ томъёо нь шийдэлгүй болно. Функц нь X тэнхлэгийг огтлохгүй.

Алхам 2: Програм хангамж

Програм хангамж

Програмчлалын хувьд би албан ёсны Arduino IDE -ийг ашигласан. Миний зорилго бол өөрийн програм хангамжийг бий болгох явдал байв. Миний интерфэйс хоёр товчлууртай байх ёстой. Янз бүрийн түвшний хооронд шилжих нэг товчлуур, өөр түвшний утгыг өөрчлөх хоёр дахь товчлуур.

PQ-томъёог шийдэхийн тулд би дээрх бүтцийг бий болгож байна.

Мэдээжийн хэрэг, би дугуйг дахин зохион бүтээгээгүй байна. Код үүсгэхийн тулд би модулийг ашигласан.

- хасах

- дэлгэц

Дараахь оноо нь хамгийн том бэрхшээл байв

- Би тэмдгийг хэрхэн сонгох вэ? Би энэ сорилтыг модуль (холбоос) функцээр шийдсэн. Код нь оролтыг 2 -т хуваадаг. Оролт нь сондгой тоо байна уу, утга сөрөг болно, эс тэгвээс тоо эерэг байна.

- Бүх түвшинг давсны дараа би бүх утгыг 0 гэж зарлах ёстой.

- Үзүүлсэн текст нь илгээсэн тэмдэгтүүдийг устгадаг. Хэрэв кодууд 4 тэмдэгт бүхий үг илгээсэн бол зөвхөн 4 тэмдэгтийг дахин ачаалах болно. Хэрэв өмнөх үг илүү олон дүртэй байсан бол тэмдэгтүүд үлдэх болно. Үүнийг засахын тулд гарч ирсэн текстийг хоосон зайгаар дүүргэх болно. Бүх дараалсан 16 тэмдэгтийг дахин ачаалах болно.

Эцсийн кодыг хавсаргасан болно.

Алхам 3: Техник хангамж

Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж

Техник хангамж

Дээрх хэсгүүдийг жагсаав. Энэ төслийн хувьд тоног төхөөрөмж нь энгийн. Надад Arduino микропроцессор, 2 товчлуур, дэлгэц хэрэгтэй. За, хэрэв та хайрцаг хийх дуртай бол танд хайрцаг, цахилгаан хангамж хэрэгтэй болно.

Би хуучин төмөр хайрцгийг дахин ашигладаг. Би цахилгаан тэжээлийн унтраалгыг залгах товчлуурыг нүхлэв. Хайрцагны таг 3 нүхтэй. Том товчлууруудын хоёр цооног өрөмдөж, дэлгэцийн цонхыг хайчилж авлаа. Дэлгэц, товчлуурыг засах зүйл илүү их байхын тулд би жижиг модны нүүрний ард наалддаг. Гаднах төрхийг сайжруулахын тулд хайрцагт наалт байна.

Цахилгаан хангамжийн хувьд 9V блок цэнэглэдэг батерейг санал болгож байна. Би зайг цахилгаан унтраалгаар Arduino руу холбодог. Батерейг жижиг металл өнцөг бүхий хайрцагт бэхэлсэн. Батерейны холбогчийг кабелийн холболтоор засдаг.

Микропроцессор нь Arduino наногийн клон юм. Энэ тохиолдолд гүйцэтгэл хангалттай байна. Attiny 85, жишээлбэл Digispark микропроцессороос татгалзсан. Arduino дэлгэцийн хажууд "талхтай" байна.

Дэлгэц нь 1602 LCD дэлгэц юм. Та хоёр мөрөнд 16 тэмдэгт ашиглаж болно. Та энэ дэлгэцийг янз бүрийн машин, хэрэгсэлээс олж болно. Энэхүү дэлгэцийг ашиглах хоёр өөр арга бий. Та дэлгэцийг хянагчтай шууд холбож эсвэл I2C-ээр дамжуулан дэлгэцтэй холбогдохын тулд нэмэлт хэрэгслийг ашиглаж болно. I2C бол стандарт протокол юм. Дэлгэцийг хянагчтай холбох нь илүү хялбар байдаг тул би үүнийг ашигласан. Танд 16 биш 4 кабель, VCC -ээс 5V, GND -аас GND, SDA -аас A4, SCL -аас A5 хүртэл кабель хэрэгтэй болно. Дэлгэцийг хайрцгийн тагны боолтоор бэхэлсэн байна.

Товчнууд нь асар том юм! Тэд ердийн аркад тоглоомын хэв маягтай. Би үүнд дуртай! Товчлуурууд нь дижитал зүү 4 ба 7 -т холбогдсон байна. 10K резисторыг бүү мартаарай!

Хавтасыг онгойлгохын тулд, жишээ нь батерейгаа солихын тулд би талхны самбар дээр залгагдсан урт кабелийг ашигласан.

Алхам 4: Цахилгааны утас

Цахилгаан утас
Цахилгаан утас

Алхам 5: Ирээдүйн сайжруулалт

Ирээдүйн сайжруулалт

Төслийг дуусгасны дараа та үргэлж алдаа эсвэл сайжруулалт хийх онцлог шинж чанаруудыг олж хардаг. Энэ төсөлд би цөөн хэдэн зүйлийг олж мэдээд баяртай байна, ирээдүйд сайжруулах болно.

Дараагийн удаа би хайрцган дахь мөлжлөгийг сайжруулах болно. Би энэ төслийн эхэнд дэлгэц, цахилгаан унтраалга, товчлууруудыг зассан. Төгсгөлд нь хайрцаг дахь батерей болон микропроцессорын багтаамжийг олоход бага зэрэг бэрхшээл гарлаа. Би товчлуур болон дэлгэцийг илүү гадаа тавихад хайрцаг доторх хэсгүүдийн орон зайд ямар ч асуудал гарахгүй.

Одоогийн байдлаар надад квадрат тэгшитгэлийг шийдвэрлэх тохиолдол байхгүй байна. Хэрэгсэлийг сайжруулахын тулд би багажийг математикийн бусад зүйлүүдээр өргөжүүлэхийг хүсч байна, жишээлбэл үндсэн тооцоолол эсвэл хоёр томъёо, Пифагорын өгүүлбэр гэх мэт томъёо.

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