• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Modyfikacja kodu kalkulatora
#1
Witam
Zaczynam zabawę z Arduino na start poleci kalkulator oparty o klawiaturę 4x4 i lcd 2*16. Znalazłem w sieci projekt kalkulatora i chciałbym dodać drugą klawiaturę która wykonywała by określone działania bez wpisywania np. wciskam klawisz x i do liczby dodaje mi się odrazu 200, naciskam klawisz y odejmuje się 200. Teraz na początek pierwsze pytanie czu tu mam po prostu dodać klawiaturę 8x8 czy to się robi jakoś oddzielnie?
Kod:
#include <Keypad.h> //Header file for Keypad from https://github.com/Chris--A/Keypad

const byte ROWS = 4; // Four rows
const byte COLS = 4; // Three columns

// Define the Keymap
char keys[ROWS][COLS] = {

 {'7','8','9','D'},

 {'4','5','6','C'},

 {'1','2','3','B'},

 {'*','0','#','A'}

};


Kod:
/*
* Arduino Keypad calculator Program
*/

#include <LiquidCrystal.h> //Header file for LCD from https://www.arduino.cc/en/Reference/LiquidCrystal
#include <Keypad.h> //Header file for Keypad from https://github.com/Chris--A/Keypad

const byte ROWS = 4; // Four rows
const byte COLS = 4; // Three columns

// Define the Keymap
char keys[ROWS][COLS] = {

 {'7','8','9','D'},

 {'4','5','6','C'},

 {'1','2','3','B'},

 {'*','0','#','A'}

};

byte rowPins[ROWS] = { 0, 1, 2, 3 };// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte colPins[COLS] = { 4, 5, 6, 7 }; // Connect keypad COL0, COL1 and COL2 to these Arduino pins.

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); //  Create the Keypad

const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; //Pins to which LCD is connected
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

long Num1,Num2,Number;
char key,action;
boolean result = false;

void setup() {
 lcd.begin(16, 2); //We are using a 16*2 LCD display
 lcd.print("DIY Calculator"); //Display a intro message
 lcd.setCursor(0, 1);   // set the cursor to column 0, line 1
 lcd.print("-CircuitDigest"); //Display a intro message

  delay(2000); //Wait for display to show info
   lcd.clear(); //Then clean it
}

void loop() {
 
key = kpd.getKey(); //storing pressed key value in a char

if (key!=NO_KEY)
DetectButtons();

if (result==true)
CalculateResult();

DisplayResult();  
}

void DetectButtons()
{
    lcd.clear(); //Then clean it
   if (key=='*') //If cancel Button is pressed
   {Serial.println ("Button Cancel"); Number=Num1=Num2=0; result=false;}
   
    if (key == '1') //If Button 1 is pressed
   {Serial.println ("Button 1");
   if (Number==0)
   Number=1;
   else
   Number = (Number*10) + 1; //Pressed twice
   }
   
    if (key == '4') //If Button 4 is pressed
   {Serial.println ("Button 4");
   if (Number==0)
   Number=4;
   else
   Number = (Number*10) + 4; //Pressed twice
   }
   
    if (key == '7') //If Button 7 is pressed
   {Serial.println ("Button 7");
   if (Number==0)
   Number=7;
   else
   Number = (Number*10) + 7; //Pressed twice
   }
 

   if (key == '0')
   {Serial.println ("Button 0"); //Button 0 is Pressed
   if (Number==0)
   Number=0;
   else
   Number = (Number*10) + 0; //Pressed twice
   }
   
    if (key == '2') //Button 2 is Pressed
   {Serial.println ("Button 2");
    if (Number==0)
   Number=2;
   else
   Number = (Number*10) + 2; //Pressed twice
   }
   
    if (key == '5')
   {Serial.println ("Button 5");
    if (Number==0)
   Number=5;
   else
   Number = (Number*10) + 5; //Pressed twice
   }
   
    if (key == '8')
   {Serial.println ("Button 8");
    if (Number==0)
   Number=8;
   else
   Number = (Number*10) + 8; //Pressed twice
   }  
 

   if (key == '#')
   {Serial.println ("Button Equal");
   Num2=Number;
   result = true;
   }
   
    if (key == '3')
   {Serial.println ("Button 3");
    if (Number==0)
   Number=3;
   else
   Number = (Number*10) + 3; //Pressed twice
   }
   
    if (key == '6')
   {Serial.println ("Button 6");
   if (Number==0)
   Number=6;
   else
   Number = (Number*10) + 6; //Pressed twice
   }
   
    if (key == '9')
   {Serial.println ("Button 9");
   if (Number==0)
   Number=9;
   else
   Number = (Number*10) + 9; //Pressed twice
   }  

     if (key == 'A' || key == 'B' || key == 'C' || key == 'D') //Detecting Buttons on Column 4
 {
   Num1 = Number;    
   Number =0;
   if (key == 'A')
   {Serial.println ("Addition"); action = '+';}
    if (key == 'B')
   {Serial.println ("Subtraction"); action = '-'; }
    if (key == 'C')
   {Serial.println ("Multiplication"); action = '*';}
    if (key == 'D')
   {Serial.println ("Devesion"); action = '/';}  

   delay(100);
 }
 
}

