Boa noite garagistas..
Estou com um projeto muito importante para eu terminar
Eu fiz um dimmer utilizando MOC3021, 4n35, bt138 e funcionou muito bem com um código (dimmer Original) que eu encontrei na net. Por ele você seta o valor da luminosidade pelo serial monitor que vai de 0 a 100%. pela chamada
int Concatena_Numeros(int variavel1, int variavel2)
{
int resultado;
resultado = ((variavel1-'0')*10)+(variavel2-'0');
return resultado;
}
Porém a minha aplicação depende de setar o valor da luminosidade da lâmpada a partir de uma entrada analôgica (1024 valores), estou usando um potenciômetro de 10k.
Ou seja, acho que eu preciso fazer um map da variavel e transforma-la em 0 a 100, ou de 20 a 95.. Pois não preciso deixa-la totalmente apagada ou os 100% dela.
Segue em anexo o código original, e o meu código, só que o meu código não está funcionando certo. Alguém pode me ajudar?
Tags:
Boa noite S,
o erro no seu sketch deve estar sendo causado por você ter declarado uma variável com o mesmo nome
em dois lugares.
No inicio: int valor = 0;
dentro da função loop() int valor = map(analogRead(pot), 0, 1023, 0, 100);
Ao usar a rotina de zero cross e usar esta variavel valor:
aqui: if(valor > 0){ e aqui: long dimtime = int(map(valor,0,100,8000,150));
a variável usada aqui é a definida no inicio e tem sempre o valor 0;
A variável definida dentro da função loop(), só vale pra dentro função loop().
Isto é conhecido como tempo de vida de uma variável, ou ainda escopo de uma variável.
Para resolver o seu skectch, remova a palavra "int" desta linha:
int valor = map(analogRead(pot), 0, 1023, 0, 100);
e deverá funcionar.
Rui
Muito obrigado Rui.
Eu ajustei aqui e melhorou o erro, ela antes estava piscando. Agora ela fica acesa direto, mas eu não consigo ajustar o brilho pelo potenciômetro.
Ela mantem a luminosidade enquanto eu giro o potenciômetro, só quando eu giro tudo ela apaga.
Acho que o erro ta em transformar o valor do pot(0-1024) a pwm (0-255) e em luminosidade (0-100% ou 20-95%)
Ou porque eu usei a função map duas vezes para a variavel valor.
S, anexa o novo sketch pra que possa ver como ele ficou.
Rui
S,
revisando o seu sketch e o original, não encontrei a definição do port 2 como port de entrada,
para seu usado como interrupt.
Rui
Código
Senhor S.
qdo logar me chame no chat.
Rui
Boa tarde S
Testa este sketch.
É o seu com algumas modificações.
O ZeroCross de entrar no port 2.
O triac é acionado pelo port 3
e o potenciômetro deve ser ligado no port A4.
Rui
Perfeito RV muito obrigado..
Era o que eu precisava, parabéns mesmo.
O bug que surgiu é que quando eu vou diminuindo ela vai diminuindo o brilho normal até zerar.
Mas o pot ainda não chegou no final da rolagem fisica dele, a lamp apaga em 80% do giro do pot. e digamos que de 90% a 100% ela fica brilhando na potencia máxima e piscando. Mas nada que seja mais um grande problema. Devo conseguir solucionar.
Muito lindo o trabalho, to muito feliz!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por