Помочь отладить этот код, задержка в микросекундах не работает, и сервопривод также записывает на 180

это не мой код, это то, что я нашел в makersguide я пытался использовать то же самое, но это не работает

#include <Servo.h>


// Определение тригонометрического и эхо-вывода:
#define trigPin 10
#define echoPin 9
// Определение переменных:
long duration;
int distance;
void setup() {
// Определение входных и выходных данных:
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
// Очистите триггер, установив его на НИЗКОМ уровне:
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin,HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Считайте echoPin, pulseIn() возвращает длительность (длину импульса) в
microseconds:
duration = pulseIn(echoPin, HIGH);
// Вычислите расстояние:
distance = duration * 0.034 / 2;
// Выведите расстояние на последовательном мониторе (Ctrl+Shift+M):
Serial.print("Distance = ");
Serial.print(distance);
Serial.println(" cm");
delay(50);
}


// Включить библиотеку сервоприводов:
#include <Servo.h>
// Создать новый сервообъект:
Servo myservo;
// Определите вывод сервопривода:
#define servoPin 9
// Создайте переменную для хранения положения сервопривода:
int angle = 0;
voidsetup() {
// Присоедините серво-переменную к штифту:
myservo.attach(servoPin);
}
  void loop(){
  myservo.write(90);
  delay(1000);
  myservo.write(180);
  delay(1000);
  myservo.write(0);
  delay(1000);
  // Поворот от 0 до 180 градусов:
  for (angle = 0; angle <= 180; angle += 1) {
  myservo.write(angle);
  delay(0);
  }
  for (angle = 180; angle <= 0; angle -= 1) {
    myservo.write(angle);
    delay(0);

  }
  delay(1000);
 }

, 👍-1

Обсуждение

"Не работает" мало о чем нам говорит. Что происходит? Что угодно? Возможно, это проблема с проводкой, которую мы не можем определить, прочитав ваш вопрос. Может быть, это не ** компилируется **? Кажется, у вас есть две функции "loop" и "voidsetup", что бы это ни было., @Nick Gammon

в нем говорится, что мой цикл void ранее определен, @NEXE

и это также говорит о том, что ISO C ++ запрещает объявление void setup без типа [-fpermissive] в функции void loop( ), @NEXE

На самом деле в нем говорилось: "предупреждение: ISO C ++ запрещает объявление 'voidsetup' без типа [-fpermissive]". Обратите внимание, что вы пропустили пробел между "void" и "setup". Вот почему мы просим вас скопировать и вставить сообщение об ошибке, а не просто перефразировать его., @Nick Gammon

Для объединения скетчей посмотрите на это question. Есть также ссылки на аналогичные вопросы., @chrisl


1 ответ


0

В вашем коде есть две "циклические" функции. У вас не может быть двух функций с одинаковым именем (и с одинаковым списком аргументов, в вашем случае без аргументов) в одном блоке компиляции (фрагменте кода).

Это очень похоже на то, что вы объединили два найденных фрагмента кода в один, а затем попытались скомпилировать его. Ты не можешь этого сделать. Выбирайте одно или другое. Во второй "половине" у вас неправильно указано "voidsetup", которое должно быть "void setup".

В следующий раз, когда вы будете публиковать вопрос, и если вопрос касается сообщения об ошибке, пожалуйста, скопируйте и вставьте сообщение об ошибке. Мы не умеем читать мысли. Вы можете видеть то, что находится на вашем экране, а мы нет.

Смотрите: Как мне задать хороший вопрос об Arduino?

,