void CalculateResult()
{
 if (action=='+')
   Number = Num1+Num2;

 if (action=='-')
   Number = Num1-Num2;

 if (action=='*')
   Number = Num1*Num2;

 if (action=='/')
   Number = Num1/Num2;
}

void DisplayResult()
{
 lcd.setCursor(0, 0);   // set the cursor to column 0, line 1
 lcd.print(Num1); lcd.print(action); lcd.print(Num2);
 
 if (result==true)
 {lcd.print(" ="); lcd.print(Number);} //Display the result
 
 lcd.setCursor(0, 1);   // set the cursor to column 0, line 1
 lcd.print(Number); //Display the result
}
 
Odpowiedź
  


Wiadomości w tym wątku
Modyfikacja kodu kalkulatora - przez muczak - 23-10-2018, 19:35
RE: Modyfikacja kodu kalkulatora - przez kaczakat - 23-10-2018, 20:10
RE: Modyfikacja kodu kalkulatora - przez muczak - 23-10-2018, 22:11
RE: Modyfikacja kodu kalkulatora - przez kaczakat - 23-10-2018, 23:06
RE: Modyfikacja kodu kalkulatora - przez muczak - 24-10-2018, 20:28
RE: Modyfikacja kodu kalkulatora - przez es2 - 24-10-2018, 20:58
RE: Modyfikacja kodu kalkulatora - przez muczak - 26-10-2018, 15:40
RE: Modyfikacja kodu kalkulatora - przez es2 - 26-10-2018, 16:00
RE: Modyfikacja kodu kalkulatora - przez muczak - 26-10-2018, 16:20
RE: Modyfikacja kodu kalkulatora - przez es2 - 26-10-2018, 16:41
RE: Modyfikacja kodu kalkulatora - przez kaczakat - 26-10-2018, 16:48
RE: Modyfikacja kodu kalkulatora - przez es2 - 26-10-2018, 17:05
RE: Modyfikacja kodu kalkulatora - przez muczak - 26-10-2018, 17:23
RE: Modyfikacja kodu kalkulatora - przez es2 - 26-10-2018, 19:57
RE: Modyfikacja kodu kalkulatora - przez muczak - 26-10-2018, 20:52
RE: Modyfikacja kodu kalkulatora - przez es2 - 26-10-2018, 21:05
RE: Modyfikacja kodu kalkulatora - przez kaczakat - 26-10-2018, 21:33
RE: Modyfikacja kodu kalkulatora - przez es2 - 26-10-2018, 21:48

Skocz do:


Przeglądający: 1 gości