Я получаю сообщение об ошибке?
void setup()
{
Serial.begin(9600);
pinMode(13,OUTPUT);
}
void loop() {
if(Serial.available()>0)
{s_num =Serial.read();}
if(s_num=='0'){
digitalWrite(13,HIGH);
delay(100); //the specified time for 0
digitalWrite(13,LOW);
delay(100);}
if(s_num=='1'){
digitalWrite(13,HIGH);
delay(200);
digitalWrite(13,LOW);
delay(200);}
if(s_num=='2'){
digitalWrite(13,HIGH);
delay(300);
digitalWrite(13,LOW);
delay(300);}
char s_num; if(s_num=='3'){
digitalWrite(13,HIGH);
delay(400);
digitalWrite(13,LOW);
delay(400);}
if(s_num=='4'){
digitalWrite(3,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);}
if(s_num=='5'){
digitalWrite(13,HIGH);
delay(600);
digitalWrite(13,LOW);
delay(600);}
if(s_num=='6'){
digitalWrite(13,HIGH);
delay(700);
digitalWrite(13,LOW);
delay(700);}
if(s_num=='7'){
digitalWrite(13,HIGH);
delay(800);
digitalWrite(13,LOW);
delay(800);}
if(s_num=='8'){
digitalWrite(13,HIGH);
delay(900);
digitalWrite(13,LOW);
delay(900);}
if(s_num=='9'){
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);}
digitalWrite(13,LOW);
s_num=10;
}
@Abdulrahman, 👍-1
Обсуждение1 ответ
Один совет, чтобы предотвратить подобные ошибки: в следующий раз выровняйте {
и}
, и вы увидите ошибку очень быстро:
void setup()
{
Serial.begin(9600);
pinMode(13,OUTPUT);
}
void loop()
{
char s_num;
if(Serial.available()>0)
{
s_num =Serial.read();
}
if(s_num=='0')
{
digitalWrite(13,HIGH);
delay(100); //the specified time for 0
digitalWrite(13,LOW);
delay(100);
}
if(s_num=='1')
{
digitalWrite(13,HIGH);
delay(200);
digitalWrite(13,LOW);
delay(200);
}
if(s_num=='2')
{
digitalWrite(13,HIGH);
delay(300);
digitalWrite(13,LOW);
delay(300);
}
if(s_num=='3')
{
digitalWrite(13,HIGH);
delay(400);
digitalWrite(13,LOW);
delay(400);
}
if(s_num=='4')
{
digitalWrite(3,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
if(s_num=='5')
{
digitalWrite(13,HIGH);
delay(600);
digitalWrite(13,LOW);
delay(600);
}
if(s_num=='6')
{
digitalWrite(13,HIGH);
delay(700);
digitalWrite(13,LOW);
delay(700);
}
if(s_num=='7')
{
digitalWrite(13,HIGH);
delay(800);
digitalWrite(13,LOW);
delay(800);
}
if(s_num=='8')
{
digitalWrite(13,HIGH);
delay(900);
digitalWrite(13,LOW);
delay(900);
}
if(s_num=='9')
{
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
}
digitalWrite(13,LOW);
s_num=10;
}
Как вы можете видеть, char s_name
должен быть объявлен в начале метода, как вам нужно, во второй строке, поэтому вы получите следующий компилируемый код:
void loop()
{
if(Serial.available()>0)
{
s_num =Serial.read();
}
if(s_num=='0')
{
digitalWrite(13,HIGH);
delay(100); //the specified time for 0
digitalWrite(13,LOW);
delay(100);
}
if(s_num=='1')
{
digitalWrite(13,HIGH);
delay(200);
digitalWrite(13,LOW);
delay(200);
}
if(s_num=='2')
{
digitalWrite(13,HIGH);
delay(300);
digitalWrite(13,LOW);
delay(300);
}
char s_num;
if(s_num=='3')
{
digitalWrite(13,HIGH);
delay(400);
digitalWrite(13,LOW);
delay(400);
}
...
}
Теперь вы также можете видеть, что вы обрабатываете переменную s_num, даже если в последовательном классе нет нового значения, поэтому вам, вероятно, следует поместить его внутрь, получив:
void loop()
{
if(Serial.available()>0)
{
char s_num =Serial.read();
if(s_num=='0')
{
digitalWrite(13,HIGH);
delay(100); //the specified time for 0
digitalWrite(13,LOW);
delay(100);
}
}
}
Последнее утверждение s_num=10;
ничего не делает.
Теперь, чтобы значительно сократить ваш код, все цифры выполняют более или менее один и тот же код. Вы можете объединить это, рассчитав время задержки (0 -> 100, 9 -> 1000), и вы получите следующий код:
void setup()
{
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop()
{
if (Serial.available() > 0)
{
char s_num = Serial.read();
if ((s_num >= '0') && (s_num <= '9'))
{
uint16_t delayTime = (s_num - '0' + 1) * 100;
digitalWrite(13, HIGH);
delay(delayTime);
digitalWrite(13, LOW);
delay(delayTime);
}
else
{
digitalWrite(13, LOW);
}
}
}
Вычитая '0' из символьной цифры (от '0' до '9'), вы получаете ее значение.
- Ошибка: "'lcd' does not name a type" при использовании библиотеки LiquidCrystal.
- Arduino IRremote перестает работать
- Как сгенерировать файлы .a и .so для добавления в проект arduino
- Что мне делать с StackOverflow при ошибке компиляции?
- Помогите исправить эту ошибку: expected unqualified-id before 'if'|Arduino
- Есть ли способ автоматически удалить из библиотеки все неиспользуемые части и определения?
- Arduino PID для маятника пропеллера для горизонтальной балансировки
- avrdude ser_open() can't set com-state
Если вы получаете ошибку компиляции, вам необходимо включить в свой вопрос полное сообщение об ошибке (включая информацию о том, где произошла ошибка)., @chrisl