Управление диодом при поступлении сигнала с порта
- Войдите на сайт для отправки комментариев
Сб, 07/05/2016 - 10:29
Хочу сделать, чтобы диод включался автоматически( в зависимости от освещённости), при получении 1 с порта, а если 0, то выключаем. Не получается сделать, чтобы постоянно светодиод менял яркость, а не только при получении сигнала.
#define foto 0
void setup()
{
Serial.begin(9600);
pinMode(10, OUTPUT);
}
void loop()
{
Serial.println(analogRead(foto));
if(Serial.available())
{
int c = Serial.read();
if (c == '1')
{
trololo();
Serial.flush();
}
else if (c == '0')
{
lol();
Serial.flush();
}
}
}
void trololo()
{
int val = (analogRead(foto));
val = constrain (val, 190, 630);
int Level = map (val ,630 ,190, 0 , 255);
analogWrite (10, Level);
}
void lol()
{
analogWrite (10, 0);
}
Не получается сделать, чтобы постоянно светодиод менял яркость, а не только при получении сигнала.
Насколько я понял Вагш код, у Вас не не получается, а Вы просто не пытались. Если я ошибаюсь, скажите в какой(их) строке Вы пытаетесь это сделать?
Строку 13 измените на
charc =Serial.read();, думаю, сами догадаетесь, почему.Тоже не вижу в коде "постоянно светодиод менял яркость"
Возможно что надо и не пытался, могу ошибаться. Пишу первый раз, решил с простенького начать)) Прошу помочь или направить в нужное русло.
как я понимаю, моя функция "trololo" должна быть по типу, как loop. Пробовал эти строки в loop, но потом в trololo не видит "Level"
как я понимаю, моя функция "trololo" должна быть по типу, как loop.
Ну, по типу они идентичны - обе void.
Если Вы хотите, чтобы у Вас менялась яркость, Вы пропишите это в программе, попробуйте, а потом уж, если не получится, обращайтесь за помощью. Пока же предмета для помощи нет, есть просьба сделать за Вас, а это делается в другом разделе форума.
Я не прошу сделать, просто направьте, пожалуйста, в нужное русло.
Ну, по типу они идентичны - обе void.
Если Вы хотите, чтобы у Вас менялась яркость, Вы пропишите это в программе, попробуйте, а потом уж, если не получится, обращайтесь за помощью. Пока же предмета для помощи нет, есть просьба сделать за Вас, а это делается в другом разделе форума.
Почему я прошу, когда я это в loop пишу, то меняется всё автоматически, без проблем.
Простите, но тогда я вообще не понимаю Вашей проблемы. Если Вы знаете как сделать, то делайте. Если не знаете, то объясните проблему толком. И приведите тот код, который не работает. Тот код, что я виже сейчас - да, яроксть в нём не меняется, но там и попытки её менять нет. Я Вас где спросил где Вы пытаетесь её менять, в ответ что-то непоянтное "если ставлю, если не ставлю". Вы можете сказать, "я пытаюсь поменять яркость в строке №ХХХ, но почему-то зараза не меняется". Если Вы просто хотите, что за Вас кто-то написал изменение яркости, я Вам уже сказал куда надо обращаться.
Простите, но тогда я вообще не понимаю Вашей проблемы. Если Вы знаете как сделать, то делайте. Если не знаете, то объясните проблему толком. И приведите тот код, который не работает. Тот код, что я виже сейчас - да, яроксть в нём не меняется, но там и попытки её менять нет. Я Вас где спросил где Вы пытаетесь её менять, в ответ что-то непоянтное "если ставлю, если не ставлю". Вы можете сказать, "я пытаюсь поменять яркость в строке №ХХХ, но почему-то зараза не меняется". Если Вы просто хотите, что за Вас кто-то написал изменение яркости, я Вам уже сказал куда надо обращаться.
Вот
void trololo() { int val = (analogRead(foto)); val = constrain (val, 190, 600); int Level = map (val ,600 ,190, 0 , 255); analogWrite (10, Level); }но это зараза работает, если в loop(). Простите, но я просто в первый раз пишу.
но это зараза работает, если в loop(). Простите, но я просто в первый раз пишу.
Простие, мне это немного надоело. ЧТО в loop? Все 7 строк? Или с 3 по 6?
Если первое - то не может работать. Если второе, то как функция по-Вашему будет работать если Вы её НЕ ВЫЗЫВАЕТЕ? Поставьте первой строчкой loop вызов этой функции ( trololo(); ) и будет работать, куда она денется-то?
Спасибо, заработало) Буду дальше думать
Не за что. Постарайтесь яснее формулировать вопросы, а то Вы же сами полдня потеряли на ровном месте.