Пытаюсь сделать тюнер. К плате Arduino Uno подключены 3 светодиода, каждый из которых соответствует одной ситуации (слишком высокая, низкая или правильная высота). Python обрабатывает обнаружение заметки в соответствии с входом микрофона и определяет, какой светодиод должен быть включен, но, поскольку это живой тюнер, Python отправляет информацию довольно быстро. Я понял, как включать светодиоды по одному и держать его включенным до тех пор, пока входной сигнал не меняется, но он работает только на низкой скорости, когда я делаю это вручную, с помощью такой программы Python:
code=1
while code!=0:
code=input("Code?")
ser.write(code.encode('utf-8'))
Если я попробую это с кодом Python, например:
code= '5'
while 1:
ser.write(code.encode('utf-8'))
тогда светодиоды просто не горят.
Вот мой код Arduino:
int hauteur = 0;
void setup() {
pinMode (2, OUTPUT); //red pin
pinMode (6, OUTPUT); //green pin
pinMode (5, OUTPUT); //yellow pin
Serial.begin(9600);
}
void loop() {
if(Serial.available ()) {
hauteur = Serial.parseInt();
while (hauteur==2) {
(digitalWrite(2,HIGH));
if (Serial.available ()) {
hauteur=Serial.parseInt();
}
}
digitalWrite(2,LOW);
while (hauteur==5){
(digitalWrite(5,HIGH));
if (Serial.available ()) {
hauteur=Serial.parseInt();
}
}
digitalWrite(5,LOW);
while (hauteur==6){
(digitalWrite(6,HIGH));
if (Serial.available ()) {
hauteur=Serial.parseInt();
}
}
digitalWrite(6,LOW);
Serial.flush();
}
}
Если 2, 5 или 6 отправляются Python с достаточным промежутком времени между ними, тогда плата выполняет то, что должна делать, и включает соответствующий светодиод. Однако отправлено слишком быстро, больше ничего не происходит. Как я могу сократить этот необходимый промежуток времени, чтобы получить изменение освещения в реальном времени в соответствии с тем, что отправлено Python?