Hello programmers!
I am pretty new to arduino, don't understand much really, but every day I learn a little more and more. Now I have a project where I am making a "simple" serial monitor calculator, with some extra features. I have some basic understanding of coding, but in reality I'm pretty clueless and in need of some expert help.
The last days I have googled codes, read texts and tutorials and watched a whole lot of youtube-films to get me started. And this is my code as of now:
#include <math.h>
#include <stdio.h>
/*float addisjon (float num1, float num2); This part is to looked past, I think it does nothing.
float subtraksjon (float num1, float num2);
float multiplikasjon (float num1, float num2);
float divisjon (float num1, float num2);
*/
void setup() {
Serial.begin(9600);
Serial.println("Velg kalkulatorbruk ved aa skrive inn: 1, 2, 3, 4, 5, 6, 7, 8 eller 9"); // It says "choose calculator usage by selecting from these numbers"
Serial.println(""); // 1 til 4 skulle helst ha vært 1 case hvor jeg selv velger operator, nå er den på forhånd bestemt for case 1 til 4.
Serial.println("1) Enkel addisjon med to variabler");//To variabler og en operator - Simple addition with two variables and an operator
Serial.println("2) Enkel subtraksjon med to variabler");//To variabler og en operator - Simple subtraction with two variables and an operator
Serial.println("3) Enkel multiplikasjon med to variabler");//To variabler og en operator - Simple multiplication with two variables and an operator
Serial.println("4) Enkel divisjon med to variabler");//To variabler og en operator - Simple division with two variables and an operator
Serial.println("5) Utrykk med parenteser og bruk av desimaltall");//Hva som helst skal kunne brukes her - This case I have written more about further down in my post
Serial.println("6) Lose potenser"); //Grunntall opphoyet i en eksponent - Eksponential value/numbers
Serial.println("7) Lose kvadratrotter");//kvadratroten av et tall med desimaler - Square root
Serial.println("8) Sinus til X"); //med desimaler og pluss/minus - Sin(x)
Serial.println("9) Cosinus til X");//med desimaler og pluss/minus - Cos(x)
Serial.println("........................................");
}
int lesAvPC() { //vil ha float her - This is where I want float
while (Serial.available() == 0); //Do I need to do something to "while?"
return Serial.parseInt(); //vil ha parseFloat her, får ikke til...- is parse.Float() possible?
}
void loop() { //what to do, switch gir problemer - Switch is giving me problems as I have written in my post
switch (lesAvPC())
{
case 1:
{
Serial.print("1) Skriv forste tall: "); // Write the first number
float num1 = lesAvPC();
Serial.println(num1);
Serial.println(" Operatoren bruker: +"); //ikke sqrt men en operator som+-*/
Serial.print(" Skriv siste tall: "); // Write the last number
float num2 = lesAvPC();
Serial.println(num2);
Serial.println(" ");
Serial.print(" Svaret er: "); // The answer is:
float fasit = num1 + num2;//Ønsker å få til en if med alle operasjonene her i stedet for 4 cases. - Would like all the first 4 cases to be one case which includes all operators
Serial.println(fasit); //answer
Serial.println(" ");
// Serial.print("(num1 + num2) = (fasit())"); // Her ønsker jeg at hele funksjonen skal stå
Serial.println("........................................"); //Jeg vil at den skal kunne printe hele regnestykket på en linje med + og = og variablene
break;
}
case 2:
{
Serial.print("2) Skriv forste tall: ");
float num1 = lesAvPC();
Serial.println(num1);
Serial.println(" Operatoren bruker: -"); //ikke sqrt men en operator som+-*/
Serial.print(" Skriv siste tall: ");
float num2 = lesAvPC();
Serial.println(num2);
Serial.println(" ");
Serial.print(" Svaret er: ");
float fasit = num1 - num2;
Serial.println(fasit);
Serial.println(" ");
// Serial.print("(num1 - num2) = (fasit())"); // Her ønsker jeg at hele funksjonen skal stå
Serial.println("........................................"); //Jeg vil at den skal kunne printe hele regnestykket på en linje med + og = og variablene
break;
}
case 3:
{
Serial.print("3) Skriv forste tall: ");
float num1 = lesAvPC();
Serial.println(num1);
Serial.println(" Operatoren bruker: *"); //ikke sqrt men en operator som+-*/
Serial.print(" Skriv siste tall: ");
float num2 = lesAvPC();
Serial.println(num2);
Serial.println(" ");
Serial.print(" Svaret er: ");
float fasit = num1 * num2;
Serial.println(fasit);
Serial.println(" ");
// Serial.print("(num1 * num2) = (fasit())"); // Her ønsker jeg at hele funksjonen skal stå
Serial.println("........................................"); //Jeg vil at den skal kunne printe hele regnestykket på en linje med + og = og variablene
break;
}
case 4:
{
Serial.print("4) Skriv forste tall: ");
float num1 = lesAvPC();
Serial.println(num1);
Serial.println(" Operatoren bruker: /"); //ikke sqrt men en operator som+-*/
Serial.print(" Skriv siste tall: ");
float num2 = lesAvPC();
Serial.println(num2);
Serial.println(" ");
Serial.print(" Svaret er: ");
float fasit = num1 / num2;
Serial.println(fasit);
Serial.println(" ");
// Serial.print("(num1 / num2) = (fasit())"); // Her ønsker jeg at hele funksjonen skal stå
Serial.println("........................................"); //Jeg vil at den skal kunne printe hele regnestykket på en linje med + og = og variablene
break;
}
case 5: {
Serial.print("5) Skriv fullt funksjonsutrykk: "); // Nothing is happening here, but that is OK at the moment. But I would like to write a full function in the future.
Serial.println("Svaret er: sqrt(lesAvPC())");//svaret også tallene fra pcen
Serial.println("........................................");
break;
}
case 6: {
Serial.print("6) Skriv onsket grunntall: ");
float grunntall = lesAvPC();
Serial.println(grunntall);
Serial.print(" Skriv onsket eksponentiell verdi: ");
float eksponent = lesAvPC();
Serial.println(eksponent);
Serial.print(" Svaret er: ");
float fasit = pow(grunntall, eksponent);
Serial.println(fasit);
Serial.println("........................................");
break;
}
case 7: {
Serial.print("7) Skriv onsket verdi for kvadratrot: ");
Serial.println(sqrt(lesAvPC()));
Serial.println("........................................");
break;
}
case 8: {
Serial.print("8) Skriv onsket tallverdi for sin(x), svaret gis i radianer: ");
Serial.println(sin(lesAvPC()));
Serial.println("........................................");
break;
}
case 9: {
Serial.print("9) Skriv onsket tallverdi for cos(x), svaret gis i radianer: ");
Serial.println(cos(lesAvPC()));
Serial.println("........................................");
break;
}
}
}
I have added some extra info to the code so that it will be easier for you to read it, and understand it since I have written it in my native language.
I just need to say that my message exceeded the maximum allowed length so I will post two messages at the start here. First the code and then some information. Thank you!