|
|
本帖最后由 49741933o 于 2014-8-12 16:32 编辑
我看了看,工坊里边只有一个帖子是关于矩阵键盘的。于是我又百度,又谷歌,又是arduino官网看英文的,还是没找到像要的结果。所以我发了这个求助帖,一方面希望弥补工坊里关于冷门器件的帖子,另一方面也希望大神能帮我解决这个问题。
==========================问题描述==============================
问题描述:最近在玩电子秤,需要键盘的输入,退格,确认这三个功能。但是在实现的过程中遇到了很多的问题,着实解决不了啊。首先遇到的问题就是把字符数组转化为整形数字,因为我定义的是一个二维的字符数组。我需要通过键盘输入单价(但是单价这个不是数字,是字符,故而不能和一个数相乘,见:http://www.geek-workshop.com/thread-9268-1-1.html),然后用单价乘以已知的重量得出总价。于是我在工坊里找到了atof函数,见:http://www.geek-workshop.com/thread-10488-1-1.html。在我下面的代码运行好像不行,不知道为什么。
=========================我也来分割分割,代码及我的操作===============
[pre lang="arduino" line="1" file="稍微修改下的键盘输入代码"]/*这是我稍微修改example的来的*/
#include <Keypad.h>
char a[16];//4*4的矩阵键盘,用来存储字符
int i,count=0;//count用来计算字符串的长度
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'.','0','#','D'} // ← ←不知道字符形式的小数点和整数形式的小数点有什么区别?
};
byte rowPins[ROWS] = {4,5,6,7}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {8,9,10,11}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
Serial.begin(9600);
}
void loop(){
char key = keypad.getKey();
while(key != '#'){
for(i=0;i<16;i++)
a=key;
count++;
key = keypad.getKey();
}
if (key == '#'){ //这个’#‘相当于确认键。
for(i=0;i<count;i++)
Serial.println(a);
}
}[/code]这段函数我是想通过从keypad.getKey()得到数字形式的字符,即”3“,等等(我使劲按键盘,但是串口监视器没反应,无解了......)。然后储存在字符数组a[]里面,最后通过atof函数将字符转化为数字(这个函数没写),从而实现单价的输入。
附带照片两张: |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|