gpt4 book ai didi

c++ - 如何零终止键盘输入?

转载 作者:行者123 更新时间:2023-11-30 03:33:52 25 4
gpt4 key购买 nike

我需要使用 4x3 键盘来移动使用伺服库的 bldc 电机。我设法将键盘输入放在一个字符串中,但我无法将其终止。代码的想法是,我输入一个介于 0-180 之间的伺服值以从键盘移动伺服。然后将输入值中继到 bldc。不知何故,我该如何终止字符串??

#include "Keypad.h"
#include <LiquidCrystal.h>
#include <Servo.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(A0,A1,A2,A3,A4,A5);
Servo myservo;

const byte ROWS = 4; //four rows
const byte COLS = 3; //four columns
char keys[ROWS][COLS] =
{{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {9,8,7,6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5,4,3}; //connect to the column pinouts of the keypad
int count=0;

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup()
{
Serial.begin(9600);
Serial.print("enter:");
myservo.attach(11);
}


void loop()

{
char key = keypad.getKey();
char value[4];
int i=0;
if (key >= '0' && key <= '9')
{
value[i]=key;
i++;
value[i]= 0 ;
if ( i = 3)
{
value[i] = true;
}
}

if ( key = '#')
{
value[i]= true;
Serial.print(value);
}

if (value[i] = true)
{
int pos = value[4].toInt;
myservo.write( value);
}


}

最佳答案

您通常不需要终止字符串。如果您知道长度,通常就足够了。所以 keys 是一个 4x3 数组,您不需要终止这 4 个字符串中的任何一个。

您将一个字符存储在 value[4] 中。然后,您始终在 value[1] 处对其进行 null 终止。

你真正的问题是 = 是赋值而 == 是比较。

关于c++ - 如何零终止键盘输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42499339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com