Ультразвуковой дальномер
- Войдите на сайт для отправки комментариев
Вс, 31/01/2016 - 14:46
Всем привет, помогите плиз, есть такой код, он работает прекрасно, но вот возник вопрос, как при первом взмахе на расстоянии 30 см включить светодиод, а при втором взмахе на расстоянии 30 см светодиод выключить?!
#define led1 12 int echoPin = 9; int trigPin = 8; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(led1, OUTPUT); pinMode(11, OUTPUT); Serial.begin(9600); } void loop() { digitalWrite(11, HIGH); int duration, cm, inch, mm; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); cm = duration / 58; inch = duration / 148; mm = duration / 5.8; Serial.println(cm); delay(100); if (cm>20,cm<40) { digitalWrite(led1, HIGH); } if (cm<20) { digitalWrite(led1,LOW); } }
Что мешает определить переменную byte MASHEM=0 и инвентировать ее при вледующем взмахе?
Переменную добавил, взял часть кода из соседней ветки, но что-то неправильно я сделал, что исправить?
попробовал другой код, он заработал, но вопрос: при удержании руки на расстоянии от 20 до 40 см происходит вот что, реле начинает очень быстро щёлкать, как это исправить?
попробовал другой код, он заработал, но вопрос: при удержании руки на расстоянии от 20 до 40 см происходит вот что, реле начинает очень быстро щёлкать, как это исправить?
Я так и не понял(
Помогите плиз
Сделал код, только странность какая появилась, например я включил перые три светодиода, а когда взмах происходит между первым и вторым, то все светодиоды, которые сверху отключаются, т.е. ВТОРОЙ И ТРЕТИЙ, что делать, как это исправить?
Когда Вы зафтксировали первый взмах, Вам нужно сначала дождаться, пока рука уйдет из зоны обнаружения, и только потом ловить второй взмах.