lagfix
July 23, 2022, 11:47pm
1
Boa noite!
Preciso de uma ajuda, estou tentando fazer uma programação de Fastled funcione por x tempo, acionado pelo botão.
O ultimo código, consigo fazer a acender, porem não roda a programação e fica estático.
#include <FastLED.h>
#define NUM_LEDS 60
#define DATA_PIN 4
#define COLOR_ORDER RGB
#define FRAMES_PER_SECOND 244
#define MIN_BRIGHTNESS 5 // watch the power!
#define MAX_BRIGHTNESS 80
#define botao 2
int bstate = 0;
boolean estado = false;
unsigned long int tempo = 0;
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
FastLED.setMaxPowerInVoltsAndMilliamps(5,2000);
FastLED.setBrightness(MAX_BRIGHTNESS);
FastLED.clear();
pinMode(botao, INPUT_PULLUP);
}
void loop () {
bstate = digitalRead(botao);
if(bstate == HIGH){
tempo = 0;
estado = true;
}
if(millis() - tempo >= 3000){
tempo = millis();
if (estado == true){
programa();
} else {
blank();
}
estado = false;
}
}
void programa(){
float breath = (exp(sin(millis()/1500.0*PI)) - 0.36787944)*108.0;
breath = map(breath, 0, 255, MIN_BRIGHTNESS, MAX_BRIGHTNESS);
FastLED.setBrightness(breath);
fill_solid(leds, NUM_LEDS,CRGB(0,255,0));
FastLED.show();
delay(15);
}
void blank(){
fill_solid(leds, NUM_LEDS,CRGB(0,0,0));
FastLED.show();
}
JBBOP
July 24, 2022, 12:01am
2
lagfix:
tempo = millis();
Precisa sacar o tempo fora do if (trocar tempo=1 por tempo=millis()) e pasar tempo a programa:
float breath = (exp(sin((millis()-tempo)/1500.0*PI)) - 0.36787944)*108.0;
lagfix
July 24, 2022, 6:15pm
3
oi amigo!
Obrigado!
Mas, infelizmente não funcionou... esta parte, precisa ser se o -tempo, pois, não roda corretamente a programção.
Preciso, que saia o efeito de "Breath" nos leds, por x tempo, e reset aguardando ser pressionado o botão novamente
JBBOP
July 24, 2022, 9:58pm
4
Oi Amigo, nao comprendo o seu programa, mas nao faz muito sentido se tempo=1, e depois tempo=millis(), tempo nao pode mudar muito.
Olá,
em primeiro lugar recomendo que você edite seu tópico colocando todo o seu código
entre as tags </> conforme recomendações do fórum.
lagfix:
ligado = false;
Em segundo informo que não consegui compilar o seu código porque não encontrei a definição desta variável.
lagfix
July 24, 2022, 11:29pm
6
Fiz a modificações no código, estava errado.
lagfix
July 24, 2022, 11:30pm
7
obrigado!
sou novo no fórum, mas já ajeitei!
A variável estava errada, arrumei conforme o correto!
Olá,
mude esta linha : if(bstate == HIGH){
para : if(bstate == LOW){
e teste.
lagfix
July 26, 2022, 12:38am
9
Funcionou!
Porem, fica ligada "permanente"
Olá,
eu simulei seu projeto no site wokwi.com e funcionou corretamente.
lagfix
July 26, 2022, 6:15pm
11
vou tentar novamente, tens como me enviar o projeto do wokwi?
lagfix
July 26, 2022, 10:37pm
13
perfeito, consegui rodar no wokwi, porem esta invertida! se pressionar o botão reseta, e se soltar, ele fica permanentemente armado. preciso que seja ao contrario, quando pressionar uma vez, ele arma a programação por 3 minutos, e depois apaga.
system
Closed
January 22, 2023, 10:38pm
14
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.