Introduction: Second Degree Equation Solver With Arduino

This instuctable is about making sort of a calculator that enables the user by using an analog 12-digit keyboard and 4 buttons to input the a,b,c variables into a equation and get the solution for it if there is any.(well if u don't know what an second grade equation is probably u haven't been in high school, even though you can follow this post to learn about microcontrollers.)

It can be a great electronics class project or an microcontroller starter project.  for your own use.



Step 1: Parts List

arduino board....................http://www.oomlout.co.uk/arduino-duemilanove-p-185.html £24.17
medium size breadboard......http://www.oomlout.co.uk/breadboard-830-point-p-250.html £5.11
LCD Display (16 x 2)...........................http://www.oomlout.co.uk/lcd-display-16-x-2-p-212.html £7.15
12 digit keypad...http://cgi.ebay.com/Electric-Keypad-12-Button-Keyboard-24VDC-20mA-Max-/110690838563?pt=LH_DefaultDomain_0&hash=item19c5b02823 .................................$9.99     
4 buttons................................................................................................................$1.00-0 
1 potentiometer.....................................................................................................$1.00-0
16x 500ohm, 4x 1k, 1x 6k resistors .................................................................$2.00-1
3 green LEDs.........................................................................................................$0.25-0
lots of jumpers or striped wires  ........................................................................$1.00-0

And patients!!!!!!  

  tip: if u don't have any of this parts it is highly recommended you buy an arduino starter pack that will include almost every electronic part needed, like potentiometers, wires, leds and maybe an lcd. a good one, which i bought ,is http://www.oomlout.co.uk/starter-kit-for-arduino-ardx-p-183.html

 As for the tools, a soldering iron and a wire striper and cutter should be enough.




Step 2:

The first thing u have to built is the analog keypad.I will not get into every detail as there is already an instuctable which i followed to make it. https://www.instructables.com/id/Analog-Keypad-Backpack/

 I made it using 500ohm resistors instead of 1k and instead of the 12k resistor a 6k one.(u may want to use this values to have the best chances that the code works without a single variation.I also did not used a stripboard  soldered directly onto the keypads pins which is fairly easy, also i used 2 12k resistor in parallel because i didn't had any 6k at the time.
The resistors needed for this step are 12x 500ohm and one 6k



 


Step 3: Puting the Bread Board Together

First connect the lcd according to the picture the pins used are 2,3,4,5,11,12 .

Then connect the potentiometer and place a jumper to the lcd as shown.

For the buttons and the leds i propose you to follow the way i placed them.

 The leds are connected to pins 15, 16, 17, 18 which in fact are the analog pins A1, A2 ,A3 , A4 and the first three indicate if you have stored a number in the variables a,b,c and the last is the go indicator for the arduino posses the data given and solve the equation.

 The buttons are connected  to pins 6, 7, 8, 9 . the first three  when pressed store the given value to the variables a, b, c and the last signals the arduino to solve the equation.

The last part which needs to be connected apart from the resistors is the keyboarded  that has 3 wires, the the red and the black go to the 5v and the ground. as for the last wire it goes to the analog pin 0. ( A0 ) 

Step 4: The Code

Now for the most important part, the arduino code 

 All u have to do is to copy and upload it into your arduino and hopefully it should work fine.

The most possible malfunction is that the keyboard may not respond properly. To fix this problem what u have to do is to press the buttons on the keypad one by one and check through the serial display the outputValue1.Then in this form u have to change the numbers (1, 11, 21 ,27......)
if (outputValue1 > 1){
if (outputValue1 > 11){
if (outputValue1 > 21){
if (outputValue1 > 27){
if (outputValue1 > 33){
if (outputValue1 > 38){
if (outputValue1 > 41){
if (outputValue1 > 45){
if (outputValue1 > 47){
if (outputValue1 >= 52){
if (outputValue1 > 54){
if (outputValue1 > 56){
if (outputValue1 > 59){s1 =100;}

so when i pressed  the keys i got the numbers:
                                                           9, 16, 25, 30, 35, 40, 43, 46, 51, 53, 55, 58, 90 
and i put middle numbers like  1, 11, 21, 27..... 
  if u do the same with the numbers that u are getting it should be easy to fix this. 

Step 5: Using It

What you need to do first (after plugging it in of-course) is to insert values a, b, c.
To do this you must first insert the value through the keypad and then press the corresponding button to insert that value into the right variable,( the # button is used to make the number negative so to insert -12 you must press 1, 2, #)  then pres the * button to get back to 0 and program the next variable 

Last press the go button and the lcd will show the solution (if the equation has no solution it will display 'impossible' and if every number is a solution it will display 'indefinite'.)
( i don't know if impossible and indefinite is the accurate word to use, please leave a comment and tell me which words should i use.)
Also wait for the video of its operation.

That's it! Now go and make one yourself and have fun with it.... 
 if u liked my instuctable, please rate it and vote for me in the microcontroller contest (https://www.instructables.com/contest/micro2/?show=ENTRIES ). Also if u have any question feel free to write a comment as i am going to be answering.

Comments

author
stratos13pao made it!(author)2011-07-07

Thank you

i used your library and it worked just fine, it is extremely useful as when i change the power supply (usb /battery) the the values change. it has helped my a ton.

Although i will not update the instructable because i thing the use of libraries is quite more complicated than my suggestion least for a beginner.

thanx again and if u feel like so vote for me

author
declanshanaghy made it!(author)2011-07-07

Nice tutorial.

I think the problem with your keypad reliability is because of contact bounce (also known as switch bounce) (http://en.wikipedia.org/wiki/Switch#Contact_bounce)

I recently updated my analog keypad backpack tutorial to include an Arduino library for use with an analog keypad. It has internal debounce logic so the return values from keypad.readKey() are reliable.

The library also accepts constructor arguments for the resistor values which allows it to calculate the co-responding analog voltage for each key reliably.

Check out step 7. I think it will solve your reliability problems.

L8r,
Dek

P.S.
There is a simpler example of debounce code in
Arduino File Menu -> Examples -> 2.Digital -> Debounce


author
aspirine made it!(author)2011-06-16

really good project!!! i am waiting for the video though.

author
MRHint made it!(author)2011-06-16

Awesome! a quadratic equation solver. That is so cool!

About This Instructable

24,420views

20favorites

License:

More by stratos13pao:Second degree equation solver with arduino
Add instructable to: