программа для уз парктроника

Scully
Offline
Зарегистрирован: 12.08.2016

Здравствуйте, не могу написать программу для ультразвукового  парктроника, чтоб работал как тут

https://www.youtube.com/watch?v=3wGPyzirQ54

перепробовал разные варианты программ, вот последняя:

#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
void setup()
{
lcd.begin(16, 1);
pinMode(2, INPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
//lcd.setCursor(0, 1);
delay(100);
for(int i=0;i<16;i++)
delay(500);

lcd.print("Hello, Datsun!!!");
delay(15000);
{
int pingPin = 9;
int inPin = 8;
long duration, inches, cm;
int indec, cmdec;
int incchcoonv = 147;
int cmconv = 59;
String sl = "", s2 = "", s3 = " ", s4 = " ";

//initialise LCD library and pins
void setup()

  lcd.begin(16,2);
  lcd.print("testing...")
  pinMode(pingPin, OUTPUT)
  pinMode(inPin, INPUT)
}

void loop()

  // Send a short LOW followed by High pulse to Trigget input:
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(pingPin, LOW);

  //red the length of the return pulse on Echo output
  duration = pulseIn(inPin, HIGH);

  // convert the time into a distance (non-floating point with decimals
  inches = microsecondsToInches(duration);
  indec = (duration - inches * inchconw) * 10 / inchconv;
  cm = microsecondsToCentimeters(duration);
  cmdec = (duration - cm *cmconv) * 10 / cmconv;
  s1 = String(inches) + "." + String(inches) + "in" + "     ";
  s2 = String(cm) + "." +String(cmdec) + "cm" + "     ";
  lcd.setCursor(0,0);
  lcd.print(s1);
  lcd.setCursor(0,1);
  lcd.print(s2);

  delay(100)
}

 

 

программа выдает следующие ошибки, и я никак не могу понять как их устранить:

C:\Users\VLADIMIR\Documents\Arduino\Datsun\sketch_aug09a\sketch_aug10a\sketch_aug10a.ino: In function 'void setup()':

sketch_aug10a:28: error: expected initializer before 'lcd'

   lcd.begin(16,2);

   ^

sketch_aug10a:30: error: expected ';' before 'pinMode'

   pinMode(pingPin, OUTPUT)

   ^

sketch_aug10a:37: error: expected initializer before 'digitalWrite'

   digitalWrite(pingPin, LOW);

   ^

sketch_aug10a:39: error: 'pingPin' was not declared in this scope

   digitalWrite(pingPin, HIGH);

                ^

sketch_aug10a:44: error: 'duration' was not declared in this scope

   duration = pulseIn(inPin, HIGH);

   ^

sketch_aug10a:44: error: 'inPin' was not declared in this scope

   duration = pulseIn(inPin, HIGH);

                      ^

sketch_aug10a:47: error: 'inches' was not declared in this scope

   inches = microsecondsToInches(duration);

   ^

sketch_aug10a:47: error: 'microsecondsToInches' was not declared in this scope

   inches = microsecondsToInches(duration);

                                         ^

sketch_aug10a:48: error: 'indec' was not declared in this scope

   indec = (duration - inches * inchconw) * 10 / inchconv;

   ^

sketch_aug10a:48: error: 'inchconw' was not declared in this scope

   indec = (duration - inches * inchconw) * 10 / inchconv;

                                ^

sketch_aug10a:48: error: 'inchconv' was not declared in this scope

   indec = (duration - inches * inchconw) * 10 / inchconv;

                                                 ^

sketch_aug10a:49: error: 'cm' was not declared in this scope

   cm = microsecondsToCentimeters(duration);

   ^

sketch_aug10a:49: error: 'microsecondsToCentimeters' was not declared in this scope

   cm = microsecondsToCentimeters(duration);

                                          ^

sketch_aug10a:50: error: 'cmdec' was not declared in this scope

   cmdec = (duration - cm *cmconv) * 10 / cmconv;

   ^

sketch_aug10a:50: error: 'cmconv' was not declared in this scope

   cmdec = (duration - cm *cmconv) * 10 / cmconv;

                           ^

sketch_aug10a:51: error: 's1' was not declared in this scope

   s1 = String(inches) + "." + String(inches) + "in" + "     ";

   ^

sketch_aug10a:52: error: 's2' was not declared in this scope

   s2 = String(cm) + "." +String(cmdec) + "cm" + "     ";

   ^

sketch_aug10a:59: error: expected ';' before '}' token

 }

 ^

exit status 1
expected initializer before 'lcd'
 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

1. Вставляйте код в сообщение, как написано в ЭТОЙ иснтрукции.

2. Почему у Вас два раза объявлено void setup() ?

3. Разберитесь с фигурными скобками в void setup() и void loop(), они не правильно расставлены.

3. Разберитесь и расставьте как положено точки с запятой ( ; ) в конце каждого оператора. Например пропущено после lcd.print(), pinMode() в void setup(), а также после delay() в void loop()

4. Объявление всех переменных (pingPin, inPin, duration, inches, cm и других) вынесите из setup() наружу перед setup().

Scully
Offline
Зарегистрирован: 12.08.2016

http://vk.com/gsemyonov1993?z=photo199015142_427389780%2Falbum199015142_00%2Frev

вот тут схема парктроника
я не программист и не электронщик, мне трудно писать программы. За советы спасибо

