INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
LED-Fade Sketch
10.12.2015, 12:53 (Dieser Beitrag wurde zuletzt bearbeitet: 23.12.2015 02:22 von Bitklopfer.)
Beitrag #1
LED-Fade Sketch
moin,


ich habe, durch einen anderen Threadinspiriert, diesen sketch geschrieben:
Code:
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

int ledRot = 1;        //BEISPIEL Pin rot - PWM
int ledGruen = 2;        //BEISPIEL Pin gruen - PWM
int ledBlau = 3;        //BEISPIEL Pin blau - PWM

String rr = "";        //Zeichenvariable für rot
String gg = "";        //Zeichenvariable für gruen
String bb ="";        //Zeichenvariable für blau

int lastStateRot = 0;        //Status rot    
int lastStateGruen = 0;        //Status gruen
int lastStateBlau = 0;        //Status blau

String jetzt = "";        //VergleichsString
String ziel = "";        //VergleichsString

char Lustig[] = {0, 255, 255};        //Programm 1, Zustände - VERWEIS AUF LOOP!
char Happy[] = {255, 0, 255};        //Programm 2, Zustände - VERWEIS AUF LOOP!
char Lalala[] = {255, 255, 0};        //Programm 3, Zustände - VERWEIS AUF LOOP!

String input = "";        //String für Input


void setup()
    {
        Serial.begin(9600);
        irrecv.enableIRIn();

        pinMode(ledRot, OUTPUT);        //Setze ledRot als Output
        pinMode(ledGruen, OUTPUT);        //Setze ledGruen als Output
        pinMode(ledBlau, OUTPUT);        //Setze ledBlau als Output
    }


void loop()
    {
        if (irrecv.decode(&results))
            {
                Serial.println(results.value, DEC);
                irrecv.resume();
            }

        faderLampe(String(results.value));        //VERWEIS! - Hier soll der Input an faderLampe übergeben werden, ggf auch mit DEC/String/Char arbeiten - Da hab ich grad keine Ahnung :P
                                        //Bitte oben die Programme und unten in faderLampe die Bennenungen anpassen
    }
    
    
void faderLampe(String auswahl)
    {
        int rot = lastStateRot;        //Übergebe alten Wert rot
        int gruen = lastStateGruen;        //Übergebe alten Wert gruen
        int blau = lastStateBlau;        //Übergebe alten Wert blau
        
        int rotNeu = auswahl[0];        //Übergebe neuen Wert rot
        int gruenNeu = auswahl[1];        //Übergebe neuen Wert gruen
        int blauNeu = auswahl[2];        //Übergebe neuen Wert blau
        
        ziel = String(rotNeu);
        ziel += String(gruenNeu);
        ziel += String(blauNeu);
        
        if(rot < rotNeu)        //Erkenne, ob while hoch oder runter zählen muss - rot
            {
                rr = "rot++";
            }
        else
            {
                rr = "rot--";
            }
            
        if(gruen < gruenNeu)        //Erkenne, ob while hoch oder runter zählen muss - gruen
            {
                gg = "gruen++";
            }
        else
            {
                gg = "gruen--";
            }
            
        if(blau < blauNeu)        //Erkenne, ob while hoch oder runter zählen muss - blau
            {
                bb = "blau++";
            }
        else
            {
                bb = "blau--";
            }
        
        while(jetzt != ziel)        //Führe Schleife aus, so lange jetzt und ziel nicht den gleichen Wert haben (Meine Idee um verschiedene FadeDifferenzen zu realisieren)
            {
                if(rot != rotNeu)
                    {
                        rr;
                        analogWrite(ledRot, rot);
                    }
                
                if(gruen != gruenNeu)
                    {
                        gg;
                        analogWrite(ledGruen, gruen);
                    }
                    
                if(blau != blauNeu)
                    {
                        bb;
                        analogWrite(ledBlau, blau);
                    }
                
                jetzt = String(rot);        //Erneuere VergleichsString
                jetzt += String(gruen);        //Erneuere VergleichsString
                jetzt += String(blau);        //Erneuere VergleichsString
            }
            
        lastStateRot = rot;        //States erneuern
        lastStateGruen = gruen;        //States erneuern
        lastStateBlau = blau;        //States erneuern
        
        rr = "";        //Variablen erneuern
        gg = "";        //Variablen erneuern
        bb = "";        //Variablen erneuern
    }

da ich mir das selber ausgedacht habe, kann ich leider nirgends vergleichen, in wie fern dieser sketch lauffähig ist.

