Не выходит короткий импульс

Благодарю вас за науку.

Всем привет! Попробовал ваш скетч всё отлично работает. Не понял как строка while даёт указание на отключение светодиода??

нда…
видимо надо было так

const int RE = A0;//подключаю реостат
const int BU = 7;//подключаю комп
int val = 0;// переменная для хранения RE
const int OUT = 3;// выход


void setup() {

  pinMode (OUT, OUTPUT); // пин на выход
  pinMode (BU, INPUT_PULLUP); // пин на вход с подтяжкой к +
  
}

void loop() {

  if (digitalRead(BU) == LOW) { //если кнопку нажали
    digitalWrite(OUT, HIGH); //зажигаем светодиод
    delay(2); // ждем 2 миллисекунды
    digitalWrite(OUT, LOW); // гасим светодиод
    while(digitalRead(BU) == LOW); // ждем пока не отпустят кнопку
  }

}

Я понял зачем я не понял пока как. Сейчас об этом читаю в повести.

Тебя обманули, когда сказали что Ардуино - это просто. :smile:

ЗЫ: А вообще на будущее не запоминай, а запиши - «В программировании микроконтроллеров (в частности) - нужно разделять «телодвижения», тогда проблем не будет.

В своем городе, Ватсон!
Только не пытайтесь найти “Курсы по Ардуино”.
Курсы должны называться “по программированию”, и “по схемотехнике”.
Если у Вас есть в/о, можно попытаться подучиться по учебникам. В первом случае это Шилдт и Керниган-Ритчи, во втором - Хоровиц-Хилл и Титце-Шенк.

1 лайк

Всем привет. Вопрос в каком разделе писать описание реостата? Например если Программный кодif (val ==256){ delay(10);
}
Вообще я правильно пишу?

[quote="Juzame, post:28, topic:17413"]
if (val ==256){ delay(10);
}
[/quote]


И если реостат разбит на 20ть значений, то каждое значение надо прописывать подобным образом?

Попробовал вот так ничего не получается.`const int RE = A0;//подключаю реостат
const int BU = 7;//подключаю комп
int val = 0;// переменная для хранения RE
const int OUT = 4;// выход

void setup() {
pinMode (OUT, OUTPUT);
pinMode(BU, INPUT_PULLUP);

}

void loop() {
val = analogRead(RE);
if (val > 100){delay(2);}
if (val > 200){delay(30);}
if (val > 300){delay(4);}
if (val > 400){delay(5);}
if (val > 500){delay(6);}
if (val > 600){delay(7);}
if (val > 700){delay(8);}
if (val > 800){delay(500);}
while(digitalRead(BU) == LOW){
digitalWrite(OUT,HIGH);
delay(2);
digitalWrite(OUT,LOW);
while(digitalRead(BU)== LOW);

}

}`

const int RE = A0;//подключаю реостат
const int BU = 7;//подключаю комп
int val = 0;// переменная для хранения RE
const int OUT = 4;// выход
  

void setup() {
  pinMode (OUT, OUTPUT);
  pinMode(BU, INPUT_PULLUP); 
 
  

}

void loop() {
  val = analogRead(RE);
   if (val > 100){delay(2);}
  if (val > 200){delay(30);}
  if (val > 300){delay(4);}
  if (val > 400){delay(5);}
  if (val > 500){delay(6);}
  if (val > 600){delay(7);}
  if (val > 700){delay(8);}
  if (val > 800){delay(500);}
while(digitalRead(BU) == LOW){
  digitalWrite(OUT,HIGH);
  delay(2);
  digitalWrite(OUT,LOW);
  while(digitalRead(BU)== LOW);
   
}

}

у тя как с логикой, чудо?

2 лайка

1.Посмотрите описание функции map()
2. Функция delay() способна принимать переменную, т.е. может вычисляться “на лету”

Всем Hi. Он же Шалом. Дим-мычъ по вашему ЦУ прописал MAP. Всё работает! Огомное вам “От души!” Вопрос разрешение у delay не меняется? Только micros?

Это шарада?

2 лайка

Нет это “Краткость-сестра таланта”)). Я о разрешении delay, минимум это одна милисекунда? То-есть нельзя сделать 3,472 мили секунды?

Мили секунда это достаточно долго)).

1 лайк

= 5587,6424 метра.

Одним словом с двумя Л!

1 лайк

можно, если задавать задержку в МИКРО-секундах
Как - смотрите в справочнике по командам Ардуино