#1 2018-03-13 00:05:01

angruh
Участник
Зарегистрирован: 2018-02-17
Сообщений: 6

простой калькулятор

#include <Keypad.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(7,8,9,10,11,12); 

long num1,num2 ;
double total;
char operation,button;

const byte ROWS = 4;
const byte COLS = 4;

char keys[ROWS][COLS] = {
  {'1','2','3','+'},
  {'4','5','6','-'},
  {'7','8','9','*'},
  {'C','0','=','/'}
};
byte rowPins[ROWS] = {A2,A3,A4,A5}; 
byte colPins[COLS] = {2,3,4,5};     
Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);


void setup() 
{
  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
  lcd.begin(16,2);
 

}

void loop()
{
  
 
  while(1)
  {
     
        
    button = customKeypad.getKey(); 
    if (button=='C') 
    {
      num1=0;
      num2=0;
      total=0;
      operation=0;
      lcd.clear();
    }
        
    if (button >='0' && button <='9') 
    {
      num1 = num1*10 + (button -'0'); 
     
      lcd.setCursor(0,0); 
      lcd.print(num1);    
    }
    
	if (num1 !=0 && (button=='-' || button=='+' || button=='*' || button=='/')) 
    {
     
      operation = button;  
      lcd.setCursor(0,1);  
      lcd.print(operation); 
      break;
    }

  }
    
  while(1) 
  {
    
    if (button =='C')
      break;
    button = customKeypad.getKey();
    if (button=='C') 
    {
      num1=0;
      num2=0;
      total=0;
      operation=0;
      lcd.clear();
      break;
    }
    if (button >='0' && button <='9') 
    {
      num2 = num2*10 + (button -'0');
      lcd.setCursor(1,1);
      lcd.print(num2);
    }
    if (button == '=' && num2 !=0)
    {       
      domath();             
      break;  
    }
  }
    
  while(1) 
  {
        
    if (button =='C')
      break;

    button = customKeypad.getKey();
    if (button =='C') 
    {
      lcd.clear();
      lcd.setCursor(0,0);
      num1=0;
      num2=0;
      total=0;
      operation=0;
      break;
    }
  }

}


void domath()
{
  switch(operation)
  {
    case '+': 
      total = num1+num2;
      break;
      
    case '-': 
      total = num1-num2;
      break;
      
    case '/': 
      total = (float)num1/(float)num2;
      break;
      
    case '*': 
      total = num1*num2;
      break;
          
  }
    
  lcd.setCursor(0,1);
  lcd.print('=');
  lcd.setCursor(1,1);
  lcd.print(total);   
} 

Код не работает, на дисплей ничего не виводить, помогите где ошибка?

918670d1520888410

Редактировался angruh (2018-03-13 11:13:38)

#2 2018-03-13 17:50:28

alex_dol
Участник
Зарегистрирован: 2015-12-28
Сообщений: 187

Re: простой калькулятор

Начальной инициализации переменных нет.
Залейте другой скетч и убедитесь в работоспособности дисплея.

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела