Využitie PWM na ovládanie jasu 74HC595

Page

Stránky / Súčiastky ku Arduinu / 74HC595 Posuvný register /

Spomenul som, že je možné pomocou PWM ovládať jas diód. Na to je potrebná iba drobná modifikácia. Prepojte digitálny pin 6 a OE na 74HC595 (v predchádzajúcich programoch bol pripojený na GND, aby bol výstup trvale povolený). A na pin 6 budeme posielať hodnoty 0-255. To zabezpečí, že bude podľa hodnoty nastavená intenzita svetla.

OE sa nastavuje negatívne, takže:

  • 0 - Trvalý jas.
  • 255 - Úplne vypnuté.

Pustite si program hc595_spi_pwm.ino, aby ste si mohli pozrieť ukážku.

char p4[]={
  0b00000000,
  0b00000001,
  0b00000011,
  0b00000111,
  0b00001111,
  0b00011111,
  0b00111111,
  0b01111111,
  0b11111111,
  0b01111111,
  0b00111111,
  0b00011111,
  0b00001111,
  0b00000111,
  0b00000011,
  0b00000001,
};

void play(char *p,int poc, int repeat, int dela)
{
  while(repeat)
  {
    for (int i = 0; i < poc; i++) {
      // take the latchPin low so 
      // the LEDs don't change while you're sending in bits:
      digitalWrite(latchPin, LOW);
      // shift out the bits:
      SPI.transfer(p[i]);

      //take the latch pin high so the LEDs will light up:
      digitalWrite(latchPin, HIGH);
      // pause before next value:
      delay(dela);
    }
    repeat--;
  }
}

void setup() {
  //set pins to output so you can control the shift register
  SPI.begin ();
  pinMode(pwmPin, OUTPUT);
}

void loop() {
  int stp=20;
  for(int i=255;i>=0;i-=stp)
  {
    analogWrite(pwmPin,i);
    play(p4,sizeof(p4),1,50*2);
  }
  for(int i=0;i<256;i+=stp)
  {
    analogWrite(pwmPin,i);
    play(p4,sizeof(p4),1,50*2);
  }
}

Zdrojový kód

Zdrojový kód sa nachádza na webe GitHub.


04.07.2016


Menu