logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATTINNY2313] Kto mi poprawi/napisze program za pkty/$$$ ?

lala166 25 Wrz 2008 01:27 2481 12
  • #1 5569273
    lala166
    Poziom 21  
    Witam! Zajmuję się telefonami gsm. Potrafię lutować bga i smd. Ale za chiny nie mogę sobie poradzić z kompilacją/edycją programu...

    mam schemat 1. do którego mam już pcb i polutowane elementy:

    [ATTINNY2313] Kto mi poprawi/napisze program za pkty/$$$ ?

    oraz wsad do schematu 2. :

    [ATTINNY2313] Kto mi poprawi/napisze program za pkty/$$$ ?

    
    #include <avr/io.h>
    
    #define REDout OCR0A
    #define BLUEout OCR0B
    #define GREENout OCR1BL
    
    void PWMint(void)
    {
        DDRB |= 1<<PORTB2;
       DDRD |= 1<<PORTD5;
       DDRB |= 1<<PORTB4;
    
        TCCR0A = (1 << COM0B1)|(1 << COM0B0)|(1 << COM0A1)|(1 << COM0A0)|(1 << WGM01)|(1 << WGM00);
        TCCR0B = (1 << CS00);
    
        TCCR1A = (1 << COM1B1)|(1 << COM1B0)|(1 << WGM10);
        TCCR1B = (1 << WGM12)|(1 << CS10);
    
       OCR1BH = 0;
    }
    
    int main(void)
    {
       unsigned char cykl = 1;
       unsigned char i;
    
       unsigned int delay;
    
       PWMint();
    
       while(1)
       {
       
          for(i=0; i<255; i++)
          {
             if(cykl == 1)
             {
                   REDout = 0;
                   GREENout = 0;
                   BLUEout = i;
             }
             if(cykl == 2)
             {
                   REDout = 0;
                   GREENout = i;
                   BLUEout = 255;
             }
             if(cykl == 3)
             {
                   REDout = 0;
                   GREENout = 255;
                   BLUEout = 255-i;
             }
             if(cykl == 4)
             {
                   REDout = i;
                   GREENout = 255;
                   BLUEout = 0;
             }
             if(cykl == 5)
             {
                   REDout = 255;
                   GREENout = 255;
                   BLUEout = i;
             }
             if(cykl == 6)
             {
                   REDout = 255;
                   GREENout = 255-i;
                   BLUEout = 255;
             }
             if(cykl == 7)
             {
                   REDout = 255;
                   GREENout = 0;
                   BLUEout = 255-i;
             }
             if(cykl == 8)
             {
                   REDout = 255-i;
                   GREENout = 0;
                   BLUEout = 0;
             }
    
             delay = 10000;
             while(--delay);
          }
          
          cykl++;
          if(cykl == 9) cykl = 1;
       }
    
       return 0;
    } 




    chce żeby chociażby działała jedna dioda (wyprowadzenia 17,16,15) wiem że muszę zmienić:

        DDRB |= 1<<PORTB2;
       DDRD |= 1<<PORTD5;
       DDRB |= 1<<PORTB4;


    na

        DDRB |= 1<<PORTB5;
       DDRD |= 1<<PORTB4;
       DDRB |= 1<<PORTB3;


    tylko nie potrafię później tego skompilować do hexa .. Proszę więc o pomoc. Fajnie jak będzie to działało oraz jakby ewentualnie działały dwie diody: jedna 17,16,15 oraz druga na 14,13,12 ..

    W skrócie to chodzi mi o wsad do pierwszego schematu :)
    Pozdrawiam i z góry dziękuję, sprawa jest naprawdę bardzo ważna :)
  • #2 5569300
    Dr.Vee
    VIP Zasłużony dla elektroda
    Może na początek napisz co ten Twój układ ma robić?? :D

    Niestety zmiana tylko tego co proponujesz nie zadziała :) Układ nr. 2 i wsad do niego wygląda mi na "lampkę rgb", a diody są podłączone do tych pinów a nie innych, bo na tych pinach można (prosto) wygenerować sygnał PWM do sterowania ledami.

    Trzeba więc będzie bardziej "przerobić" ten program. Za 100 pkt. na pewno znajdzie się ktoś, kto Ci go przerobi, albo napisze od nowa w bascomie :P

    Skompilować program możesz korzystając z kompilatora AVR GCC, tutaj do ściągnięcia wersja pod windowsa.

    Edit: No i na schemacie nr 1 anody diod masz podłączone do masy zamiast do VCC - nie ma szans, żeby to działało (no chyba, że wlutujesz diody na odwrót).

    Pozdrawiam,
    Dr.Vee
  • #3 5569413
    lala166
    Poziom 21  
    Mam diody rgb ze wspólną katodą .. Schematu tego nie rysowałem, wystarczy obkręcić je o 180 stopni :) przylutowane mam dobrze :)

    To moja teoria ze zmianą tylko trzech wartości nie jest poprawna ?

    No właśnie nie umiem się się tym programem obsłużyć ..

    Dodano po 1 [godziny] 12 [minuty]:

    Edit: Poprawiłem schemat..

    Rozmawiałem ze znajomym i mówi mi że ten program nie zadziała na tych nóżkach na których chcę bo coś tam ..

    Jeżeli ktoś będzie miał chwilkę i napisze mi program od podstaw to może dorzucę jeszcze punktów do puli. Albo zamienię na złotówki .. Chyba nie jest to trudne ?

    Dodano po 39 [minuty]:

    jak sprawdzić czy dioda jest ze wspólną katodą ? podłączam masę do najdłuższej nóżki a plus po kolei do krótkich i świeci to znaczy że jest z wspólną katodą ??
  • Pomocny post
    #4 5569600
    snow
    Poziom 31  
    Tak. Żeby dioda zaczęła świecić należy przyłożyć plus do anody, minus do katody, więc jak przykładasz minus na katodę i dotykasz różnych anod to znaczy że wspólna katoda.
  • #5 5569733
    lala166
    Poziom 21  
    Muszę to mieć na dzisiaj .. Zapłacę nawet .. Ale w granicach rozsądku ...
  • Pomocny post
    #6 5569796
    kshaq
    Poziom 14  
    Jeśli chcesz wykorzystać ten program i jego możliwości, czyli sterowanie jasnością poszczególnych kolorów diody RGB przez wykorzystanie PWM, to musisz przerobić schemat układu, a nie program.
    Chodzi o to, że ten mikrokontroler ma 4 kanały PWM, a dla schematu który narysowałeś, potrzebowałbyś ich 6. A gdybyś chciał podłączyć trzecią diodę, to aż 9. Zakładając, że wszystkie diody mają zmieniać kolory synchronicznie możesz zrobić tak: pod wejścia PB2, PB4, PD5 podłącz bazy tranzystorów npn a ich emitery do masy. Wtedy do kolektorów możesz podpiąć równolegle kilka diod (każda z szeregowymi rezystorami).
  • #7 5570021
    riddyk
    Poziom 20  
    Witam, weź i dokładnie napisz co chcesz osiągnąć. Jeżeli pełne sterowanie kolorami po przez PWM to na tych pinach co chcesz będzie bardzo trudno to osiągnąć trzeba skorzystać z timera i z przerywań.
    A jak chcesz osiągnąć tylko sterowanie za pomocą 0 1 to po przeczytaniu pierwszej lekcji z samouczka będziesz potrafił to zaprogramować.
    Ja wykonałem projekt opierając się na tym na którym Ty się opierasz, sterowanie 10 diod z 3 pinów uC.
    Jeśli diody będą identyczna to wystarczy że każdy kolor będzie miał swój rezystor, tak ja wykonałem.
  • #9 5570216
    Citek
    Poziom 22  
    Zgłoś się najlepiej do wyżej wymienionego postu, wydaje mi się że za 100pkt powinien ci pomóc
  • Pomocny post
    #10 5570368
    Dr.Vee
    VIP Zasłużony dla elektroda
    lala166 napisał:
    Jeżeli ktoś będzie miał chwilkę i napisze mi program od podstaw to może dorzucę jeszcze punktów do puli. Albo zamienię na złotówki .. Chyba nie jest to trudne ?


    A po jakim kursie wymiany? :)

    Pozdrawiam,
    Dr.Vee
  • #11 5571953
    lala166
    Poziom 21  
    Materialiści :) Jak ktoś ma jakąś propozycję to zapraszam na gg
  • Pomocny post
    #12 5572471
    dawid512
    Poziom 32  
    RTFM to raz.
    Źle podłączone diody i złe wartości rezystorów to dwa.
    Trochę inicjatywy własnej to trzy.
  • #13 5572579
    lala166
    Poziom 21  
    dziękuję wszystkim za pomoc .. mój pierwszy układ z mikrokontrolerem działa :)
    jeszcze tylko obudowa.. :)
REKLAMA