шумометр, заморозка результата

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

Всем доброго всего

помогите заморозить включенный светодиод на 2-3 секунды

функция делей не подходит, тормозит следующий результат

 

#define MIC A0
 
int sig = 0;

void setup() {
 
 pinMode(5, OUTPUT);
 pinMode(6, OUTPUT);
}
 
void led() {
 sig = analogRead(MIC);
 
 if (sig>50) {digitalWrite(5, HIGH);} 
 else {digitalWrite(5, LOW);}//зажигаем светодиод 5 здесь нужно заморозить
 if (sig>55) {digitalWrite(6, HIGH);} 
 else {digitalWrite(6, LOW);}//зажигаем светодиод 6 здесь нужно заморозить
 long interval = 1000; 
 
}
 
void loop() {
 led();
}

 

Клапауций 999
Offline
Зарегистрирован: 06.06.2015
Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Клапауций 999 пишет:

http://arduino.ru/tutorials/BlinkWithoutDelay


Там ничего нет про заморозку .

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

Puhlyaviy пишет:
Там ничего нет про заморозку .

теперь будет есть

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Заморозка без делей... круто.

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

я там был, все перепробовал, наверно где то вкосяцил

подставьте пожалуйста, а то бошка уже не варит

#define MIC A0
 
int sig = 0;

void setup() {
 
 pinMode(5, OUTPUT);
 pinMode(6, OUTPUT);
}
 
void led() {
 sig = analogRead(MIC);
 
 if (sig>50) {digitalWrite(5, HIGH);} 
 else {digitalWrite(5, LOW);}//зажигаем светодиод 5 здесь нужно заморозить
 if (sig>55) {digitalWrite(6, HIGH);} 
 else {digitalWrite(6, LOW);}//зажигаем светодиод 6 здесь нужно заморозить
 
}
 
void loop() {
 led();
}

 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Намекаю - millis()

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

куда впечатать, можно разжевать на печатном  примере кода

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Можно, ссылка в ответе нумбер ван.

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

да был я там и другие варианты смотрел, но в коде они не работают ибо я нуб

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

показывайте как Вы делали

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015
да у меня белеберда, я даже не понимаю в этом миллис как его привентить к коду


#define MIC A0
 
int sig = 0;
long previousMillis = 0;        // храним время последнего переключения светодиода
long interval = 1000;           // интервал между включение/выключением светодиода (1 секунда)


void setup() {
 
 pinMode(5, OUTPUT);
 pinMode(6, OUTPUT);
}
 
