Я создал код для реализации клавиатуры на микроконтроллере Mbed.Код проверяет введенный контакт по сравнению с правильным контактом.
Теперь мне нужна помощь для преобразования этого кода в простой калькулятор.Я не знаю, как преобразовать массив символов в строку, чтобы вернуть целочисленные значения.Я хочу иметь возможность ввести номер один, выбрать операцию, ввести номер 2 и вычислить.Например: 10 + 21 = 31
Я хотел бы иметь возможность назначить операции (+, -, /, *) для клавиш 1-4.Буду признателен за любую помощь!
edit: я пытался использовать 'value = atoi (str)' безуспешно.Будет ли изначально выгоднее создавать целочисленный массив вместо символьного массива?
#include "mbed.h"
DigitalOut led2(LED2);
DigitalOut led1(LED1); // Declare LED
DigitalOut rows [4]= {PA_5, PA_1, PA_2, PA_3}; // Declare Rows
DigitalIn columns [3]= {PB_6, PB_7, PD_0}; // Declare Columns
char numpad [4] [3]= {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'},
};
int c= 0;
int main (){
char detected [6] = " ";
char strCheck[] = "3333#";
led2 = 1;
columns [0]. mode (PullUp);
columns [1]. mode (PullUp);
columns [2]. mode (PullUp);
char read;
while (1){
for (int i=0; i<4; i++){
rows[0]= 1;
rows[1]= 1;
rows[2]= 1;
rows[3]= 1;
rows[i]= 0;
wait (0.01);
for (int j= 0; j<3; j++) {
if (columns [j]== 0) {
read= numpad [i][j];
printf("%c \n\r", read);
detected [c]= numpad [i][j];
detected [c+1]= '\0';
printf("%s \n\r", detected);
c++;
if (c==5) {
c= 0;
}
wait (0.005);
while (columns [j]== 0);
}
}
}
if (strcmp (detected, strCheck)== 0){
led1 = 1;
led2 = 0;
printf ("%s \n\r", detected);
c = 0;
detected[0]= '\0';
}
else if (read== '*') {
led1 = 0;
led2 = 1;
c = 0;
detected [0] = '\0';
}
}
}