Sisukord:
- 1. samm: matemaatiline taust
- Samm 2: Tarkvara
- 3. samm: riistvara
- 4. samm: juhtmestik
- 5. samm: tulevane täiustamine
Video: 2-nupuline ruutvõrrandi lahendaja: 5 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
Sissejuhatus
tere tulemast minu esimese juhendatava juurde!
Alustasin seda projekti oma programmeerimisalaste teadmiste laiendamiseks. Sageli ühendate vajaliku programmi loomiseks lihtsalt erinevad lähtekoodid. Minu eesmärk oli kirjutada oma programmi kood tööriistaga suhtlemiseks. Mulle meeldis luua lihtne arvutamise tööriist. Mõni kuu tagasi toetasin sõpra sõbrale ruutvõrrandi lahendamisel.
Bazinga! see on kasutusjuhtum!
Kasutasin vana metallkasti uuesti. Eelistasin tööriistade minimalistlikku välimust ja liidest. see on põhjus, miks ma tahan sisestamiseks kasutada ainult kahte nuppu. Võitlust näitab lihtne LCD -ekraan.
Tarvikud
materjalide nimekiri:
kast
2 nupuga Arcade stiilis
Arduino Nano või sarnane
LCD -ekraan 1602 koos I2C -adapteriga
sisse/välja lüliti
juhtmed
2x 10k oomi takisti
aku 9v plokk
pistik 9v aku jaoks
leivalaud
mitmesugused (puutükk, metallnurk, kaablisidemed, kruvi, seibid)
tööriistad:
Saag
jootekolb
puurimismasin
arvuti programmeerimiseks
1. samm: matemaatiline taust
Matemaatiline taust
2-nupuline ruutvõrrand näitab väärtusi, kus ruutfunktsioon ületab X-telje. Ruutfunktsioon ei saa X-telge ületada kunagi, üks või kaks korda.
Nende väärtuste arvutamiseks on erinevaid viise. Oma tööriista jaoks kasutan PQ-valemit (ma pole kindel, kas seda väljendit kasutatakse kogu maailmas).
Ruutvõrrand on järgmine:
ax²+bx+c = 0
Ristumiskohtade arvutamiseks jagage vorm x²+px+q = 0 ja p = b/a; q = c/a
PQ valem:
x1 = -p/2 + sqrt ((p/2) ² -q)
x2 = -p/2 -ruutmeetrit ((p/2) ² -q)
Tulemus x võib saada 0, 1 või 2 väärtust. See sõltub ruutjuure all olevast väärtusest.
Kui väärtus on> 0, on PQ-valemil kaks lahendust.
Kui väärtus on 0, siis on PQ-valemil üks lahendus
on väärtus <0, siis pole PQ valemil lahendust. Funktsioon ei ületa X-telge.
Samm 2: Tarkvara
Tarkvara
Programmeerimiseks kasutasin ametlikku Arduino IDE -d. Minu eesmärk oli luua oma tarkvaraprogramm. Minu liidesel peaks olema kaks nuppu. Üks nupp erinevate tasemete vahel liikumiseks, teine nupp erinevate tasemete väärtuste muutmiseks.
PQ-valemi lahendamiseks loon ülaltoodud struktuuri:
Kindlasti ei leiuta ma ratast uuesti. Koodi loomiseks kasutasin moodulit:
- tagasilöök
- ekraan
Suurimad väljakutsed olid järgmised punktid:
- Kuidas märki valida? Lahendasin selle väljakutse funktsiooniga modulo (link). Kood jagab sisendi kahega. Kas sisend on paaritu arv, väärtus muutub negatiivseks, vastasel juhul on number positiivne.
- Pärast kõigi tasandite läbimist pean deklareerima kõik väärtused 0 -ks.
- Kuvatud tekst kustutab lihtsalt saatemärgid. Kui koodid saadavad 4 tähemärgiga sõna, laaditakse just need 4 tähemärki uuesti. Kui eelneval sõnal oli rohkem tähemärke, jäävad märgid alles. Selle parandamiseks täidetakse kuvatud tekst tühikutega. Kõik 16 tähemärki järjest laaditakse uuesti.
Lõplik kood on lisatud.
3. samm: riistvara
Riistvara
Osad on loetletud ülalpool. Selle projekti jaoks on riistvara lihtne. Mul on vaja lihtsalt Arduino mikroprotsessorit, 2 nuppu ja ekraani. Okei, kui sulle meeldib karpi panna, on sul vaja ka kasti ja toiteallikat.
Kasutan vana metallkasti uuesti. Puurisin toiteallika lüliti pistikusse nupu sisse augu. Karbi kaas sai 3 auku. Puurisin suurtele nuppudele kaks auku ja lõikasin ekraanile akna. Kleepin väikese puutüki kaane taha, et oleks rohkem asju ekraani ja nuppude parandamiseks. Välimuse uuendamiseks olid karbis kleebised.
Toiteallikaks soovitan laetavaid 9V plokk -patareisid. Ühendan aku toitelüliti kaudu Arduinoga. Aku on karbi külge kinnitatud väikese metallnurgaga. Aku pistik on lihtsalt kinnitatud kaablisidemetega.
Mikroprotsessor on Arduino nano kloon. Sel juhul on jõudlus piisav. Attiny 85, näiteks Digispark mikroprotsessor, lükati tagasi. Arduino on ekraani kõrval "leivalaud".
Ekraan on 1602 LCD -ekraan. saate kahes reas kasutada 16 märki. Selle ekraani leiate paljudest erinevatest masinatest ja tööriistadest. Selle ekraani kasutamiseks on kaks erinevat võimalust. Saate ühendada ekraani otse kontrolleriga või kasutada lisandmoodulit I2C kaudu ekraaniga suhtlemiseks. I2C on standardprotokoll. Kasutasin seda, sest ekraani on lihtsam kontrolleriga ühendada. Vaja on 16 asemel 4 kaablit, VCC kuni 5V, GND kuni GND, SDA kuni A4, SCL kuni A5. Ekraan kinnitatakse kruvidega karbi kaane külge.
Nupud on tohutud! neil on tüüpiline arkaadmängu stiil. Mulle meeldib see! Nupud on ühendatud digitaalsete tihvtidega 4 ja 7. Palun ärge unustage 10K takistit!
Kaane avamiseks, näiteks aku vahetamiseks, kasutasin leivaplaadile ühendatud pikemaid kaableid.
4. samm: juhtmestik
5. samm: tulevane täiustamine
Tuleviku parandamine
Pärast projekti lõpetamist leiate alati parandamiseks vigu või funktsioone. Selles projektis on mul hea meel leida vaid mõned punktid, mida ma tulevikus täiendaksin.
Järgmiseks korraks täiendaksin kasti ärakasutamist. Parandasin selle projekti alguses ekraani, toitelüliti ja nupud. Lõpuks sain natuke vaeva, et leida karbile piisavalt ruumi aku ja mikroprotsessori jaoks. Kui ma panen nupu ja ekraani rohkem õue, ei tekiks mul probleeme kasti sees olevate osade jaoks.
Hetkel ei ole mul ruutvõrrandi lahendamiseks kasutust. Tööriista täiustamiseks sooviksin laiendada tööriista täiendavate matemaatiliste asjadega, näiteks põhiarvutusega või valemitega nagu binaarne valem või Pythagorase lause.
Soovitan:
Reaalajas Rubiku kuubi silmside lahendaja, kasutades Raspberry Pi ja OpenCV: 4 sammu
Reaalajas Rubiku kuubiku silmside lahendaja, kasutades Raspberry Pi ja OpenCV: see on Rubiku kuubiku tööriista teine versioon, mis on mõeldud silmadega lahendamiseks. Esimene versioon töötati välja javascripti abil, näete projekti RubiksCubeBlindfolded1 Erinevalt eelmisest kasutab see versioon värvide ja e
Q -Bot - avatud lähtekoodiga Rubiku kuubiku lahendaja: 7 sammu (piltidega)
Q -Bot - avatud lähtekoodiga Rubiku kuubiku lahendaja: Kujutage ette, et teil on rikutud Rubiku kuubik, teate, et 80ndate mõistatused on kõigil olemas, kuid keegi ei tea, kuidas neid lahendada, ja soovite selle algupärase mustri tuua. Õnneks on tänapäeval lahendamisjuhiseid väga lihtne leida
Arduino Mega sammukilp Rubiksi kuubiku lahendaja jaoks: 4 sammu
Arduino Mega sammukilp Rubiksi kuubiku lahendaja jaoks: Mõni aeg tagasi töötasin masina kallal, mis lahendab automaatselt kõik 3x3 Rubiku kuubiku segipaisatud. Minu juhiseid selle kohta näete siit. Projektis kasutati kuue mootori juhtimiseks polulu astmelisi draivereid. Selleks, et kaks saaksid need ühendada
Liikluse lahendaja: 7 sammu
Liikluse lahendaja: Liikluse lahendaja automatiseerib ehitustsoonis ühe sõiduraja piires liikluse juhtimise. Selle süsteemi toimimiseks ilma vahejuhtumiteta, peab olema kaks seadet, üks mõlemal küljel. Mõlemal seadmel on mootor ja pöörlev hoideseade, mis
Ruutvõrrandi makro Excelis: 3 sammu
Ruutvõrrandi makro Excelis: saate ruutvõrrandit hõlpsalt lahendada, minnes lihtsalt tööriistade-makrokäivituse makro juurde. Olen uus liige ja vajan tõesti igasugust tagasisidet, mida saate anda. Nautige, et te ei kasuta nende võrrandite lahendamiseks paberit