Уважаемые участники форума.
Пришло время и мне начать учиться чему-то новому, и оказалось, что новая тема для меня - Ардуино.
Если у кого есть желание помочь - большое спасибо.
На данный момент делаю обработку двух датчиков: один - ультра, с замером дистанции, и второй - инфра,
с пороговым включением (при срабатывании - на выходе - "0").
По раздельности оба датчика работают как положено в программе. А вот при объединении, выход сходит с ума.
Ткните меня , чего это я не догоняю:
07 | pinMode(Trig, OUTPUT); |
09 | pinMode(ledPin, OUTPUT); |
10 | pinMode(Infra, INPUT); |
15 | unsigned int time_us = 0; |
16 | unsigned int distance_sm = 0; |
20 | digitalWrite(Trig, HIGH); |
22 | digitalWrite(Trig, LOW); |
23 | time_us=pulseIn(Echo, HIGH); |
24 | distance_sm=time_us/58; |
25 | Serial .println(distance_sm); |
26 | if (distance_sm<50 || Infra == LOW) |
28 | digitalWrite(ledPin, 1); |
33 | digitalWrite(ledPin, 0); |
1
if
(distance_sm<50||digitalRead(Infra) == LOW)
нехватает чтения состояния ноги.
Спасибо.
Заработало. Обнаружил , что ЖК экраны сбрасывают датчик ультра MC-SR04 на "0" см. (может кому пригодится)
Пришёл сын, посмотрел на моё творение и всё ...
Тут же мне рассказал, что так начинать учить негоже - надо сразу по-настоящему,
поэтому нечего забивать ограниченную память, а следует напрямую обращаться к компилятору.
Вот его первое изменение в скетче, загрузил, работает. В следующий раз обещал ещё...
Насколько верна такая постановка скетча ?:
01
#define Trig 8
02
#define Echo 9
03
#define ledPin 11
04
#define Infra 10
05
06
void
setup
( ) {
07
pinMode(Trig, OUTPUT);
08
pinMode(Echo, INPUT);
09
pinMode(ledPin, OUTPUT);
10
pinMode(Infra, INPUT);
11
12
Serial
.begin (9600);
13
}
14
15
unsigned
int
time_us = 0;
16
unsigned
int
distance_sm = 0;
17
18
void
loop
()
19
{
20
digitalWrite(Trig, HIGH);
21
delay (10);
22
digitalWrite(Trig, LOW);
23
time_us=pulseIn(Echo, HIGH);
24
distance_sm=time_us/58;
25
Serial
.println(distance_sm);
26
if
(distance_sm<50 || digitalRead(Infra) == LOW)
27
{
28
digitalWrite(ledPin, 1);
29
}
30
else
31
{
32
33
digitalWrite(ledPin, 0);
34
}
35
delay (100);
36
}
37
38
//end
На вкус и цвет все фломастеры разные. Используйте тот подход который больше нравится. Пока Вам память экономить некуда :) А когда упретесь, то и придет понятие где и как и главное зачем надо экономить.
если это весь размер скетча, то я б вообще не заморачивался. pinMode(8,OUTPUT) и досвидос.
Что такое #define? Как он работает? В чем отличие от первой версии? Если Ваш сын Вам это объяснил то это плюс, если просто сказал делать так и Вы запомнили но не поняли, тогда однозначно минус.
Что такое #define? Как он работает? В чем отличие от первой версии? Если Ваш сын Вам это объяснил то это плюс, если просто сказал делать так и Вы запомнили но не поняли, тогда однозначно минус.
То, что он объяснил - прямое обращение к компилятору, без задействования ресурсов программы.
БЫл у меня пробегом на 5 минут, в следующий раз обещал рассказать больше.
У сына специализация совсем другая, но иногда ему приходится работать с языками низкого уровня и
кодами программ.
Ну тогда Вы сами должны определить, что Вам нужно. Если серьезно хотите изучать, то нужно с ассемблера начинать, а если так, для общего развития то не стоит бежать вперед паравоза, и учиться по порядку, иначе можно быстро запутаться и потерять интерес.
Ну тогда Вы сами должны определить, что Вам нужно. Если серьезно хотите изучать, то нужно с ассемблера начинать, а если так, для общего развития то не стоит бежать вперед паравоза, и учиться по порядку, иначе можно быстро запутаться и потерять интерес.
К сожаленью серьёзно заниматься с азов не получится - семья , дети , работа (другая специальность).
На этой же работе нагрузили требованием - знание электроники и начальное (хотя бы) Ардуино.
С электроникой проблем нет , а вот с Ардуино - только-только учусь.
Спасибо всем за помощь. По мере проблем буду обращаться ещё.