простой калькулятор
- Войдите на сайт для отправки комментариев
Втр, 13/03/2018 - 01:20
#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);
}
Код не работает, на дисплей ничего не виводить, помогите где ошибка?
Вставьте в setup(): Serial.begin(9600); и кучку принтов в теле программы - хотя бы будете знать, что происходит.
Дисплей правильно подключен, контраст отрегулирован?
Калькулятор нужно реализовать
если счас пока не отвлекаца на каркулятор, ты вообще чонить на дисплей вывести можешь? Просто строку какую-нить?
То в том дело что не могу
Так резистор регулировочный крутить надо туда-сюда ... синенький такой ;-)
Вам дали замечательно удачный к вашей ситуации совет:
Вставьте в setup(): Serial.begin(9600); и кучку принтов в теле программы - хотя бы будете знать, что происходит.
Только вы, похоже, не читаете и не внемлите...
а, что можешь? О_О
Ну так и начни с того, чтоб сначала хоть чота на экран вывести
Только вы, похоже, не читаете и не внемлите...
я запретил на руси чтение.