Управление диодом при поступлении сигнала с порта

tottalwar
Offline
Зарегистрирован: 07.05.2016

Хочу сделать, чтобы диод включался автоматически( в зависимости от освещённости), при получении 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);
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

tottalwar пишет:

Не получается сделать, чтобы постоянно светодиод менял яркость, а не только при получении сигнала. 

Насколько я понял Вагш код, у Вас не не получается, а Вы просто не пытались. Если я ошибаюсь, скажите в какой(их) строке Вы пытаетесь это сделать?

Araris
Offline
Зарегистрирован: 09.11.2012

Строку 13 измените на char c = Serial.read(); , думаю, сами догадаетесь, почему.

Тоже не вижу в коде "постоянно светодиод менял яркость"

tottalwar
Offline
Зарегистрирован: 07.05.2016

Возможно что надо и не пытался, могу ошибаться. Пишу первый раз, решил с простенького начать)) Прошу помочь или направить в нужное русло.

tottalwar
Offline
Зарегистрирован: 07.05.2016

как я понимаю, моя функция "trololo" должна быть по типу, как loop. Пробовал эти строки в loop, но потом в trololo не видит "Level"

int val = (analogRead(foto));
val = constrain (val, 190, 630);
int Level = map (val ,630 ,190, 0 , 255);  

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

tottalwar пишет:

как я понимаю, моя функция "trololo" должна быть по типу, как loop. 

Ну, по типу они идентичны - обе void.

Если Вы хотите, чтобы у Вас менялась яркость, Вы пропишите это в программе, попробуйте, а потом уж, если не получится, обращайтесь за помощью. Пока же предмета для помощи нет, есть просьба сделать за Вас, а это делается в другом разделе форума.

tottalwar
Offline
Зарегистрирован: 07.05.2016

Я не прошу сделать, просто направьте, пожалуйста, в нужное русло.

tottalwar
Offline
Зарегистрирован: 07.05.2016

ЕвгенийП пишет:

Ну, по типу они идентичны - обе void.

Если Вы хотите, чтобы у Вас менялась яркость, Вы пропишите это в программе, попробуйте, а потом уж, если не получится, обращайтесь за помощью. Пока же предмета для помощи нет, есть просьба сделать за Вас, а это делается в другом разделе форума.

Почему я прошу, когда я это в loop пишу, то меняется всё автоматически, без проблем.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Простите, но тогда я вообще не понимаю Вашей проблемы. Если Вы знаете как сделать, то делайте. Если не знаете, то объясните проблему толком. И приведите тот код, который не работает. Тот код, что я виже сейчас - да, яроксть в нём не меняется, но там и попытки её менять нет. Я Вас где спросил где Вы пытаетесь её менять, в ответ что-то непоянтное "если ставлю, если не ставлю". Вы можете сказать, "я пытаюсь поменять яркость в строке №ХХХ, но почему-то зараза не меняется". Если Вы просто хотите, что за Вас кто-то написал изменение яркости, я Вам уже сказал куда надо обращаться.

tottalwar
Offline
Зарегистрирован: 07.05.2016

ЕвгенийП пишет:

Простите, но тогда я вообще не понимаю Вашей проблемы. Если Вы знаете как сделать, то делайте. Если не знаете, то объясните проблему толком. И приведите тот код, который не работает. Тот код, что я виже сейчас - да, яроксть в нём не меняется, но там и попытки её менять нет. Я Вас где спросил где Вы пытаетесь её менять, в ответ что-то непоянтное "если ставлю, если не ставлю". Вы можете сказать, "я пытаюсь поменять яркость в строке №ХХХ, но почему-то зараза не меняется". Если Вы просто хотите, что за Вас кто-то написал изменение яркости, я Вам уже сказал куда надо обращаться.

Вот

void trololo()
{
int val = (analogRead(foto));
val = constrain (val, 190, 600);
int Level = map (val ,600 ,190, 0 , 255);  
analogWrite (10, Level);
}

но это зараза работает, если в loop(). Простите, но я просто в первый раз пишу.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

tottalwar пишет:

но это зараза работает, если в loop(). Простите, но я просто в первый раз пишу.

Простие, мне это немного надоело. ЧТО в loop? Все 7 строк? Или с 3 по 6?

Если первое - то не может работать. Если второе, то как функция по-Вашему будет работать если Вы её НЕ ВЫЗЫВАЕТЕ? Поставьте первой строчкой loop вызов этой функции ( trololo(); ) и будет работать, куда она денется-то?

tottalwar
Offline
Зарегистрирован: 07.05.2016

Спасибо, заработало) Буду дальше думать

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Не за что. Постарайтесь яснее формулировать вопросы, а то Вы же сами полдня потеряли на ровном месте.