Как получить значения и сохранить их для последующего использования в Arduino?

Я хочу создать список, который содержит неопределенное число ссылок, состоящее из 8 чисел:

Пример:

28546455
95685615
55925555
59295525
так далее…….

Эти цифры можно вводить с клавиатуры.

Каждая ссылка содержит 2 параметра:

  1. скорость
  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] = '\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

#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

-7

Решение

Из того, что я понимаю, вы хотите память, которая не будет стираться каждый раз, когда Arduino выключен. Проведите небольшое исследование EEPROM.

С точки зрения отладки код, который у вас есть, немного сложен для чтения. Попробуйте вставить операторы, которые выводят значение определенной переменной по мере выполнения программы, и посмотрите, где она идет не так.

Удачи! Расскажите нам, что происходит.

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]