meine größte sorge liegt in der übergabe char-string-int

es wäre sehr nett, falls sich ein crack da ma ne minute zeit nimmt, es sieht lang aus, ist aber super easy zu verstehen, dokumentation soweit "vorhanden".

sicherlich sind da noch verbesserungen notwendig, ich würde gern nur wissen, ob meine idee überhaupt lohnenswert ist, ansonsten delete und neuer ansatz Wink


grüße aus bremen, hilgi

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.12.2015, 10:36
Beitrag #2
RE: Led-Fade Sketch
ERkläre mal ein bißchen wo nach entscheiden werden soll, welche Werte einzustellen sind.... das wird mir grad nicht klar...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.12.2015, 12:57 (Dieser Beitrag wurde zuletzt bearbeitet: 11.12.2015 12:59 von Bitklopfer.)
Beitrag #3
RE: Led-Fade Sketch
(10.12.2015 12:53)Hilgi schrieb:  moin,


ich habe, durch einen anderen Threadinspiriert, diesen sketch geschrieben:
Code:
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

int ledRot = 1;        //BEISPIEL Pin rot - PWM
int ledGruen = 2;        //BEISPIEL Pin gruen - PWM
int ledBlau = 3;        //BEISPIEL Pin blau - PWM
..also auf Port 1 läuft die Serielle Kommunikation zum PC ab, also da raspelt es auf jeden Fall...

Zitat:
Code:
String rr = "";        //Zeichenvariable für rot
String gg = "";        //Zeichenvariable für gruen
String bb ="";        //Zeichenvariable für blau
...mit Verlaub...was willst du mit einem String als Farbwert anfangen ?
für eine PWM Ausgabe benötigst du eine Integer oder Bytevariable mit dem Wertebereich 0 - 255

Zitat:sicherlich sind da noch verbesserungen notwendig, ich würde gern nur wissen, ob meine idee überhaupt lohnenswert ist, ansonsten delete und neuer ansatz Wink


grüße aus bremen, hilgi

...genau...vielleicht helfen dir meine Kommentare weiter...
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2015, 15:17
Beitrag #4
RE: Led-Fade Sketch
Code:
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

int ledRot = 1;        //BEISPIEL Pin rot - PWM
int ledGruen = 2;        //BEISPIEL Pin gruen - PWM
int ledBlau = 3;        //BEISPIEL Pin blau - PWM

String rr = "";        //Zeichenvariable für rot
String gg = "";        //Zeichenvariable für gruen
String bb ="";        //Zeichenvariable für blau

int lastStateRot = 0;        //Status rot    
int lastStateGruen = 0;        //Status gruen
int lastStateBlau = 0;        //Status blau

String jetzt = "";        //VergleichsString
String ziel = "";        //VergleichsString

char Lustig[] = {0, 255, 255};        //Programm 1, Zustände - VERWEIS AUF LOOP!
char Happy[] = {255, 0, 255};        //Programm 2, Zustände - VERWEIS AUF LOOP!
char Lalala[] = {255, 255, 0};        //Programm 3, Zustände - VERWEIS AUF LOOP!

String input = "";        //String für Input


void setup()
    {
        Serial.begin(9600);
        irrecv.enableIRIn();

        pinMode(ledRot, OUTPUT);        //Setze ledRot als Output
        pinMode(ledGruen, OUTPUT);        //Setze ledGruen als Output
        pinMode(ledBlau, OUTPUT);        //Setze ledBlau als Output
    }


void loop()
    {
        if (irrecv.decode(&results))
            {
                Serial.println(results.value, DEC);
                irrecv.resume();
            }

        faderLampe(String(results.value));        //VERWEIS! - Hier soll der Input an faderLampe übergeben werden, ggf auch mit DEC/String/Char arbeiten - Da hab ich grad keine Ahnung :P
                                        //Bitte oben die Programme und unten in faderLampe die Bennenungen anpassen
    }
    
    