void led() {
 sig = analogRead(MIC);
 
 if (sig>50) {digitalWrite(5, HIGH);
unsigned long currentMillis = millis();
  
  //проверяем не прошел ли нужный интервал, если прошел то
  if(currentMillis - previousMillis > interval) {
    // сохраняем время последнего переключения
    previousMillis = currentMillis;} 
 else {digitalWrite(5, LOW);}//зажигаем светодиод 5 здесь нужно заморозить
 if (sig>55) {digitalWrite(6, HIGH);} 
 else {digitalWrite(6, LOW);}//зажигаем светодиод 6 здесь нужно заморозить
 
}
 
void loop() {
 led();
}

 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

в строчке 24 Вы проверяете прошло-ли достаточно времени. Давайте подумаем вместе - что должно выполняться при тру и при фолс?

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

уважаемый доктор, не надо ставить мне диагноз, я его и сам знаю

при тру и при фолс- что такое?

как заморозить 20 строку на секунду?

прошу простой пример

дальше я сам

дайте волшебный пинок

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

На этом форуме я диагнозы не ставлю. Могу только клизму прописать. С патефонными иголками.

Я Вам даю пинки, но код за Вас я писать не буду.

тру и фолс это true and false

Это возвращаемые значения функции if

Ответьте мне честно на вопрос - Вам оно зачем? Диплом?

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

я режисер по свету, в г Железногорске

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

мой код не позволяет это воплотить полноценно, а очень хочется

премьера на 1-2 сентября

спектакл "Доктор Зиги"

это чисто моя идея, для этого уже все есть, незватает самого главного-строчки в коде

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012
#define MIC A0
 
int sig = 0;
long previousMillis = 0;        // храним время последнего переключения светодиода
long interval = 1000;           // интервал между включение/выключением светодиода (1 секунда)
unsigned long currentMillis;
boolen flag = false;

void setup() {
 
 pinMode(5, OUTPUT);
 pinMode(6, OUTPUT);

 currentMillis = millis();
}
 
void led() {
 sig = analogRead(MIC);
 
 //проверяем не прошел ли нужный интервал, если прошел то
    if(currentMillis - previousMillis > interval) {
        // сохраняем время последнего переключения
        previousMillis = currentMillis;
        flag = true;
    } else {
        flag = false;
    }

 if (sig>50) {
    digitalWrite(5, HIGH);
 }  else {
     if(flag) {
       digitalWrite(5, LOW);
    }
 }
   
  
 
    
    //зажигаем светодиод 5 здесь нужно заморозить
    if (sig>55) {
        digitalWrite(6, HIGH);
    }  else {
        if(flag) {
            digitalWrite(6, LOW);
        }
    }

 
}
 
void loop() {
 led();
}

 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Это только волшебный пинок!

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Там как минимум 5(!) ошибок

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

ну благодарствую, с работы домой приеду (сборка дома) и отпишусь

 

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

ругается на 07 строку

хелп

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

boolean

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

да на все строку розовым выделяет 

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

'flag' does not name a type

пишет

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015
Изменена опция сборки, пересобираем все
_111:7: error: 'boolen' does not name a type
_111.ino: In function 'void led()':
_111:22: error: 'flag' was not declared in this scope
_111:24: error: 'flag' was not declared in this scope
_111:30: error: 'flag' was not declared in this scope
_111:38: error: 'flag' was not declared in this scope
'boolen' does not name a type
 
splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

ну один шаг остался, помогите

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Смысл если Вы мои сообщения все равно не читаете?

И шаг там далеко не один.

berik
Offline
Зарегистрирован: 21.10.2014

boolen исправь на boolean

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

загорелись все и горят

#define MIC A0
 
int sig = 0;
long previousMillis = 0;        // храним время последнего переключения светодиода
long interval = 1000;           // интервал между включение/выключением светодиода (1 секунда)
unsigned long currentMillis;
boolean flag = false;

void setup() {
 
 pinMode(5, OUTPUT);
 pinMode(6, OUTPUT);

 currentMillis = millis();
}
 
void led() {
 sig = analogRead(MIC);
 
    if(currentMillis - previousMillis > interval) {
        previousMillis = currentMillis;
        flag = true;
    } else {
        flag = false;
    }

 if (sig>50) {
    digitalWrite(5, HIGH);
 }  else {
     if(flag) {
       digitalWrite(5, LOW);
    }
 }
    
    if (sig>55) {
        digitalWrite(6, HIGH);
    }  else {
        if(flag) {
            digitalWrite(6, LOW);
        }
    }

 
}
 
void loop() {
 led();
}

 

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

загорелись от щелчка по микрофону

Клапауций 998
Offline
Зарегистрирован: 12.08.2015

splans пишет:

загорелись от щелчка по микрофону

ура! заработало!

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

так они так и горят не гаснут причем оба

berik
Offline
Зарегистрирован: 21.10.2014

14 строка должна быть не 14

 

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

вы че издеваитесь?

а какая, дрючте меня кодами я не против, давайте код

berik
Offline
Зарегистрирован: 21.10.2014

дайте ему код

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

сжальтесь, у меня двое дочерей

Клапауций 998
Offline
Зарегистрирован: 12.08.2015

berik пишет:

дайте ему код

не дадим

Araris
Offline
Зарегистрирован: 09.11.2012
#define MIC A0
 
int sig = 0;
unsigned long previousMillis = 0;        // храним время последнего переключения светодиода

void setup() {
 
 pinMode(5, OUTPUT);
 pinMode(6, OUTPUT);

}
 
void led() {
if ( millis() - previousMillis > 1000) // прошла секунда с момента зажигания светодиодов
 {
 digitalWrite(5, LOW);
 digitalWrite(6, LOW);
 }
sig = analogRead(MIC);
if ( sig > 50 )
 {
 digitalWrite(5, HIGH);
 previousMillis = millis(); // запускаем отсчет с момента зажигания светодиода
 }    
if ( sig > 55 )
 {
 digitalWrite(6, HIGH);
 previousMillis = millis(); // запускаем отсчет с момента зажигания светодиода
 }
}
 
void loop() {
 led();
}

 

berik
Offline
Зарегистрирован: 21.10.2014

Детей жалко...

19-й

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

Araris - красавчик!!!!!!!

могу отправить на телефон чуток бабла

все турбина

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

аааааааааааааа работает, буду разбираться в логике, СПАСИБО ДРУЖИЩЕ

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

как же все просто

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

Гораздо интереснее (и полезнее на будущее) было бы подвести Вас к самостоятельному пониманию и решению задачи, ну да ладно..

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

вообще красота, очень полезное решение, без мозгоебства

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

Araris-как на тел скинуть бабос, чуток конечно но всеже

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

мега шумометр получился

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

splans пишет:

Araris-как на тел скинуть бабос, чуток конечно но всеже

Не за что.

sandr4
sandr4 аватар
Offline
Зарегистрирован: 11.02.2015

  Araris ++ к  уважухе...

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

вот это да, возможно такое на ардуинке сделать, всмысле доработать код

видео https://youtu.be/0xS4FCnPL-A

#define MIC A0
 
int sig = 0;
unsigned long previousMillis = 0;        // храним время последнего переключения светодиода

void setup() {
 
 pinMode(5, OUTPUT);
 pinMode(6, OUTPUT);

}
 
void led() {
if ( millis() - previousMillis > 1000) // прошла секунда с момента зажигания светодиодов
 {
 digitalWrite(5, LOW);
 digitalWrite(6, LOW);
 }
sig = analogRead(MIC);
if ( sig > 50 )
 {
 digitalWrite(5, HIGH);
 previousMillis = millis(); // запускаем отсчет с момента зажигания светодиода
 }    
if ( sig > 55 )
 {
 digitalWrite(6, HIGH);
 previousMillis = millis(); // запускаем отсчет с момента зажигания светодиода
 }
}
 
void loop() {
 led();
}