首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取值并保存它们,以便以后在Arduino上使用?

如何获取值并保存它们,以便以后在Arduino上使用?
EN

Stack Overflow用户
提问于 2018-06-11 16:21:37
回答 1查看 147关注 0票数 -7

我想创建一个包含未定义的数字的列表,该数字由8个数字组成:

示例:

28546455

95685615

55925555

59295525

等等......

这些数字可以通过键盘输入。

每个引用包含2个参数:

  1. speed
  2. steps

示例:

28546455 -->速度: 500

-->步骤: 10000

95685615 -->速度: 300

-->步骤: 20000

等.

我做了这个程序,但它似乎不起作用?我无法传递第一个变量条目,它是引用编号。

有什么帮助吗?

代码语言:javascript
复制
#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] = '\0';

        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] = '\0';

        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] = '\0';

        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");
}

这是Reference.h

代码语言:javascript
复制
#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
EN

回答 1

Stack Overflow用户

发布于 2018-06-13 03:47:14

据我所知,你想要的记忆不会在每次Arduino关闭时都被抹去。对、EEPROM、进行了研究。

在调试方面,您在那里拥有的代码有点难以阅读。尝试插入一些语句,这些语句在程序执行过程中打印某个变量的值,并查看错误所在。

祝你好运!告诉我们发生了什么。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50793277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档