Hei jeg er ny på arduino så beklager for rotete programering.
jeg sliter med et program som ikke vil gå inn i casene sine.
får bare tall en vil ikke gå inn i secondnumber() funskjonen.
noen som har noen ide?
#include <IRremote.h>
#include <IRremoteInt.h>
#define CHminus 16753245
#define CH 16736925
#define CHPluss 16769565
#define skipleft 16720605
#define skipRight 16712445
#define play/pause 16761405
#define minus 16769055
#define pluss 16754775
#define nul 16738455
#define onehundo 16750695
#define twohundo 16756815
#define one 16724175
#define two 16718055
#define three 16743045
#define four 16716015
#define five 16726215
#define six 16734885
#define seven 16728765
#define eight 16730805
#define nine 16732845
const int RECV_PIN = 11; //leser ir-sensor
IRrecv irrecv(RECV_PIN); //lager irrecv objekt
decode_results results; //lagrer resultat fra dekodet signal
int tall_1 = 0; //lager variable
int tall_2 = 0;
long total = 0;
char nyttTall; //lagrer tall
char annetTall;
void setup()
{
Serial.begin(9600); //starter serialport
irrecv.enableIRIn(); //starter ir motager
Serial.println(" Velkommen_til_kalkulering_på_avstand "); //skriver en hyggelig melding til bruker
}
void loop() {
nyttTall = 'U';
nummer (); //kaller funskjonen nummer hvor alle koder fra ir-kontroll er lagret
// results.value = nyttTall ; //skal lese det som kommer inn fra ir
//hvis man trykker på fjernkontroll så går man inn her
if (Serial.available() > 0) { //leter etter lagrede tall større en 0
nyttTall = Serial.read(); //skal lese tall som kommer inn
}
switch (nyttTall) { //ser på tallene i results. hvis det er tall der begynner det ¨kjøre caser
case 48 ... 57: // samler sammen verdier til en av tegnene er lest "+-*/"
tall_1 = tall_1 * 10 + (nyttTall - '0'); //tar imot ett tall og hvis tallet er større en ti ganges det nye tallet med ti. så hver gang det flyttes til høyre får det en tier med seg
Serial.print("tall 1 = ");
Serial.println(tall_1); //Skriver det første tallet
break;
case pluss:
//if ( tall_1 > 0) {
//tall_1 = (total != 0 ? total : tall_1); //hvis totalen er forskjellig fra null, totalen hvis ikke tall_1
SecondNumber(); // samler inn neste tall. tall_2
Serial.print("tall_2 = ");
Serial.print(tall_2);
total = tall_1 + tall_2;
Serial.print(total);
tall_1 = 0, tall_2 = 0; // nullstiller verdiene tilbake til null for neste runde
break;
}
/*case 'F':
if(nyttTall<48 && nyttTall>57){
Serial.print("error");
}*/
//
// case 'C':
// if ("clear") {
// total = 0;
// Serial.println("cleared");
// }
//
// break;
//}
//irrecv.resume();
}
//}
long SecondNumber()
{
//while ( true )
//{
//annetTall = Serial.read();
if (annetTall >= '0' && annetTall <= '9')
{
tall_2 = tall_2 * 10 + (annetTall - '0');
Serial.println("tall_2");
return tall_2;
}
}
/* if (tall_1 && tall_2 && '=') { //hvis tall_1 og tall_2 i tillegg til = er trykket returnere total
Serial.print("svar");
return total; //returnerer totalen
break;
}*/
//}
//}
//dekoder ir signalet
void nummer() {
if (irrecv.decode(&results) == true ) {
if (results.value == 16738455) {
// Serial.print("0");
nyttTall = '0';
}
if (results.value == 16724175) {
//Serial.print("1");
nyttTall = '1';
annetTall = '1';
}
if (results.value == 16718055) {
// Serial.print("2");
nyttTall = '2';
annetTall = '2';
}
if (results.value == 16743045) {
//Serial.print("3");
nyttTall = '3';
annetTall = '3';
}
if (results.value == 16716015) {
// Serial.print("4");
nyttTall = '4';
annetTall = '4';
}
if (results.value == 16726215) {
// Serial.print("5");
nyttTall = '5';
}
if (results.value == 16734885) {
// Serial.print("6");
nyttTall = '6';
}
if (results.value == 16728765) {
// Serial.print("7");
nyttTall = '7';
}
if (results.value == 16730805) {
// Serial.print("8");
nyttTall = '8';
}
if (results.value == 16732845) {
//Serial.print("9");
nyttTall = '9';
}
if (results.value == 16754775) {
Serial.print("+");
nyttTall = '+';
}
if (results.value == 16761405) {
Serial.print("=");
nyttTall = '=';
}
if (results.value == 16753245) {
Serial.print("clear");
nyttTall = 'C';
}
irrecv.resume();
}
}