Что я делаю не так? unit8_t' не был объявлен в этой области, ошибка: ожидаемое первичное выражение перед токеном ')'

#include <VirtualWire.h>
const int sen1 = 9;
const int sen2 = 10;
const int sen3 = 11;
const int sen4 = 12;
int key1 = 5, ipin = A1, wpin = A0;
void setup() {
  Serial.begin(9600);
  vw_setup(2000);
  vw_set_tx_pin(3);
  pinMode (key1, INPUT);
  digitalWrite (key1, HIGH);
}
void loop() {
  int dif = 5, dif2 = 500, ldr, wtr;
  long dur1, dur2, dur3, dur4, dis1, dis2, dis3, dis4;
  wtr = analogRead(wpin);
  ldr + analogRead(ipin);
  pinMode(sen1, OUTPUT);
  digitalWrite(sen1, LOW);
  delayMicroseconds(2);
  digitalWrite(sen1, HIGH);
  delayMicroseconds(10);
  digitalWrite(sen1, LOW);
  pinMode(sen1, INPUT);
  dur1 = pulseIn(sen1, HIGH);
  dis1 = microsecondsToInches(dur1);
  pinMode(sen2, OUTPUT);
  digitalWrite(sen2, LOW);
  delayMicroseconds(2);
  digitalWrite(sen2, HIGH);
  delayMicroseconds(10);
  digitalWrite(sen2, LOW);
  pinMode(sen2, INPUT);
  dur2 = pulseIn(sen2, HIGH);
  dis2 = microsecondsToInches(dur2);
  delayMicroseconds(2);
  digitalWrite(sen4, HIGH);
  delayMicroseconds(10);
  digitalWrite(sen4, LOW);
  pinMode(sen4, INPUT);
  dur4 = pulseIn(sen4, HIGH);
  dis4 = microsecondsToInches(dur4);
  Serial.print(dis1);
  Serial.print("s1,");
  Serial.print(dis2);
  Serial.print("s2,");
  Serial.print(dis3);
  Serial.print("s3,");
  Serial.print(dis4);
  Serial.print("s4,");
  Serial.println(); delay(0);
  if (wtr > dif2) {
    wstop();
  }
  if (ldr > dif2 && key1 == HIGH) {
    light();
  }
  if (ldr > dif2 && key1 == HIGH) {
    nolight();
  }
  if (dis2 < 3 || dis3 < 3) {
    stoped();
  }
  if (dis1 < 3 && dis2 > dis1 && dis3 > dis2) {
    group();
  }
  if (dis4 > 3) {
    godown();
  }
  if (dis1 < 3 && dis2 == dis3) {
    jump();
  }
  if (dis1 > 3 && dis2 > 3 && dis3 > 3 && dis4 < 3 && wtr < dif2) {
    forword();
  }
}
long microsecondsToInches(long microseconds) {
  return microseconds / 74 / 4;
}
void forword() {
  char *msg2 = "0";
  vw_send((unit8_t *) msg, strlen(msg2));
  vw_wait_tx(); Serial.print("FORWORD");
  delay(1000);
}
void stoped() {
  char *msg2 = "1";
  vw_send((unit8_t *)msg2, strlen(msg2));
  vw_wait_tx(); Serial.print("STOP");
  delay(1000);
}
void group() {
  char *msg2 = "2";
  vw_send((unit8_t *)msg2, strlen(msg2));
  vw_wait_tx(); Serial.print("GROUP");
  delay(1000);
}
void godown() {
  char *msg2 = "3";
  vw_send((unit8_t *)msg2, strlen(msg2));
  vw_wait_tx(); Serial.print("GODOWN");
  delay(1000);
}
void jump() {
  char *msg2 = "4";
  vw_send((unit8_t *)msg2, strlen(msg2));
  vw_wait_tx(); Serial.print("JUMP");
  delay(1000);
}
void wstop() {
  char *msg2 = "5";
  vw_send((unit8_t *)msg2, strlen(msg2));
  vw_wait_tx(); Serial.print("WSTOP");
  delay(1000);
}
void light() {
  char  *msg2 = "6"
  vw_send((unit8_t *)msg2, strlen(msg2));
  vw_wait_tx(); Serial.print("LIGHT");
  delay(1000);
}

void nolight() {
  char *msg2 = "7";
  vw_send((unit8_t *)msg2, strlen(msg2));
  vw_wait_tx(); Serial.print("NOLIGHT");
  delay(1000);
}

, 👍-1

Обсуждение

Я голосую за закрытие этого вопроса, потому что он касается орфографической ошибки и не имеет прямого отношения к Arduino., @chrisl

Я бы отнес этот код к категории «невосстановимых». Удалите его и начните заново после изучения основ программирования на C., @Majenko

Зачем закрывать такой вопрос? Некоторые люди, включая меня, могут смотреть на опечатку и видеть то, что они ожидают, а не то, что там есть. Иногда мне нужен пинок под зад от кого-то другого. Этот вопрос кажется полезным уроком в том, что «компилятор не понимает, что вы **имеете в виду**. Если у вас есть орфографическая ошибка в вашем коде, она вызовет ошибку компилятора, и вы должны ее исправить»., @Duncan C

Вы уже успешно запускали какой-либо из этих кодов? Когда вы пишете много кода, прежде чем скомпилировать и протестировать какой-либо из них, вы обычно получаете много ошибок или в конечном итоге получаете много непригодного для использования кода, когда обнаруживаете, что какое-то базовое предположение было неверным — или и то, и другое. Начните с малого — напишите несколько строк за раз, скомпилируйте и исправьте все ошибки. Завершите и протестируйте небольшую часть общего проекта и заставьте его работать, прежде чем добавлять к нему что-либо еще. Тогда каждый раз, когда что-то выходит из строя, вы точно знаете, где проблема: она будет в том, что вы только что добавили., @JRobert


1 ответ


1

Вы имеете в виду uint8_t, а не unit8_t. uint8_t означает Unsigned INTeger размером 8.

Кроме того, вы, кажется, взяли два разных скетча и просто сбросили их один за другим. Это не то, как вы комбинируете скетчи. У вас может быть один и только один каждый из setup() и loop().

,

он говорит об этом, ошибка: «unit8_t» не был объявлен в этой области vw_send((unit8_t *) msg, strlen(msg2));, @Tashii Gurung

@TashiiGurung Прочитайте то, что вы написали **очень внимательно**., @Majenko

@TashiiGurung **Очень осторожно**: unit8_t buf [ VW_MAX_MESSAGE_LEN } ; "u nit" вместо "u int" здесь не единственная ошибка, @KIIV

Может тогда стоит починить брекеты? На самом деле вам следует просто полностью удалить «скетч» и начать с нуля. Это соревновательный мусор., @Majenko