Просто у меня это было «как сюжет фильма-комедии»
А я вот так подумал, а вот реально где написано, что если считал величину, та надо её и использовать для дальнейшего? А не первую попавшуюся переменную? Вот правда? Где написано, что прежде, чем какать надо штаны снять? Похоже, прав ТС - “ни где”! И как быть?
это кто с родительским ремнем не впитал - то уже все, так в грязных штанах всю жизнь и будет ходить…
Да… и эти люди рассуждают о минимальной продолжительности сигнала))
Вам надо бы сюда сначала
Ошибиться то каждый может, не зазорно, но здесь видно, что ТС упорно отрицает какое-либо чтение учебника, ибо это один из первых примеров для начинающих))
Беда в том, что одни новички пишут другим примеры с глупыми комментариями типа:
const int RE = A0;//подключаю реостат
Понятное дело, что человек, второй раз открывший IDE и закопистивший такую строку, искренне считает, что реостат подключен, то ардуина сама разберется откуда и чего брать.
Сделал так что-бы проверить .`const int RE = A0;//к А0 подключаю реостат
const int BU = 7;// к 7 выводу подключаю комп
const int OUT = 4;// с 4 выход
int val = 0;// переменная для хранения знач с реостата
void setup() {
pinMode (OUT, OUTPUT);
pinMode (BU, INPUT_PULLUP);
}
void loop() {
val = map(analogRead(A0),0,1023,0,4000);// присваиваю новые значения к значениям реостата
digitalWrite(OUT, HIGH);//на выходе делаем HIGH
delayMicroseconds(val);// ждём паузу согласно реостату
digitalWrite(OUT, LOW);// опускаем OUT в LOW
delayMicroseconds(3000);
}`
Всё работает . То-есть светодиод меняет яркость в зависимости то поворота ручки реостата. Добавил в основной код, подключил к источнику сигнала на выходе тишина. У ардуино нет защиты от импульсов на входе? Я к тому что может какие нибудь импульсы вводят контролер в состояние защиты? С таким не сталкивались? Вот так выглядит основной код
const int RE = A0;//к А0 подключаю реостат
const int BU = 7;// к 7 выводу подключаю комп
const int OUT = 4;// с 4 выход
int val = 0;// переменная для хранения знач с реостата
void setup() {
pinMode (OUT, OUTPUT);
pinMode (BU, INPUT_PULLUP);
}
void loop() {
val = map(analogRead(A0),0,1023,500,3000);// присваиваю новые значения к значениям реостата
while(digitalRead(BU) == LOW){// условие если на входе BU LOW
digitalWrite(OUT, HIGH);//на выходе делаем HIGH
delayMicroseconds(val);// ждём паузу согласно реостату
digitalWrite(OUT, LOW);// опускаем OUT в LOW
while(digitalRead(BU) == LOW);//ждём следующего нажатия
}
}
const int RE = A0;//к А0 подключаю реостат
const int BU = 7;// к 7 выводу подключаю комп
const int OUT = 4;// с 4 выход
int val = 0;// переменная для хранения знач с реостата
void setup() {
pinMode (OUT, OUTPUT);
pinMode (BU, INPUT_PULLUP);
}
void loop() {
val = map(analogRead(A0),0,1023,0,4000);// присваиваю новые значения к значениям реостата
digitalWrite(OUT, HIGH);//на выходе делаем HIGH
delayMicroseconds(val);// ждём паузу согласно реостату
digitalWrite(OUT, LOW);// опускаем OUT в LOW
delayMicroseconds(3000);
}
``` Так выглядит проверочный фрагмент кода.
Бредово выглядит. Какова по-Вашему логическая связь между строками №14 и №18? Как они взаимодействуют?
Это в основном коде или в проверочном?
Почему дважды while?
Это в том коде, перед которым написана процитированная мною фраза. Хотите понятнее - пишите понятнее сами.
Не понял к чему это? Причём дважды или трижды используется тот или иной опреатор. Вопрос был
Добавлю попутно: не надо засорять код очевидными комментариями. Не надо буквально описывать действия операторов. Надо писать на уровне алгоритма, а не оператора. Что-то вроде “при нажатии кнопки делаем то-то…”. Потом самому проще будет разобраться в своей писанине.
В 14й строке условие если выполняется то на 7-м выводе BU устанавливаем высокий уровень с продолжительностью val. В 18 строке но без параметров что останавливает код до следующей смены уровня сигнала.
Источник сигнала вывод с напряжением 18вольт . Через делитель в 5ть килоом на входе 7 выставляю 4 вольта. Идут прямоугольные импульсы на вход сигнала.
На вход ардуино.
@Juzame Не превращайте форум в “чатик”, редактируйте сообщение.
Чтобы 18 строка останавливала, надо:
while(digitalRead(BU) == HIGH);
И один хрен непонятна логика. Определённо, стоит работать над алгоритмом. Без него нет смысла в операторах копаться.
Простите, Вы читать умеете? Я же Вас спросил
При чём тут то, что Вы пишете?
Ладно, давайте дробить вопрос на части (только читайте внимательно и отвечайте именно на тот вопрос, который задан, а не пишите сочинение на вольную тему).
Вопрос: скажите, пожалуйста, какой уровень на пине BU
(другими словами, какое значение будет возвращать digitalRead(BU)
) в тот момент, когда исполнение строки №18 закончится и программе перейдёт к строке №19?
Пожалуйста простой ответ: HIGH
или LOW
. Не надо пространных рассуждений.