collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: PWR na Attiny85  (Lida 5587 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline helderjsd

  • Mini Robot
  • *
  • Mensagens: 149
PWR na Attiny85
« em: 14 de Março de 2013, 12:43 »
Boas,
Tenho alguns projectos "simples" e basicos em arduino, mas por questoes de espaço e dinheiro, estou a passa-los par aattiny.
Com isto, libertei uma serie de arduinos que tinha espalhados em casa, por soluções mais economicas (dinheiro e electricidade) em como em termos de espaço.
No entanto, tenho 2 pequenos projectos, em que utilizo 3 portas PWR.
Basicamente, estas portas estao ligadas a leds, para fazer efeitos de "fade".
A minha questao é, tendo o attiny85 apenas duas portas de PWR, como posso controlar 3 leds com fade? É certo que podia ocmprar led's RGB e tinha o problema resolvido, mas nao o tenho, e queria evitar comprar.

Pensei em ligar 2 attiny, em que a saida de 1 liga a entrada do outro. Quando este envia HIGH, o segundo attiny faz os fades correspondentes em mais duas portas.
Mas nao me parece uma solução pratica :(
Alguem tem outra sugestao/solução?

Offline Marvin

  • Mini Robot
  • *
  • Mensagens: 677
    • The scientist and the geek
Re: PWR na Attiny85
« Responder #1 em: 14 de Março de 2013, 14:37 »
PWR ou PWM?

Se for pulse with modulation (PWM) podes fazer isso programaticamente.

http://hackaday.com/2009/09/17/software-pulse-width-modulation/

Espero que ajude.

Dronetech BlogThe Scientist and the Geek

Offline helderjsd

  • Mini Robot
  • *
  • Mensagens: 149
Re: PWR na Attiny85
« Responder #2 em: 14 de Março de 2013, 15:03 »
PWR ou PWM?

Se for pulse with modulation (PWM) podes fazer isso programaticamente.

http://hackaday.com/2009/09/17/software-pulse-width-modulation/

Espero que ajude.
Que lapso o meu :)
Sim, é PWM.
Ou seja, em vez de digitalwrite HIGH ou LOW, faço um analogwrite entre 0 e 255, onde vou incrementando ou diminuindo para criar o fade.
O problema é que quero fazer fade a 3 ou 4 leds, mas o attiny85 só tem 2 portas que são PWM
Assim, como o contorno???

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: PWR na Attiny85
« Responder #3 em: 14 de Março de 2013, 16:32 »
Fazes pwm por software, com um timer e um bocadinho de código, ou com delays como podes ver nestes exemplos:
http://www.instructables.com/id/ATtiny85-Mini-RGB-Mood-Light/?ALLSTEPS
http://arduino.cc/forum/index.php/topic,75334.0.html
http://www.kobakant.at/DIY/?p=3393
Avr fanboy

Offline helderjsd

  • Mini Robot
  • *
  • Mensagens: 149
Re: PWR na Attiny85
« Responder #4 em: 14 de Março de 2013, 17:12 »
Fazes pwm por software, com um timer e um bocadinho de código, ou com delays como podes ver nestes exemplos:
http://www.instructables.com/id/ATtiny85-Mini-RGB-Mood-Light/?ALLSTEPS
http://arduino.cc/forum/index.php/topic,75334.0.html
http://www.kobakant.at/DIY/?p=3393
Basicamente é isto que tenho, mas ele funciona com fade na porta e 1, mas na 2 so acende e apaga.
Fazer fade, esta quieto.. :(

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: PWR na Attiny85
« Responder #5 em: 14 de Março de 2013, 17:35 »
É porque tens delays muito grandes..
Avr fanboy

Offline helderjsd

  • Mini Robot
  • *
  • Mensagens: 149
Re: PWR na Attiny85
« Responder #6 em: 14 de Março de 2013, 17:39 »
É porque tens delays muito grandes..
os delays são iguais.
Ate estao definidos como uma variavel, ao inicio do sketch, e uso-a para todos...
Logo vou experimentar de novo, mas tenho a certeza que o codigo estava bem :(


Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: PWR na Attiny85
« Responder #7 em: 14 de Março de 2013, 17:41 »
Mostra ai então.
Avr fanboy

Offline helderjsd

  • Mini Robot
  • *
  • Mensagens: 149
Re: PWM na Attiny85
« Responder #8 em: 14 de Março de 2013, 21:36 »
Código: [Seleccione]
int red = 0;
int blue = 1;
int yellow = 2;
int white=4;
int delay1=100;
int delay2=5000;

void setup() {               
  pinMode(red, OUTPUT);
  pinMode(blue, OUTPUT);
  pinMode(yellow, OUTPUT);
  pinMode(white, OUTPUT);
}

void loop() {
  //acender azul
  int fadedown=0;
  for(int fadeup=0;fadeup<=255;fadeup+=5){
    fadedown=255-fadeup;
    analogWrite(blue,fadeup);
    delay(delay1);   
  }
  delay(delay2);
 
  //acender amarelo e apagar azul
  for(int fadeup=0;fadeup<=255;fadeup+=5){
    fadedown=255-fadeup;
    analogWrite(yellow,fadeup);
    analogWrite(blue,fadedown);
    delay(delay1);   
  }
  delay(delay2);

  //acender vermelho e apagar amarelo
  for(int fadeup=0;fadeup<=255;fadeup+=5){
    fadedown=255-fadeup;
    analogWrite(red,fadeup);
    analogWrite(yellow,fadedown);
    delay(delay1);   
  }
  delay(delay2);

  //acender branco e apagar vermelho
  for(int fadeup=0;fadeup<=255;fadeup+=5){
    fadedown=255-fadeup;
    analogWrite(white,fadeup);
    analogWrite(red,fadedown);
    delay(delay1);   
  }
  delay(delay2);

//apagar branco
  for(int fadeup=0;fadeup<=255;fadeup+=5){
    fadedown=255-fadeup;
    analogWrite(white,fadedown);
    delay(delay1);   
  }

  //acender todos
  for(int fadeup=0;fadeup<=255;fadeup+=5){
    fadedown=255-fadeup;
    analogWrite(white,fadeup);
    analogWrite(red,fadeup);
    analogWrite(blue,fadeup);
    analogWrite(yellow,fadeup);
    delay(delay1);   
  }
  delay(delay2);
 
//apagar todos
  for(int fadeup=0;fadeup<=255;fadeup+=5){
    fadedown=255-fadeup;
    analogWrite(white,fadedown);
    analogWrite(red,fadedown);
    analogWrite(blue,fadedown);
    analogWrite(yellow,fadedown);
    delay(delay1);   
  }
 
 
}

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: PWR na Attiny85
« Responder #9 em: 14 de Março de 2013, 21:53 »
Esses delays de 5000ms matão o esquema, e deves usas delays de micro-segundos e não de mili segundos.
Avr fanboy

Offline helderjsd

  • Mini Robot
  • *
  • Mensagens: 149
Re: PWR na Attiny85
« Responder #10 em: 14 de Março de 2013, 22:09 »
Esses delays de 5000ms matão o esquema, e deves usas delays de micro-segundos e não de mili segundos.
Ola senso,
Obrigado pela tua resposta :)
Não percebi porque dizes que matam o esquema todo. Porque??
Pretendoque depois do fade, as luzes fiquem acesas antes de fazer o fade down.
E como faço delays em micro segundos em vez de ser milis?

De notar que no arduino funciona em pleno, no attiny, é que as portas PWM é funcionam. As outras nao fazem fade

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: PWR na Attiny85
« Responder #11 em: 14 de Março de 2013, 22:52 »
Primeiro, aconselho-te a veres o programa de exemplo Blink Without Delay
http://arduino.cc/en/Tutorial/BlinkWithoutDelay

Porque tem de gera a onda pwm é os delays, se tens um delays de 3 dias no loop dás cabo disso.
O link que te dei do forum Arduino usa timers para gerar o pwm por software, tem lá tudo o que precisas, vai ver o tópico e ler o código, está lá tudo!!
Avr fanboy

Offline helderjsd

  • Mini Robot
  • *
  • Mensagens: 149
Re: PWR na Attiny85
« Responder #12 em: 14 de Março de 2013, 23:04 »
Primeiro, aconselho-te a veres o programa de exemplo Blink Without Delay
http://arduino.cc/en/Tutorial/BlinkWithoutDelay

Porque tem de gera a onda pwm é os delays, se tens um delays de 3 dias no loop dás cabo disso.
O link que te dei do forum Arduino usa timers para gerar o pwm por software, tem lá tudo o que precisas, vai ver o tópico e ler o código, está lá tudo!!

3 dias???? So tem 5 segundos.
loooooooool

Mas percebi a logica..
« Última modificação: 14 de Março de 2013, 23:06 por helderjsd »

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: PWR na Attiny85
« Responder #13 em: 14 de Março de 2013, 23:08 »
A tua onda quadrada é gerada pelos digitalWrite HIGH e LOW dentro do loop, uma onda quadrada em que estás a HIGH ou a LOW durante 5 segundos é algo que se torna perfeitamente visivel ao olho.
Avr fanboy

Offline helderjsd

  • Mini Robot
  • *
  • Mensagens: 149
Re: PWR na Attiny85
« Responder #14 em: 14 de Março de 2013, 23:19 »
Caro senso,
estas a ver mal o codigo
dentro do loop, so tenho delays de 30 micro segundos, entre valores do analogwrite implementados de 5 em 5 (de 0 a 255)
è completamente imperceptivel a olho nu
Quanto ao delay de 5 segundos, ele aguenta um dos led ON (analogwrite 255), antes de comrçar o de-fade