RGB Fader mit Atmega8 in C

  • Ich versuche seit einiger Zeit mich in die Programmierung von Microkontrollern einzuarbeiten. Zur C Programmierung gibts einige Tutorials im Internet und auch einige Vergleichsprojekte.
    Ich habe mich entschlossen ein Programm für einen RGB fader zu schreiben. Bzw ich wollte ein bereits vorhandenes Programm umschreiben und auf meine Bedürfnisse anpassen und dabei natürlich auch noch was lernen. Das Ausgangsprojekt findet ihr hier: http://blinkenlichts.net/index.php?page=moodlamp


    Da ist einige ganz interessante Dinge drinnen... z.B. Logarithmische PWM und das Fading läuft über den HSV Farbraum.


    Was ich jetzt machen wollte ist die Steurung der Lampe komplett umzulegen auf 3 Potis (AD Wandler ) und 3 Taster(Speichern, Manuell, Fading)


    Jetzt habe ich den Code getestet und (was mich nicht sonderlich überrascht hat) er hat nicht funktioniert. Compilieren läst er sich und die Simulation in AVR Studio bringt mich auch nicht weiter.
    Da sicher einige unter euch sind, die sich auch in C auskennen (die meisten proggen ja in Bascom) könnt ihr mir sicher helfen.


    Ich habe das Programm jetzt testweise auf 8Mhz laufen damit ich keinen externen Quarz brauche bzw kein Risiko beim Setzten der Fuses eingehen muss. Wenns fertig ist soll das ganze auf 12Mhz laufen.


    So, hier kommt das Programm inclusive eagle Schaltplan:
    (da es etwas länger ist und die ganze Seite ausfüllen würde deshal als zip)

  • 8bit PWM sollte eigentlich reichen. Im Unteren Bereich wird die e funktion halt nicht gut aufgelöst, aber egal. Übrigens ist das ja eher eine Software-PWM. Den PWM-Teil habe ich so gelassen wie er war. Ich habe nur die Steuerungen umgeschrieben, so dass ich H, S und V getrennt mit Potis steuern kann bzw wenn das Fading an ist, dann Geschwindigkeit , S und V.


    Ich werde auf jeden Fall da noch weiterarbeiten dran. Wenns läuft, dann gibts ein update.

  • Hi Foo,


    nun bei mir funktioniert der Code ;)


    Hast du auch die Werte fuers eeprom in den MC gespielt?
    Der Code liest diese naemlich dort aus und wenn keine Bedienteil angeschlossen ist geben die Standardwerte im eeprom keinen Sinn fuer den Controller.


    ein
    [code:1]make programmall[/code:1]
    sollte das machen.


    Ich will auch nciht anzweifeln, dass man den Code durchaus kleiner und schoener machen kann. Wer will soll das auch gerne tun. Fuer mich war das ganze Ding mehr ein Hack und es reicht mir vollkommen, dass es funktioniert ;)


    Gruss, Tobias