2 ультразвуковых дальномера

Sergik112
Offline
Зарегистрирован: 08.07.2015

подскажите как написать скетч на 2 ультразвуковых дальномера.с одним все работает,через какие команды прописать 2 датчик что б управлять 2 реле.вот код на один датчик.

const int Trig = 8; 
const int Echo = 9; 
const int ledPin = 11;  // 
void setup() 
{ 
pinMode(Trig, OUTPUT); 
pinMode(Echo, INPUT); 
pinMode(ledPin, OUTPUT); 


  
Serial.begin(9600); 
}

unsigned int time_us=0;

unsigned int distance_sm=0;

void loop() 
{ 
digitalWrite(Trig, HIGH); // Подаем сигнал на выход микроконтроллера 
delayMicroseconds(10); // Удерживаем 10 микросекунд 
digitalWrite(Trig, LOW); // Затем убираем 
time_us=pulseIn(Echo, HIGH); // Замеряем длину импульса 
distance_sm=time_us/58; // Пересчитываем в сантиметры 
Serial.println(distance_sm); // Выводим на порт

if (distance_sm<50) // Если расстояние меньше 50 сантиметром 


{ 
   digitalWrite(ledPin, 1); // Зажигаем светодиод 
   
} 
else 
{ 
   digitalWrite(ledPin, 0); // иначе тушим 
   
} 
  
delay(100); 
}

 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Вы на самом деле хотите за это заплатить?

Green
Offline
Зарегистрирован: 01.10.2015

5! "А почему бы и нет"))

Sergik112
Offline
Зарегистрирован: 08.07.2015

я хочу что б подсказали как прописать 2 датчик что б они не ссорились.дальше я сам

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Для этого нужно сюда писать: http://arduino.ru/forumy/programmirovanie

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Sergik112 пишет:

я хочу что б подсказали как прописать 2 датчик что б они не ссорились.дальше я сам

const int sensor1Trig = 5;
const int sensor1Echo = 6;
const int led1Pin = 7;  
 
const int sensor2Trig = 9;
const int sensor2Echo = 10;
const int led2Pin = 11;

а дальше по смыслу

 
Sergik112
Offline
Зарегистрирован: 08.07.2015

вот написал но 2 й датчик так и не работает 

const int sensor1Trig =8 ;
const int sensor1Echo =9 ;
const int led1Pin =7 ; 
const int sensor2Trig =5 ;
const int sensor2Echo = 6;
const int led2Pin = 4;

void setup() 
{  
  pinMode(sensor1Trig, OUTPUT); //инициируем как выход 
  pinMode(sensor1Echo, INPUT); //инициируем как вход 
  pinMode(led1Pin, OUTPUT); 
  
pinMode(sensor2Trig, OUTPUT); //инициируем как выход 
  pinMode(sensor2Echo, INPUT); //инициируем как вход 
  pinMode(led2Pin, OUTPUT); 
  Serial.begin(9600); 
  /* задаем скорость общения. В нашем случае с компьютером */
} 
unsigned int impulseTime=0; 
unsigned int distance_sm=0; 

void loop() 
{  
  digitalWrite(sensor1Trig, HIGH); 
  /* Подаем импульс на вход trig дальномера */
  delayMicroseconds(10); // равный 10 микросекундам 
  digitalWrite(sensor1Trig, LOW); // Отключаем 
  impulseTime=pulseIn(sensor1Echo, HIGH); // Замеряем длину импульса 
  distance_sm=impulseTime/58; // Пересчитываем в сантиметры 
  Serial.println(distance_sm); // Выводим на порт 
  if (distance_sm<73) // Если расстояние менее 73 сантиметром 

  digitalWrite(sensor2Trig, HIGH); 
  /* Подаем импульс на вход trig дальномера */
  delayMicroseconds(10); // равный 10 микросекундам 
  digitalWrite(sensor2Trig, LOW); // Отключаем 
  impulseTime=pulseIn(sensor2Echo, HIGH); // Замеряем длину импульса 
  distance_sm=impulseTime/58; // Пересчитываем в сантиметры 
  Serial.println(distance_sm); // Выводим на порт 
  if (distance_sm<90) // Если расстояние менее 90 сантиметром 
  {     
    digitalWrite(led1Pin, HIGH); // Светодиод горит
    digitalWrite(led2Pin, HIGH); // Светодиод горит
  }  
  else 
  {   
    digitalWrite(led1Pin, LOW); // иначе не горит 
    digitalWrite(led2Pin, LOW); // иначе не горит
  }   
  delay(100); 
  /* ждем 0.1 секунды, Следующий импульс может быть излучён, только после исчезновения эха от предыдущего. 
   Это время называется периодом цикла (cycle period). 
   Рекомендованный период между импульсами должен быть не менее 50 мс.  */
}

 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

строчка 32 озадачила

я могу понять, как работает ваш скетч, а вы можете?

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

1. Два подключенных  датчика на разных пинах по одному ( независимо, отдельно ) работают как в примерах?

2. Два разных  датчика на разных пинах, с задержкой опроса между ними например пару секунд работают?

Подсказка: используйте вывод дистанции в сериал

Про конденсатор 100-470 мкФ между ножками питания датчиков что-нибудь слышали?

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

trembo, у него второй датчик корректно работает, только если первый выдает меньше 73 см.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

После ИФ меньше 73 ( из-за отсутствия скобок)  включает  триггер пин2 и запуск измерения, а иначе не включает.
Плохая привычка  не ставить в скобки даже один оператор.

 

Green
Offline
Зарегистрирован: 01.10.2015

trembo пишет:

Плохая привычка  не ставить в скобки даже один оператор.

"На это счёт есть несколько мнений. Одно моё - остальные неправильные!*

Sergik112
Offline
Зарегистрирован: 08.07.2015

за конденсатор не слышал,по отдельности еще не пробовал.А конденсатор параллельно или последовательно питанию нужно?и на один датчик или на 2?

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Я паяю между + и - прямо на плате под кварцем https://www.aimagin.com/media/catalog/product/cache/1/image/9df78eab3352...

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Sergik112 пишет:

за конденсатор не слышал,по отдельности еще не пробовал.А конденсатор параллельно или последовательно питанию нужно?и на один датчик или на 2?

исправьте ошибку в коде. не нужны там конденсаторы.

Sergik112
Offline
Зарегистрирован: 08.07.2015

а скетч вообще правильный?или подправить нужно

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Sergik112 пишет:

а скетч вообще правильный?или подправить нужно

Меня мало что может так озадачить, как это сейчас вы сделали...