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:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Gelöst: IR Remote Control
21.01.2014, 13:57 (Dieser Beitrag wurde zuletzt bearbeitet: 22.01.2014 08:43 von malerlein.)
Beitrag #1
Gelöst: IR Remote Control
Hallo zusammen
Ich habe für meine Basteleien mit dem Arduino mir eine Infrarot Fernbedienung geholt mit Empfänger. Jetzt habe ich mir mit einem Test Strip WS2812B eine Zeitanzeige gebaut um die Fernbedienung zu testen. Es geht auch alles soweit ganz Gut. Ich kann die Stunden, Minuten und Sekunden vor und zurück stellen, das ist alles kein Problem. Aber ich möchte die Fernbedienung nutzen um an meiner Equinox Clock den Farbring der aus 60 LED besteht zu vorführ Zwecken per Tastendruck Farbverläufe anzeigen, z.B. bei tastendruck Pfeil nach oben soll über die 60 LED ein Lauflicht laufen in der Art wie der LasonScanner nur nicht wie der Knightrider hin und her sondern solange ich die Pfeiltaste gedrückt halte soll das Lauflicht im Kreis laufen. Mit einem Tastendruck geht das auch nur dann läuft das lauflicht 1x. ich bekomme es nicht hin das das lauflicht bei dauer Druck durch läuft, ich muss jedesmal neu drücken das ,das Lauflicht neu anfängt. Ich benutze die Lib. IRremote.h Ich stelle einmal zum besseren Verständniss ein Bild der Equinox Clock und den Sketch des Teststreifens so wie der Fernbedienung ein.
Code:
#include <FastSPI_LED2.h>
#include <IRremote.h>
#define NUM_LEDS 5
#define DATA_PIN A4

CRGB leds[NUM_LEDS];

char time[]=__TIME__;
int stunden,minuten,sekunden;
int farbe;
int satt;
int hell;
int whiteLed;
int merk;
int RECV_PIN = 11; //define input pin on Arduino
int ledpin = 13;
IRrecv irrecv(RECV_PIN);

decode_results results;

void tickOneSecond()  // UHR laufen lassen

{
    
    
         //Uhrzeite berechnen
  if (sekunden == 60) {sekunden=0;minuten++;}
  if (minuten == 60) {minuten=0;stunden++;}
  if (stunden == 24) {stunden=0;}
  analogWrite(ledpin,255);
}

void logofarbwechsel()
{
  farbe=255/stunden*3;
  satt=255;
  hell=60;
}
void setup()
{
pinMode(ledpin,OUTPUT);
Serial.begin(9600);



FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
for (int i=0;i < NUM_LEDS; i++) {leds[i] = CHSV(255,0,0);}

  stunden=atoi(time);
  minuten=atoi(&time[3]);
  sekunden=atoi(&time[6]);
  
  /*
stunden = 2;  // wenn Uhr von Hand gestellt wird
minuten = 0;
sekunden = 0;
*/

irrecv.enableIRIn(); // Start the receiver
pinMode(ledpin,OUTPUT);
}

unsigned long alteSekunde;