void faderLampe(String auswahl)
    {
        int rot = lastStateRot;        //Übergebe alten Wert rot
        int gruen = lastStateGruen;        //Übergebe alten Wert gruen
        int blau = lastStateBlau;        //Übergebe alten Wert blau
        
        int rotNeu = auswahl[0];        //Übergebe neuen Wert rot
        int gruenNeu = auswahl[1];        //Übergebe neuen Wert gruen
        int blauNeu = auswahl[2];        //Übergebe neuen Wert blau
        
        ziel = String(rotNeu);
        ziel += String(gruenNeu);
        ziel += String(blauNeu);
        
        if(rot < rotNeu)        //Erkenne, ob while hoch oder runter zählen muss - rot
            {
                rr = "rot = rot +  1";
            }
        else
            {
                rr = "rot = rot - 1";
            }
            
        if(gruen < gruenNeu)        //Erkenne, ob while hoch oder runter zählen muss - gruen
            {
                gg = "gruen = gruen +1";
            }
        else
            {
                gg = "gruen = gruen -1";
            }
            
        if(blau < blauNeu)        //Erkenne, ob while hoch oder runter zählen muss - blau
            {
                bb = "blau = blau +1";
            }
        else
            {
                bb = "blau - 1";
            }
        
        while(jetzt != ziel)        //Führe Schleife aus, so lange jetzt und ziel nicht den gleichen Wert haben (Meine Idee um verschiedene FadeDifferenzen zu realisieren)
            {
                if(rot != rotNeu)
                    {
                        rr;
                        analogWrite(ledRot, rot);
                    }
                
                if(gruen != gruenNeu)
                    {
                        gg;
                        analogWrite(ledGruen, gruen);
                    }
                    
                if(blau != blauNeu)
                    {
                        bb;
                        analogWrite(ledBlau, blau);
                    }
                
                jetzt = String(rot);        //Erneuere VergleichsString
                jetzt += String(gruen);        //Erneuere VergleichsString
                jetzt += String(blau);        //Erneuere VergleichsString
            }
            
        lastStateRot = rot;        //States erneuern
        lastStateGruen = gruen;        //States erneuern
        lastStateBlau = blau;        //States erneuern
        
        rr = "";        //Variablen erneuern
        gg = "";        //Variablen erneuern
        bb = "";        //Variablen erneuern
    }

hi, klar pins sind falsch, kann ja jeder so anpassenwie er mag Big Grin

habe einen eigenen fehler erkannt, rr gg bb bestimmen in der for schleife später nur ob hoch oder runter gezählt wird


gruss

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2015, 16:34
Beitrag #5
RE: Led-Fade Sketch
(12.12.2015 15:17)Hilgi schrieb:  ....

hi, klar pins sind falsch, kann ja jeder so anpassenwie er mag Big Grin
....
gruss

...aber nur in gewissen Grenzen weil die Ports festgelegte Zweitfunktionen haben...und nicht alles Ports alle Sonderfunktionen beherrschen...siehe Atmel Datenblatt oder das Arduino Pinout wobei sich der 168er vom 328er nur in der Speichergröße unterscheidet.
Und wenn man die Serielle Schnittstelle benutzt sind die Ports 0 und 1 schon mal belegt.
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2015, 20:39
Beitrag #6
RE: Led-Fade Sketch
Moin,

Ja stimmt.

Ich wollte halt Nur erstmal wissen ob jemand n logikfehler erkennt...

Bin selber grad stark eingebunden unitechnisch kann das alles erst um Weihnachten real prüfen.


Gruesse und schönen 3. Advent euch Wink

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2015, 11:00 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2015 11:16 von Hilgi.)
Beitrag #7
RE: Led-Fade Sketch
überarbeitet

Code:
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

int ledRot = 3;        //BEISPIEL Pin rot - PWM
int ledGruen = 6;        //BEISPIEL Pin gruen - PWM
int ledBlau = 9;        //BEISPIEL Pin blau - PWM

String rr = "";        //Zeichenvariable für rot
String gg = "";        //Zeichenvariable für gruen
String bb ="";        //Zeichenvariable für blau

int lastStateRot = 0;        //Status rot    
int lastStateGruen = 0;        //Status gruen
int lastStateBlau = 0;        //Status blau

String jetzt = "";        //VergleichsString
String ziel = "";        //VergleichsString

char Lustig[] = {0, 255, 255};        //Programm 1, Zustände - VERWEIS AUF LOOP!
char Happy[] = {255, 0, 255};        //Programm 2, Zustände - VERWEIS AUF LOOP!
char Lalala[] = {255, 255, 0};        //Programm 3, Zustände - VERWEIS AUF LOOP!

String input = "";        //String für Input


void setup()
    {
        Serial.begin(9600);
        irrecv.enableIRIn();

        pinMode(ledRot, OUTPUT);        //Setze ledRot als Output
        pinMode(ledGruen, OUTPUT);        //Setze ledGruen als Output
        pinMode(ledBlau, OUTPUT);        //Setze ledBlau als Output
    }


