Помогите исправить ошибку в коде
void setup() {
Serial.begin(9600);
pinMode(6, OUTPUT);
pinMode(7, INPUT);
pinMode(8, OUTPUT);
}
void loop() {
int t = 24;
int dist = getMm(t);
Serial.println(dist);
delay(50);
}
int getMm(int t) {
digitalWrite(6, HIGH);
delayMicroseconds(10);
digitalWrite(6, LOW);
uint32_t us = pulseIn(7, HIGH);
return (us * (t * 6 / 10 + 330) / 2000ul);
}
if(dist()>100){
digitalWrite(3, HIGH);
delay(500);
digitalWrite(3, LOW);
delay(500);
}
C/C++
Программирование скетча ардуино
void setup() //сетап окей
{
Serial.begin(9600);
pinMode(6, OUTPUT);
pinMode(7, INPUT);
pinMode(8, OUTPUT);
}
void loop() //луп окей
{
int t = 24;
int dist = getMm(t);
Serial.println(dist);
delay(50);
}
int getMm(int t) //функция окей
{
digitalWrite(6, HIGH);
delayMicroseconds(10);
digitalWrite(6, LOW);
uint32_t us = pulseIn(7, HIGH);
return (us * (t * 6 / 10 + 330) / 2000ul);
}
if(dist()>100) //а это что за неведомая херь и к чему относится?
//если нужно сделать перемигивание светодиодами - оформите это функцией
//или включите в loop. Это рас. Два - dist это у вас переменная int. А
//что такое dist() ?
//Да и еще - 3 пин не задан в PinMode.
{
digitalWrite(3, HIGH);
delay(500);
digitalWrite(3, LOW);
delay(500);
}
Код содержит несколько ошибок.
Во-первых, переменная dist никогда не используется в операторе if. Вместо вызова функции dist вам следует просто использовать переменную dist.
Во-вторых, в функции dist отсутствует параметр. При вызове функции dist вам необходимо передать переменную t в качестве аргумента, например: dist(t).
В-третьих, функция digitalWrite вызывается с неправильным pin-кодом в инструкции if. В инструкции if вы пытаетесь выполнить запись на вывод 3, но вы не объявили вывод 3 в качестве вывода в функции настройки. Вместо этого вам следует использовать pin-код, который вы объявили в качестве выходного в функции настройки.
Вот исправленный код:
Во-первых, переменная dist никогда не используется в операторе if. Вместо вызова функции dist вам следует просто использовать переменную dist.
Во-вторых, в функции dist отсутствует параметр. При вызове функции dist вам необходимо передать переменную t в качестве аргумента, например: dist(t).
В-третьих, функция digitalWrite вызывается с неправильным pin-кодом в инструкции if. В инструкции if вы пытаетесь выполнить запись на вывод 3, но вы не объявили вывод 3 в качестве вывода в функции настройки. Вместо этого вам следует использовать pin-код, который вы объявили в качестве выходного в функции настройки.
Вот исправленный код:
void setup() {
Serial.begin(9600);
pinMode(6, OUTPUT);
pinMode(7, INPUT);
pinMode(8, OUTPUT);
}
void loop() {
int t = 24;
int dist = getMm(t);
Serial.println(dist);
delay(50);
if (dist > 100) {
digitalWrite(8, HIGH);
delay(500);
digitalWrite(8, LOW);
delay(500);
}
}
int getMm(int t) {
digitalWrite(6, HIGH);
delayMicroseconds(10);
digitalWrite(6, LOW);
uint32_t us = pulseIn(7, HIGH);
return (us * (t * 6 / 10 + 330) / 2000ul);
}
Я надеюсь, что это поможет! Дайте мне знать, если у вас возникнут какие-либо другие вопросы.А что ты на форум андуиншиков не пойдешь ?
Раз уж занимаешься этим.
Раз уж занимаешься этим.
Похожие вопросы
- Подскажите как написать код для ардуино
- Программирование на С++
- Программирование на C++
- Как начать изучать программирование?
- Доброго дня! Хочу сменить сферу деятельности . Заинтересовал вариант программирования .
- Программирование на C++
- Книги по программированию.
- Может ли новичок в программирование начать с c++/Gamedev
- Чем отличаются языки программирования ???
- Помогите самоучке с ардуино/с++