#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
void setup()
{
lcd.begin(16, 1);
pinMode(2, INPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
//lcd.setCursor(0, 1);
delay(100);
for(int i=0;i<16;i++)
delay(500);

lcd.print("Hello, Datsun!!!");
delay(15000);
{
int pingPin = 9;
int inPin = 8;
long duration, inches, cm;
int indec, cmdec;
int incchcoonv = 147;
int cmconv = 59;
String sl = "", s2 = "", s3 = " ", s4 = " ";

//initialise LCD library and pins
void setup()

  lcd.begin(16,2);
  lcd.print("testing...")
  pinMode(pingPin, OUTPUT)
  pinMode(inPin, INPUT)
}

void loop()

  // Send a short LOW followed by High pulse to Trigget input:
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(pingPin, LOW);

  //red the length of the return pulse on Echo output
  duration = pulseIn(inPin, HIGH);

  // convert the time into a distance (non-floating point with decimals
  inches = microsecondsToInches(duration);
  indec = (duration - inches * inchconw) * 10 / inchconv;
  cm = microsecondsToCentimeters(duration);
  cmdec = (duration - cm *cmconv) * 10 / cmconv;
  s1 = String(inches) + "." + String(inches) + "in" + "     ";
  s2 = String(cm) + "." +String(cmdec) + "cm" + "     ";
  lcd.setCursor(0,0);
  lcd.print(s1);
  lcd.setCursor(0,1);
  lcd.print(s2);

  delay(100)
}

 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Scully пишет:

http://vk.com/gsemyonov1993?z=photo199015142_427389780%2Falbum199015142_00%2Frev

вот тут схема парктроника
я не программист и не электронщик, мне трудно писать программы. За советы спасибо

Зачем мне схема, если у Вас ошибки в коде? Я указал на ошибки, Вы не исправили ни одной. Кстати, не нужно было при вставке кода убирать нумерацию строк, чтобы на них можно было ссылаться. Вставьте код ещё раз, но обязательно с нумерацией строк. Тогда я точно укажу в каких строках ошибки.

P.S. Если Вы не программист и не электронщик, и ждёте что за Вас всё сделают - то пишите сразу в раздел "Ищу исполнителя". Там за денежку делают. А тут только помогают, если что-то не получается. Но Вам всё равно придётся приложить некоторые усилия.

Scully
Offline
Зарегистрирован: 12.08.2016
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
void setup()
{
lcd.begin(16, 1);
pinMode(2, INPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
//lcd.setCursor(0, 1);
delay(100);
for(int i=0;i<16;i++)
delay(500);

lcd.print("Hello, Datsun!!!");
delay(15000);
{
int pingPin = 9;
int inPin = 8;
long duration, inches, cm;
int indec, cmdec;
int incchcoonv = 147;
int cmconv = 59;
String sl = "", s2 = "", s3 = " ", s4 = " ";

//initialise LCD library and pins
void setup()

  lcd.begin(16,2);
  lcd.print("testing...")
  pinMode(pingPin, OUTPUT)
  pinMode(inPin, INPUT)
}

void loop()

  // Send a short LOW followed by High pulse to Trigget input:
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(pingPin, LOW);

  //red the length of the return pulse on Echo output
  duration = pulseIn(inPin, HIGH);

  // convert the time into a distance (non-floating point with decimals
  inches = microsecondsToInches(duration);
  indec = (duration - inches * inchconw) * 10 / inchconv;
  cm = microsecondsToCentimeters(duration);
  cmdec = (duration - cm *cmconv) * 10 / cmconv;
  s1 = String(inches) + "." + String(inches) + "in" + "     ";
  s2 = String(cm) + "." +String(cmdec) + "cm" + "     ";
  lcd.setCursor(0,0);
  lcd.print(s1);
  lcd.setCursor(0,1);
  lcd.print(s2);

  delay(100)
}

Я не про то, что за меня все сделают, а просто сказал

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Мда, ещё раз внимательно посмотрел код - там полная каша и неразбериха. Вы надёргали откуда-то разных кусков кода и не удосужились их проверить и нормально совместить. Определитесь сначала с "железом" - дисплей в коде указан то однострочный (строка 05), то двухстрочный (строка 28). lcd.begin() должно быть только один раз в коде (синтаксис). Один и тот же пин (D8) в двух местах объявлен то на выход (строка 07), то на вход (строки 18, 31). Пины в коде не совпадают с пинами на схеме на кртинке (например в коде УЗ-дальномер подключен к 8 и 9, а на схеме к 6 и 7). Короче, Вы тупо взяли откуда-то два разных варианта инициализации void setup() и вставили их в один код не разобравшись что к чему....

По поводу синтаксических ошибок:

1) Не хватает точки с запятой ( ; ) в конце строк 29, 30, 31, 58

2) Строка 11 бессмысленна, т.к. нет тела цикла for, он ничего не выполняет. То, что должно выполняться внутри цикла for, должно быть обрамлено фигурными скобками (синтаксис)

3) Содержимое внутри void setup() и void loop() должно должно быть обрамлено фигурными скобками - открывающей и закрывающей. В строке 35 пропущена открывающая фигурная скобка (синтаксис). А в void setup() вообще каша: во-первых, нельзя объявлять два раза (строки 03, 26); во-вторых, опять же фигня с фигурными скобками - должна быть одна открывающая и одна закрывающая (синтаксис); в-третьих, объявлять переменные (строки 17-23) нужно до void setup(), то есть до строки 03.

Scully
Offline
Зарегистрирован: 12.08.2016

Спасибо большое. Я пытался и сам писать программы (много раз), и с интернета брал - ничего не выходит. Спасибо за советы, разбираюсь.