terça-feira, 31 de julho de 2012

Código Dimmer Digital AC - Aula 14

Pessoal,

Conforme prometido na Aula 14 do Curso Arduino Advanced, segue o código do Dimmer Digital AC com TRIAC:


int UP = 7;
int DOWN = 8;
int LAMP = 3;  
int dimming = 128;
int counts = 7;
int dimmer[7] = { 1, 105, 100, 75, 50, 25, 10 };
int i = 0;

void setup()
{
  //Serial.begin(9600);
  //delay(1000);
  pinMode(UP, INPUT);
  pinMode(DOWN, INPUT);
  pinMode(LAMP, OUTPUT);
  digitalWrite(UP, HIGH);
  digitalWrite(DOWN, HIGH);
  attachInterrupt(0, zero_crosss_int, RISING);
}

void loop()
{
  if (!digitalRead(UP) || !digitalRead(DOWN))
  {
    if (verifica_botao(UP))
    {
      if (i < (counts - 1)) i++;
      //Serial.print("UP: ");
      //Serial.println(i, DEC);
    }
    else if (verifica_botao(DOWN))
    {
      if (i > 0) i--;
      //Serial.print("DOWN: ");
      //Serial.println(i, DEC);
    }
  }
  //Serial.print("VALOR: ");
  //  Serial.println(i, DEC);
  dimming = dimmer[i];
  delay(100);
}

void zero_crosss_int()
{
  int dimtime = (65 * dimming);    
  delayMicroseconds(dimtime);  
  digitalWrite(LAMP, HIGH);  
  delayMicroseconds(8.33);        
  digitalWrite(LAMP, LOW);  
}

byte verifica_botao(byte botao)
{
  if (!digitalRead(botao))
  {
    unsigned long tempo = millis() + (150 - dimming);
    while(tempo > millis())
    {
     if (digitalRead(botao)) return LOW;
    }
    return HIGH;
  }
  else
    return LOW;
}

6 comentários:

  1. Renato, obrigado pelos ótimos tutoriais. Onde eu posso comprar um protoboard e jumpers cables baratos em são paulo? Só acho protoboards de 30 reais ou mais ou baratas mas com frete caro ou retirada em locais muito fora do centro.

    ResponderExcluir
  2. Renato
    bom dia

    fiquei interessado no curso que você mostra no youtube, e preciso de um favor se possivel, por acaso conhece ou recomendaria alguma apostila para servir de consulta em caso de duvida nas suas tele-aulas
    agradeço a atenção

    ResponderExcluir
  3. Obrigado pelo comentário!!!
    Voce encontra todas os itens utilizados no Curso Arduino no Youtube (http://www.youtube.com/user/graccula?feature=guide), na loja do curso Arduino,
    http://www.seriallink.com.br/loja
    Abraços
    Renato

    ResponderExcluir
  4. Ola Renato, meus parabéns pelo blog e pelas aulas , sua didática é realmente fantástica !!

    Seguinte, estou desenvolvendo um projeto de uma arremessadora de bolas de Baseball de baixo custo, e preciso controlar um motor AC (mono ou trifásico, ainda não está definido).O mais comum é usar o inversor de frequência, mas gostaria de tentar fazer na raça.
    É possível utilizar essa sua aula de triacs para o controle desses tipos de motores ? (a potência será por volta de 1/4 cv) ou existe alguma forma de utilizar PWM para eles ?

    Mais uma vez parabéns pelo trabalho !

    ResponderExcluir
  5. Boa Noite Renato
    Primeiramente parabéns pelo seu curso é ótimo acompanho cada passo, e estou quase chegando ao meu objetivo, porém agora estou com mais uma dificuldade e preciso da sua ajuda.
    na aula 14 você monta o esquema do Dimmer com botões, eu preciso que ao invés de botoes eu possa digitar valores na porta serial para aumentar e diminuir a intensidade da luz, por exemplo, para 25% digito 25, para 50% digito 50 e assim por diante. Minha maior dificuldade está no código, como ficaria você poderia me ajudar?
    Abç

    ResponderExcluir
  6. Olá Renato,

    Estou com uma dúvida...montei este circuito e funcionou muito bem. Entretanto, quando tentei fazê-lo 'em dobro', ou seja, montei dois circuitos com duas lâmpadas, não deu muito certo. Você acha que utilizar a mesma rede elétrica em dois circuitos tem algum problema? Porque parece que a lâmpada perde o sincronismo, ela fica acendendo e apagando muito rapidamente.

    ResponderExcluir