如何获取值并保存它们以供以后在Arduino上使用?
How to get values and save them to use later on Arduino?
我想创建一个列表,其中包含一个由 8 个数字组成的未定义的引用数字:
例:
28546455
95685615
55925555
59295525
etc.......
这些号码可以通过键盘输入。
每个引用包含 2 个参数:
- 速度
- 步骤
例:
28546455 --> 速度 : 500-->步数 : 10000
95685615 -->速度 : 300
-->步长 : 20000等。。。。。。。。。。
我做了这个程序,但它似乎不起作用?我无法传递第一个变量条目,即参考编号.
有什么帮助吗?
#include "Reference.h"
#include <Keypad.h>
char keypad_referenceNumber[9];
char keypad_SPEED[4];
char keypad_STEPS[6];
int counter = 0;
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{ '1', '2', '3' },
{ '4', '5', '6' },
{ '7', '8', '9' },
{ '*', '0', '#' }
};
byte rowPins[ROWS] = { 8, 7, 6, 5 };
byte colPins[COLS] = { 4, 3, 2 };
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
int data_referenceNumber;
int data_SPEED;
int data_STEPS;
List* myList;
void setup()
{
// put your setup code here, to run once:
Serial.begin(9600);
// Initialize the first element of the list
List* myList = initialisation();
}
void loop()
{
// put your main code here, to run repeatedly:
// get from the keypad the reference number
getreferenceNumber();
// get from the keypad the speed
getSPEED();
// get from the keypad the steps
getSTEPS();
// Add a new reference to the list
addNewReference(myList, data_referenceNumber, data_SPEED, data_STEPS);
// Display the list of references
displayList(myList);
} // END LOOP
// function to get the reference number
void getreferenceNumber()
{
char key = keypad.getKey();
if (key != NO_KEY) {
keypad_referenceNumber[counter++] = key;
keypad_referenceNumber[counter] = ' ';
Serial.print(key);
if (key == '#') {
data_referenceNumber = atoi(keypad_referenceNumber);
Serial.println(data_referenceNumber);
counter = 0;
}
}
}
//function to get speed value from keypad
void getSPEED()
{
char key = keypad.getKey();
if (key != NO_KEY) {
keypad_SPEED[counter++] = key;
keypad_SPEED[counter] = ' ';
if (key == '#') {
data_SPEED = atoi(keypad_SPEED);
Serial.println(data_SPEED);
counter = 0;
}
}
}
// function to get the steps value from keypad
void getSTEPS()
{
char key = keypad.getKey();
if (key != NO_KEY) {
keypad_STEPS[counter++] = key;
keypad_STEPS[counter] = ' ';
if (key == '#') {
data_STEPS = atoi(keypad_STEPS);
Serial.println(data_STEPS);
counter = 0;
}
}
}
//function to initialize the first element of the list
List* initialisation()
{
List* list;
References* references;
if (list == NULL || references == NULL) {
exit(EXIT_FAILURE);
}
references->referenceNumber = 0;
references->SPEED = 0;
references->STEPS = 0;
references->next = NULL;
list->firstElement = references;
return list;
};
// Function to add a new reference
// x : reference number
// y : speed
// z : steps
void addNewReference(List* list, int x, int y, int z)
{
References* newReference;
if (list == NULL || newReference == NULL) {
exit(EXIT_FAILURE);
}
newReference->referenceNumber = x;
newReference->SPEED = y;
newReference->STEPS = z;
newReference->next = list->firstElement;
list->firstElement = newReference;
}
// function to display to list of references
void displayList(List* list)
{
if (list == NULL) {
exit(EXIT_FAILURE);
}
References* current = list->firstElement;
while (current != NULL) {
Serial.println(current->referenceNumber);
Serial.println(current->SPEED);
Serial.println(current->STEPS);
current = current->next;
}
Serial.println("NULL");
}
这是参考资料。
#ifndef _REFERENCE_H_
#define _REFERENCE_H_
typedef struct References References;
struct References {
int referenceNumber;
int SPEED;
int STEPS;
References *next;
};
typedef struct List List;
struct List {
References *firstElement;
};
#endif
据我了解,您希望每次关闭Arduino时都不会擦除内存。对EEPROM做一些研究。
在调试方面,您那里的代码有点难以阅读。尝试插入语句,这些语句在程序进行时打印某个变量的值,并查看它出错的地方。
祝你好运!告诉我们会发生什么。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 如何在openssl-ecc中获取十六进制格式的私钥
- 使用Unreal C++获取VR耳机的世界位置/方向
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 从C字符串中获取奇怪的字符串长度
- 为什么我的for循环不能正确获取argv
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 如何获取值并保存它们以供以后在Arduino上使用?
- 使用Arduino获取移动IMEI
- C++Arduino:从hashmap添加和获取值会返回垃圾值
- 从 Arduino 库中的方法获取私有布尔属性
- 使用Arduino Due从MPU-6050获取/处理正确的值U
- 获取HTTP请求(Arduino)
- Arduino:从两个十进制字符串中获取十六进制值
- 编程 Arduino 与标准 C 有何不同