void loop() {
  if (irrecv.decode(&results)) {
  if(results.value == 0xFF629D)
{merk=1;} else {merk=0;}
if ((results.value == 0xFF629D) and (merk == 1)) //TPfeiltaste Hch
{
      
   // Move a single white led
   for(int whiteLed = 0; whiteLed < NUM_LEDS; whiteLed = whiteLed + 1) {
      // Turn our current led on to white, then show the leds
      leds[whiteLed] = CRGB::White/2;
      leds[whiteLed-1] = CRGB::White/4;

      // Show the leds (only one of which is set to white, from above)
      FastLED.show();
      delay(50);
      leds[whiteLed] = CRGB::Black;
      leds[whiteLed-1] = CRGB::Black;
  }
}
  

FastLED.show();  

if (results.value == 0xFF6897) //Taste 1
{
  stunden=stunden+1;
  digitalWrite(ledpin,HIGH);
leds[0] = CHSV(100,255,60);
}

if (results.value == 0xFF9867) //Taste 2
{
stunden=stunden-1;
leds[1] = CHSV(100,255,60);
}
if (results.value == 0xFFB04F) //Taste 3
{
  minuten=minuten+1;
leds[2] = CHSV(100,255,60);
}
if (results.value == 0xFF30Cf) //Taste 4
{
  minuten=minuten-1;
leds[3] = CHSV(100,255,60);
}
if (results.value == 0xFF18E7) //Taste 5
{
  sekunden=sekunden+1;
leds[4] = CHSV(100,255,60);
}

if (results.value == 0xFF7A85) //Taste 6
{
  sekunden=sekunden-1;
}

if (results.value == 0xFF10EF) //Taste 7
   {
     logofarbwechsel();
     for (int i = 0; i < NUM_LEDS; i++){leds[i] = CHSV(farbe,satt,hell);}
   }
  
if (results.value == 0xFF38C7) //Taste 8
if (results.value == 0xFF5AA5) //Taste 9
if (results.value == 0xFF4AB5) //Taste 0 für Aus
{
  for (int i=0;i < NUM_LEDS; i++) {leds[i] = CHSV(0,0,0);}// Aus
}

irrecv.resume(); // Receive the next value
}

if ((stunden == 12) or (stunden == 17)){leds[0] = CHSV(255,250,60);}
if ((stunden == 13) or (stunden == 18)){leds[1] = CHSV(255,250,60);}
if ((stunden == 14) or (stunden == 19)){leds[2] = CHSV(255,250,60);}
if ((stunden == 15) or (stunden == 20)){leds[3] = CHSV(255,250,60);}
if ((stunden == 16) or (stunden == 21)){leds[4] = CHSV(255,250,60);}
if ((stunden >= 22) or (stunden <= 11)){for (int i=0;i < NUM_LEDS; i++) {leds[i] = CHSV(0,0,0);}}

if (alteSekunde==millis()/1000)  return; // selbe Sekunde, loop verlassen
     analogWrite(ledpin,LOW);          
    delay(100);
    alteSekunde=millis()/1000;
    tickOneSecond(); // Uhrzeit weiterticken lassen
    
    sekunden++; // Sekundenzähler für UHR
            
    FastLED.show();
   Serial.println(results.value,HEX);
   Serial.print("  Uhreit: Std. ");
   Serial.print(stunden);
   Serial.print(" Min. ");
   Serial.print(minuten);
   Serial.print(" Sek. ");
   Serial.print(sekunden);
   Serial.println(" ");
}


Angehängte Datei(en) Thumbnail(s)
       

l.G. Jürgen

Verzeihe Deinen Feinden, aber vergesse nie Ihren Namen.....
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  [gelöst] wire.h blockiert analogRead Rupert 6 54 Heute 18:03
Letzter Beitrag: hotsystems
  Hilfe: IR Remote Steuerung, MSGEQ7 + RGB-LED Streifen dastob 1 122 14.10.2016 21:40
Letzter Beitrag: hotsystems
  Pretzelboard oder C.Control Warmbronner 1 533 22.02.2016 20:14
Letzter Beitrag: hotsystems
  [gelöst] was ist falsch bei Wire.onReceive()? HaWe 0 636 26.09.2015 16:58
Letzter Beitrag: HaWe
  gelöst - mehrere Wechselschalter abfragen Foto-Ralf 3 1.186 30.01.2015 22:55
Letzter Beitrag: Foto-Ralf
  doch nicht gelöst: neuer Code f. i2c + Muxer ? HaWe 1 953 12.10.2014 11:05
Letzter Beitrag: HaWe
  [gelöst:] A.Mega: Pin4 bei Programmstart richtig setzen HaWe 0 587 28.09.2014 09:53
Letzter Beitrag: HaWe
  [gelöst:] Hardware-Timer-Interrupts beim Mega HaWe 1 917 26.09.2014 22:11
Letzter Beitrag: HaWe
Sad Passwort für Web Control Panel (Arduino Yun) des integrierten WLAN Moduls verlegt franz.doepp 2 983 20.06.2014 21:26
Letzter Beitrag: franz.doepp

Gehe zu:


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