• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Oświetlenie Led PWM
#1
Witam po dłuższej przerwie. Smile

Jestem w trakcie budowy belki oświetleniowej nad akwarium, sterowanej PWM i mam pewien problem. Znalazłem sketch na jednej ze stron i działa. Ale ja mam takie pytanie do Was, mianowicie, jak najprościej zrobić, by wszystkie kroki od 0 do 255 przechodziły płynnie w określonym przez nas czasie? Innymi słowy chce sterować pełnym rozjaśnieniem i ściemnieniem diod regulując czas w jakim ma się całe zdarzenie odbyć. Ewentualnie zmienić krok rozjaśniania z jednej minuty na jedną sekundę, bo teraz długość trwania jednego kroku to minuta.
Poniżej sketch.

Kod:
   #include <DS1307.h>    //użyte biblioteki
   #include <Wire.h>    //użyte biblioteki
   #define DS1307_ADDRESS 0x68    //zegar
   byte zero = 0x00;    //zegar

   //***********************opis wyjść*************************

   int LED1 = 11;    //diody 1
   int GODZ;    //Godzina
   int MIN;    //Minuta
   int SEC;    //Sekundy
   int dzienG = 10;    //początek dnia - godziny
   int dzienM = 00;    //początek dnia - minuty
   int nocG = 21;    //początek nocy - godziny
   int nocM = 00;    //początek nocy - minuty
   int maxD1 = 60;    //maksymalna moc kanału LED1
   int ZMIANA = 60;    //długość trwania rozjaśniania
   int STEP = 1;    //długość trwania jednego kroku

   void setup()
     {
       Wire.begin();
       pinMode(LED1, OUTPUT);    //diody
       Serial.begin(9600);    //serial port
     }

   void loop()
     {
       int CZAS = (GODZ*60+MIN);    //aktualna godzina
       int czas1 = (dzienG*60+dzienM);    //początek dnia
       int czas2 = (nocG*60+nocM);    //początek nocy

       GODZ = (RTC.get(DS1307_HR,true));    //godzina pobierana z RTC
       MIN = (RTC.get(DS1307_MIN,true));    //minuta pobierana z RTC
       SEC = (RTC.get(DS1307_SEC,true));    //sekundy pobierana z RTC

       static int D1;    //stopień rozjaśniania LED1

       int mocD1[61] =    //stopień rozjaśniania LED1
         {
           255,230,220,210,200,195,190,185,180,175,
           170,165,160,155,150,145,140,135,130,125,
           120,115,110,105,100,95,90,85,80,75,
           70,65,60,55,50,45,40,35,30,25,
           20,19,18,17,16,15,14,13,12,11,
           10,9,8,7,6,5,4,3,2,1,0
         };

       if (CZAS<czas1)    //noc
         {
           D1=0; //digitalWrite(LED1, LOW);
           Serial.print("noc ");
         }
       if ((czas1<=CZAS)&&(CZAS<(czas1+ZMIANA)))    //poranek
         {
           D1=((CZAS-czas1)/STEP);
           Serial.print("swit ");
         }
           if (((czas1+ZMIANA)<=CZAS)&&(CZAS<(czas2-ZMIANA)))    //dzień
         {
           D1=maxD1;
           Serial.print("dzien ");
         }
       if(((czas2-ZMIANA)<=CZAS)&&(CZAS<czas2))    //zmrok
         {
           D1=((czas2-CZAS)/STEP);
           Serial.print("zmrok ");
         }
       if(czas2<=CZAS)    //noc
         {
           D1=0; //digitalWrite(LED1, LOW);
           Serial.print("noc ");
         }

      analogWrite(LED1, mocD1[D1]);

   /*************************** serial monitor **************/
       Serial.print("LED:");
       Serial.print((D1*100)/maxD1);
       Serial.print(" ");
       Serial.print(GODZ);
       Serial.print(":");
       Serial.print(MIN);
       Serial.print(":");
       Serial.print(SEC);
       Serial.println(" MN-Tech.pl _1pwm ");
       delay (1000);
     }


Pozdrawiam
 
Odpowiedź
  


Wiadomości w tym wątku
Oświetlenie Led PWM - przez Lobaf - 04-05-2019, 08:28
RE: Oświetlenie Led PWM - przez es2 - 04-05-2019, 10:35
RE: Oświetlenie Led PWM - przez kaczakat - 04-05-2019, 15:16
RE: Oświetlenie Led PWM - przez es2 - 04-05-2019, 16:58
RE: Oświetlenie Led PWM - przez Lobaf - 05-05-2019, 18:43
RE: Oświetlenie Led PWM - przez es2 - 05-05-2019, 18:51
RE: Oświetlenie Led PWM - przez kaczakat - 05-05-2019, 19:13

Skocz do:


Przeglądający: 1 gości