void loop()
    {
        if (irrecv.decode(&results))
            {
                Serial.println(results.value, DEC);
                irrecv.resume();
            }

        faderLampe(String(results.value));        //VERWEIS! - Hier soll der Input an faderLampe übergeben werden, ggf auch mit DEC/String/Char arbeiten - Da hab ich grad keine Ahnung :P
                                        //Bitte oben die Programme und unten in faderLampe die Bennenungen anpassen
    }
    
    
void faderLampe(String auswahl)
    {
        int rot = lastStateRot;        //Übergebe alten Wert rot
        int gruen = lastStateGruen;        //Übergebe alten Wert gruen
        int blau = lastStateBlau;        //Übergebe alten Wert blau
        
        int rotNeu = auswahl[0];        //Übergebe neuen Wert rot
        int gruenNeu = auswahl[1];        //Übergebe neuen Wert gruen
        int blauNeu = auswahl[2];        //Übergebe neuen Wert blau
        
        ziel = String(rotNeu);    //Erzeuge Zielstring
        ziel += String(gruenNeu);    //Erzeuge Zielstring
        ziel += String(blauNeu);    //Erzeuge Zielstring
        
        if(rot < rotNeu)        //Erkenne, ob while hoch oder runter zählen muss - rot
            {
                rr = "rot = rot +  1";
            }
        else
            {
                rr = "rot = rot - 1";
            }
            
        if(gruen < gruenNeu)        //Erkenne, ob while hoch oder runter zählen muss - gruen
            {
                gg = "gruen = gruen +1";
            }
        else
            {
                gg = "gruen = gruen -1";
            }
            
        if(blau < blauNeu)        //Erkenne, ob while hoch oder runter zählen muss - blau
            {
                bb = "blau = blau +1";
            }
        else
            {
                bb = "blau = blau - 1";
            }
        
        while(jetzt != ziel)        //Führe Schleife aus, so lange jetzt und ziel nicht den gleichen Wert haben (Meine Idee um verschiedene FadeDifferenzen zu realisieren)
            {
                if(rot != rotNeu)    //Zähle rot rauf/runter
                    {
                        rr;
                        analogWrite(ledRot, rot);
                    }
                
                if(gruen != gruenNeu)    //Zähle gruen rauf/runter
                    {
                        gg;
                        analogWrite(ledGruen, gruen);
                    }
                    
                if(blau != blauNeu)    //Zähle blau rauf/runter
                    {
                        bb;
                        analogWrite(ledBlau, blau);
                    }
                
                jetzt = String(rot);        //Erneuere VergleichsString
                jetzt += String(gruen);        //Erneuere VergleichsString
                jetzt += String(blau);        //Erneuere VergleichsString
            }
            
        lastStateRot = rot;        //States erneuern
        lastStateGruen = gruen;        //States erneuern
        lastStateBlau = blau;        //States erneuern
        
        rr = "";        //Variablen zurück setzen
        gg = "";        //Variablen zurück setzen
        bb = "";        //Variablen zurück setzen
    }

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Sketch vom Arduino Board Herunterladen Sarius 2 344 27.07.2016 15:26
Letzter Beitrag: Sarius
  Sketch konnte nicht angelegt werden Sarius 2 238 16.07.2016 15:59
Letzter Beitrag: Sarius
  SHT21 in Sketch integrieren PrinzEisenherz1 6 589 06.04.2016 14:38
Letzter Beitrag: PrinzEisenherz1
Question Arduino Pro Micro verlangt keyboard.h im sketch weinema 0 309 01.03.2016 19:04
Letzter Beitrag: weinema
  Sketch läßt sich nicht hochladen - not in sync Stephan_56 20 1.774 17.01.2016 23:00
Letzter Beitrag: Bitklopfer
  Sketch VOM Mega IN die IDE holen? torsten_156 9 705 05.01.2016 15:41
Letzter Beitrag: René Hitz
  8x7 Segment LED Anzeige / Sketch verändern w1ck3d 3 647 23.11.2015 17:56
Letzter Beitrag: hotsystems
  Suche sketch mit der Abfrage von 2 oder mehr PIR's Tozupi 1 463 05.10.2015 20:55
Letzter Beitrag: hotsystems
  Problem mit GSM Sketch dahans 3 807 03.10.2015 18:15
Letzter Beitrag: dahans
  Neuling braucht Hilfe für Timelapse Sketch Uwe1475 19 2.080 30.09.2015 23:11
Letzter Beitrag: Uwe1475

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste