Inhoudsopgave:

2-knops kwadratische vergelijkingsoplosser - Ajarnpa
2-knops kwadratische vergelijkingsoplosser - Ajarnpa

Video: 2-knops kwadratische vergelijkingsoplosser - Ajarnpa

Video: 2-knops kwadratische vergelijkingsoplosser - Ajarnpa
Video: Snijpunt berekenen met de optie 'Intersect' (TI-84 Plus CE-T) 2024, Juli-
Anonim
Image
Image

Invoering

welkom bij mijn eerste instructable!

Ik ben dit project begonnen om mijn programmeerkennis uit te breiden. Vaak voeg je gewoon verschillende broncode samen om het programma te maken dat je nodig hebt. Mijn doel was om mijn eigen programmacode te schrijven voor interactie met een tool. Ik vond het leuk om een eenvoudige tool te maken om te berekenen. Een maand geleden heb ik een vriend gesteund om kwadratische vergelijkingen op te lossen.

Bazinga! dit is de use-case!

Ik heb een oude metalen doos hergebruikt. Ik gaf de voorkeur aan het minimalistische uiterlijk en de interface van tools. daarom wil ik gewoon 2 knoppen gebruiken om input te geven. De strijd wordt weergegeven door een eenvoudig LCD-scherm.

Benodigdheden

lijst van materialen:

doos

Arcade-stijl met 2 knoppen

Arduino Nano, of vergelijkbaar

LCD-scherm 1602 met I2C-adapter

aan / uit knop

draden

2x 10k Ohm weerstand

batterij 9v blok

connector voor 9v batterij

broodplankje

diversen (stuk hout, metalen hoek, kabelbinders, schroef, ringen)

gereedschap:

zaag

soldeerbout

dril machine

computer om te programmeren

Stap 1: Wiskundige achtergrond

Software
Software

Wiskundige achtergrond

De kwadratische vergelijking met 2 knoppen toont de waarden waar de kwadratische functie de X-as kruist. Een kwadratische functie kan de X-as nooit, één of twee keer kruisen.

Er zijn verschillende manieren om deze waarden te berekenen. Voor mijn tool gebruik ik de PQ-formule (ik weet niet zeker of deze uitdrukking over de hele wereld zal worden gebruikt).

Een kwadratische vergelijking heeft de vorm:

ax²+bx+c=0

Om de kruispunten te berekenen, deelt u de vorm door a x²+px+q=0 met p= b/a; q=c/a

de PQ-formule:

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

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

Het resultaat x kan 0, 1 of 2 waarden krijgen. Dat hangt af van de waarde onder de vierkantswortel.

Is de waarde > 0, dan heeft de PQ-formule twee oplossingen.

Is de waarde = 0, dan heeft de PQ-formule één oplossing

is de waarde < 0, dan heeft de PQ-formule geen oplossing. De functie kruist de X-as niet.

Stap 2: Software

Software

Voor het programmeren heb ik de officiële Arduino IDE gebruikt. Mijn doel was om mijn eigen softwareprogramma te maken. Mijn interface zou twee knoppen moeten hebben. Eén knop om tussen verschillende niveaus te schakelen, de tweede knop om de waarden in de verschillende niveaus te wijzigen.

Om de PQ-formule op te lossen, maak ik de bovenstaande structuur:

Zeker, ik vind het wiel niet opnieuw uit. Voor het maken van de code heb ik de module gebruikt:

- debounce

- Scherm

Volgende punten waren de grootste uitdagingen:

- Hoe kan ik het bord kiezen? Deze uitdaging heb ik opgelost met de functie modulo (link). De code deelt de invoer door 2. Is de invoer een oneven getal, dan wordt de waarde negatief, anders is het getal positief.

- Nadat ik alle niveaus heb doorlopen, moet ik alle waarden op 0 declareren.

- De weergegeven tekst wist alleen de verzendtekens. Als de codes een woord met 4 tekens verzenden, worden alleen deze 4 tekens opnieuw geladen. Als het woord ervoor meer karakters had, blijven de karakters. Om dat op te lossen, wordt de weergegeven tekst opgevuld met spaties. Alle 16 tekens op een rij worden opnieuw geladen.

De definitieve code is bijgevoegd.

Stap 3: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Hardware

De onderdelen staan hierboven vermeld. Voor dit project is de hardware eenvoudig. Ik heb alleen een Arduino-microprocessor, 2-knop en een display nodig. Oké, als je het leuk vindt om in een doos te stoppen, heb je ook een doos en voeding nodig.

Ik hergebruik een oude metalen doos. Ik boorde een gat in de knop voor de stekker in de schakelaar voor de voeding. Het deksel van de doos heeft 3 gaten. Ik boorde twee gaten voor de grote knoppen en sneed een venster voor het display. Ik plak een klein stukje hout achter de hoes om meer spullen te hebben om het display en de knoppen te bevestigen. Om de look te upgraden kreeg de doos stickers.

Voor de stroomvoorziening raad ik oplaadbare 9V-blokbatterijen aan. Ik sluit de batterij via de aan / uit-schakelaar aan op de Arduino. De batterij is met een kleine metalen hoek aan de doos bevestigd. De connector voor de batterij zit gewoon vast met kabelbinders.

De microprocessor is een kloon van een Arduino nano. Voor deze use case zijn de prestaties voldoende. Een Attiny 85, bijvoorbeeld een Digispark-microprocessor, werd afgekeurd. De Arduino is "breadboarded" naast het display.

Het display is een 1602 LCD-scherm. u kunt 16 tekens in twee rijen gebruiken. U vindt deze display in veel verschillende machines en gereedschappen. Er zijn twee verschillende manieren om dit scherm te gebruiken. U kunt het display rechtstreeks op de controller aansluiten of u kunt een add-on gebruiken om via I2C met het display te communiceren. I2C is een standaardprotocol. Ik heb het gebruikt, omdat het makkelijker is om het display op de controller aan te sluiten. U hebt slechts 4 kabels nodig in plaats van 16, VCC naar 5V, GND naar GND, SDA naar A4, SCL naar A5. Het display wordt met schroeven aan het deksel van de doos bevestigd.

De knoppen zijn enorm! ze hebben de typische arcade-spelstijl. Ik vind het leuk! De knoppen zijn aangesloten op digitale pin 4 en 7. Vergeet de 10K-weerstanden niet!

Om het deksel te openen, bijvoorbeeld om de batterij te vervangen, gebruikte ik langere kabels die op het breadboard waren aangesloten.

Stap 4: Bedrading

Bedrading
Bedrading

Stap 5: Toekomstige verbetering

Toekomstige verbetering

Na het afronden van een project vind je altijd bugs of features voor verbetering. In dit project ben ik blij om slechts een paar punten te vinden die ik voor de toekomst zou verbeteren.

Voor de volgende keer zou ik de exploitatie in de doos verbeteren. Ik heb het display, de aan / uit-schakelaar en de knoppen aan het begin van dit project gerepareerd. Op het einde kreeg ik wat moeite om voldoende ruimte te vinden voor de batterij en de microprocessor in de doos. Als ik de knop en het display meer naar buiten zou plaatsen, zou ik geen problemen hebben met de ruimte voor de onderdelen in de doos.

Op dit moment heb ik geen use case voor het oplossen van kwadratische vergelijkingen. Om de tool te verbeteren, zou ik de tool graag uitbreiden met meer wiskundige dingen, bijvoorbeeld basiscalculus of formules zoals binominale formule of zin van de Pythagoras.

Aanbevolen: