How to Wait for Input in Arduino#
How to Wait for Input in Arduino —— Delft Stack
Serial.available()#
void setup() { Serial.begin(9600); }
void loop() {
while (Serial.available() == 0) {
}
int mydata = Serial.read();
}
!Serial#
void setup()
{
Serial.begin(9600);
while (!Serial);
Serial.print("Hello World");
}
void loop()
{
}
DigitalRead()#
下面的DigitalRead用法有问题吗? digitalread 应该是怎么读都有值啊?
int valPin = 0;
int inputPin = 7;
void setup() { pinMode(inputPin, INPUT); }
void loop() {
while (digitalRead(inputPin) != LOW)
;
{}
valPin = digitalRead(inputPin);
}
实际情况不是判断 digitalRead 有值无值,而是是高还是低,这是正常的操作方法。
Set Timeout#
setTimeout 起了什么作用呢?是5000ms必须会输出吗,还是会报错?
void setup() {
Serial.begin(9600);
Serial.setTimeout(5000); // Set a timeout of 5000 milliseconds (5 seconds)
}
void loop() {
if (Serial.available()) {
String input = Serial.readStringUntil('\n');
Serial.print("Received: ");
Serial.println(input);
}
}
Define a Custom Delimiter#
void setup() { Serial.begin(9600); }
void loop() {
if (Serial.find("X")) {
String input = Serial.readStringUntil('X');
Serial.print("Received: ");
Serial.println(input);
}
}
Wait for a Fixed Length#
void setup() { Serial.begin(9600); }
void loop() {
const int expectedLength = 4;
if (Serial.available() >= expectedLength) {
char buffer[expectedLength];
Serial.readBytes(buffer, expectedLength);
Serial.print("Received: ");
Serial.println(buffer);
}
}