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
Konflikt PWM und libaries... Arduino nano
25.03.2015, 18:39 (Dieser Beitrag wurde zuletzt bearbeitet: 25.03.2015 19:36 von MaHa1976.)
Beitrag #1
Konflikt PWM und libaries... Arduino nano
Ich habe folgenden Sketch mit nrf24 und ir- receiver gebaut. Hierbei ist der Ausgang 3 gestört- er schaltet erst bei einem PWM- Wert ab ca. 200 durch... im seriellen Monitor sind aber alle Werte von 0-255 vorhanden.

Ich habe den Sketch einzeln mit nrf24 fehlerfrei am laufen und auch mit den ir-Receiver - beide laufen fehlerfrei- nur die Kombination führt zu dem Fehler...

Ich bilde mir ein, dass einige Libaries auf die Timer der PWM Ausgänge zugreifen... möglich dass es daran liegt... kann man da eventl. etwas anpassen? Den PIN für die IR- Signale habe ich auch erfolgreich ändern können... nur hierbei bin ich grad am rudern....

Ich habe zumindest schon in Erfahrung gebracht, dass die PINs 3,5,6,9,10 und 11 die analoge Fähigkeit besitzen.... 9,10 und 11 werden vom NRF24 genutzt - kann ich den 9er auch auf den 7 legen und in Zeile "RF24 radio(9,10);" so definieren? Dann könnte ich den Ausgang 9 für rot nehmen...



Code:
#include "IRremote.h"
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>
#include <Time.h>        
#include <TimeAlarms.h>

RF24 radio(9,10);
RF24Network network(radio);
const uint16_t this_node = 0;
const uint16_t other_node = 1;
struct payload_t
{
  unsigned long ms;
  unsigned long counter;
};

int receiver = 8;
IRrecv irrecv(receiver);      
decode_results results;    
int Scene = 1;
const int sensorPin = 2;  // sensor pin
int sensorState = 0;
int enableAuto = 1;
int ledrot = 3;    // output (LED) pin 1
int ledblau = 5;    // output (LED) pin 2
int ledgruen = 6;    // output (LED) pin 3
int fadeAmount = 1;
int brightnessrot = 175;
int brightnessblau = 175;
int brightnessgruen = 175;
int brightnessrotneu = 0;
int brightnessblauneu = 0;
int brightnessgruenneu = 0;
int stepuprot = 15; //ms pro Helligkeitswert heller
int stepdownrot = 20; //ms pro Helligkeitswert dunkler
int stepupblau = 15; //ms pro Helligkeitswert heller
int stepdownblau = 20; //ms pro Helligkeitswert dunkler
int stepupgruen = 15; //ms pro Helligkeitswert heller
int stepdowngruen = 20; //ms pro Helligkeitswert dunkler
int holdtime = 10000; //ms Haltezeit

void setup()  
{
  Serial.begin(57600);
  Serial.println("IR Receiver Raw Data + Button Decode Test");
  irrecv.enableIRIn(); // Start the receiver
  
  SPI.begin();
  radio.begin();
  network.begin(/*channel*/ 90, /*node address*/ this_node);
  
  pinMode(sensorPin, INPUT);  
  pinMode(ledrot, OUTPUT);
  pinMode(ledblau, OUTPUT);
  pinMode(ledgruen, OUTPUT);
}

void loop(void)
{
static unsigned long lastHigh = 0;  //  <<< INSERT
static int lastSensorState = LOW;  // <<< INSERT

analogWrite(ledrot, brightnessrotneu);
analogWrite(ledgruen, brightnessgruenneu);
analogWrite(ledblau, brightnessblauneu);

if (brightnessrotneu < brightnessrot)
   {
    brightnessrotneu++ ;
    delay(stepuprot);
   }  
else if (brightnessrotneu > brightnessrot)
   {
    brightnessrotneu-- ;
   delay(stepdownrot);
   }
else
   {
     brightnessrotneu = brightnessrot;
   }

if (brightnessgruenneu < brightnessgruen)
   {
    brightnessgruenneu++ ;
    delay(stepupgruen);
   }  
else if (brightnessgruenneu > brightnessgruen)
   {
    brightnessgruenneu-- ;
   delay(stepdowngruen);
   }
else
   {
     brightnessgruenneu = brightnessgruen;
   }
  
if (brightnessblauneu < brightnessblau)
   {
    brightnessblauneu++ ;
    delay(stepupblau);
   }  
else if (brightnessblauneu > brightnessblau)
   {
    brightnessblauneu-- ;
   delay(stepdownblau);
   }
else
   {
     brightnessblauneu = brightnessblau;
   }


Serial.print(sensorState);
Serial.print(" - ");
Serial.print(enableAuto);
Serial.print(" - ");
Serial.print(brightnessrotneu);
Serial.print(" - ");
Serial.print(brightnessblauneu);
Serial.print(" - ");
Serial.println(brightnessgruenneu);
  
  network.update();

  while ( network.available() )
  {
    RF24NetworkHeader header;
    payload_t payload;
    network.read(header,&payload,sizeof(payload));
    Serial.print("Szenario- Vorgabe: ");
    Serial.println(payload.counter);
    Scene = payload.counter;
  }


sensorState = digitalRead(sensorPin);
unsigned long now = millis();   // <<< INSERT

//  if (sensorState == LOW)   // <<< DELETE
if (sensorState == LOW && now - lastHigh > holdtime)   // <<< INSERT
{
  Szene0();
}

if (sensorState == HIGH)
   lastHigh = now;     // <<< INSERT

if (sensorState == HIGH && lastSensorState == LOW && enableAuto == 1)  // <<< INSERT
{

    switch (Scene)
    {
      case 0:
      Szene0();
         Serial.println("Start- Scene");
      break;
      
      case 1:
      Szene1();
         Serial.println("Scene 1");
      break;
      
      case 2:
      Szene2();
         Serial.println("Scene 2");
      break;
      
      case 3:
      Szene3();
         Serial.println("Scene 3");
      break;
      
      case 4:
      Szene4();
         Serial.println("Scene 4");
      break;
      
      case 5:
      Szene5();
         Serial.println("Scene 5");
      break;
      
      case 6:
      Szene6();
         Serial.println("Scene 6");
      break;
      
      case 7:
      Szene7();
         Serial.println("Scene 7");
      break;
      
      case 8:
      Szene8();
         Serial.println("Scene 8");
      break;
      
      case 9:
      Szene9();
         Serial.println("Scene 9");
      break;
      
      case 10:
      Szene10();
         Serial.println("Scene 10");
      break;
      
      case 11:
      Szene11();
         Serial.println("Scene 11");
      break;
      
      case 12:
      Szene12();
         Serial.println("Scene 12");
      break;
      
      case 13:
      Szene13();
         Serial.println("Scene 13");
      break;
      
      case 14:
      Szene14();
         Serial.println("Scene 14");
      break;
            
      case 15:
      Szene15();
         Serial.println("Scene 15");
      break;
      
      case 16:
      Szene16();
         Serial.println("Scene 16");
      break;
      
      case 17:
      Szene17();
         Serial.println("Scene 17");
      break;
      
      default:
         Serial.println("keine Scene erkannt");
        
    }
  }
lastSensorState = sensorState;   // <<< INSERT  
/*
switch (Scene)
    {
      case 0:
      Szene0();
         Serial.println("Start- Scene");
      break;
      
      case 1:
      Szene1();
         Serial.println("Scene 1");
      break;
      
      case 14:
      Szene2();
         Serial.println("Scene 2");
      break;
      
      case 15:
      Szene15();
         Serial.println("Scene 15");
      break;
      
      case 16:
      Szene16();
         Serial.println("Scene 16");
      break;
      
      case 17:
      Szene17();
         Serial.println("Scene 17");
      break;
      
      default:
         Serial.println("keine Scene erkannt");
    }  
*/
if (irrecv.decode(&results))
  {
    translateIR();
    irrecv.resume();
  }  
}
void translateIR()

{
  switch(results.value)

{
  case 0xFF3AC5:  
    heller();
    Serial.println(" heller            ");
    break;
    
  case 0xFFBA45:  
    dunkler();
    Serial.println(" dunkler             ");
    break;
    
  case 0xFF827D:
    abspielen();
    Serial.println(" abspielen            ");
    break;
    
  case 0xFF02FD:
    anaus();  
    Serial.println(" an/aus           ");
    break;
    
  case 0xFF1AE5:
    rot();  
    Serial.println(" rot           ");
    break;
    
  case 0xFF9A65:  
    gruen();
    Serial.println(" gruen     ");
    break;
    
  case 0xFFA25D:
    blau();
    Serial.println(" blau           ");
    break;
    
  case 0xFF22DD:
    weis();
    Serial.println(" weis           ");
    break;
    
  case 0xFF2AD5:
    rotora();
    Serial.println(" rot-orange             ");
    break;
    
  case 0xFFAA55:  
    tuerkis();
    Serial.println(" tuerkis              ");
    break;
    
  case 0xFF926D:  
    hellblau();
    Serial.println(" hellblau           ");
    break;

  case 0xFF12ED:  
    beige();
    Serial.println(" beige           ");
    break;

  case 0xFF0AF5:  
    gelb();
    Serial.println(" gelb              ");
    break;

  case 0xFF8A75:  
    hellgruen();
    Serial.println(" hellgruen              ");
    break;

  case 0xFFB24D:  
    hellblau();
    Serial.println(" hellblau             ");
    break;

  case 0xFF32CD:
    warmweis();  
    Serial.println(" warmweis              ");
    break;

  case 0xFF38C7:
    dunkelgelb();  
    Serial.println(" dunkelgelb              ");
    break;

  case 0xFFB847:
    blassgruen();
    Serial.println(" blassgruen             ");
    break;

  case 0xFF7887:
    blassblau();
    Serial.println(" blassblau              ");
    break;
    
  case 0xFFF807:
    kaltweis();  
    Serial.println(" kaltweis              ");
    break;

  case 0xFF18E7:
    gelblich();  
    Serial.println(" gelblich              ");
    break;

  case 0xFF9867:
    blaugruen();  
    Serial.println(" blau-gruen              ");
    break;

  case 0xFF58A7:  
    violett();
    Serial.println(" violett            ");
    break;

  case 0xFFD827:
    blauweis();
    Serial.println(" blau-weis            ");
    break;

  case 0xFF28D7:
    rotplus();
    Serial.println(" rot+            ");
    break;

  case 0xFFA857:
    gruenplus();  
    Serial.println(" gruen+           ");
    break;

  case 0xFF6897:
    blauplus();  
    Serial.println(" blau+           ");
    break;

  case 0xFFE817:
    quick();  
    Serial.println(" quick     ");
    break;

  case 0xFF08F7:
    rotminus();  
    Serial.println(" rot-           ");
    break;

  case 0xFF8877:
    gruenminus();
    Serial.println(" gruen-           ");
    break;

  case 0xFF48B7:
    blauminus();
    Serial.println(" blau-             ");
    break;

  case 0xFFC837:
    slow();
    Serial.println(" slow              ");
    break;

  case 0xFF30CF:  
    DIY1();
    Serial.println(" DIY1           ");
    break;

  case 0xFFB04F:
    DIY2();
    Serial.println(" DIY2           ");
    break;

  case 0xFF708F:
    DIY3();  
    Serial.println(" DIY3              ");
    break;

  case 0xFFF00F:
    autom();  
    Serial.println(" auto              ");
    break;

  case 0xFF10EF:
    DIY4();  
    Serial.println(" DIY4              ");
    break;

  case 0xFF906F:  
    DIY5();
    Serial.println(" DIY5 - gute Nacht ");
    break;

  case 0xFF50AF:
    DIY6();  
    Serial.println(" DIY6 - guten Morgen");
    break;

  case 0xFFD02F:
    flash();  
    Serial.println(" flash              ");
    break;

  case 0xFF20DF:
    jump3();  
    Serial.println(" Jump3              ");
    break;

  case 0xFFA05F:
    jump7();  
    Serial.println(" Jump7              ");
    break;

  case 0xFF609F:
    fade3();  
    Serial.println(" Fade3              ");
    break;

  case 0xFFE01F:
    fade7();  
    Serial.println(" Fade7              ");
    break;
    
  case 0xFFFFFFFF:  
    Serial.println(" Taste halten              ");
    ganzschnell();
    break;
    
  default:
    Serial.println(" other button   ");
  }

  delay(20);
}


void Szene0()
{
  brightnessrot = 0;
  brightnessgruen = 0;
  brightnessblau = 0;
  stepuprot = 6;
  stepdownrot = 120;
  stepupgruen = 9;
  stepdowngruen = 60;
  stepupblau = 12;
  stepdownblau = 90;
  holdtime = 15000;
}

void Szene1()
{
  //neutrales weiß: rot: 255; gruen: 155; blau: 45
  brightnessrot = 255;
  brightnessgruen = 155;
  brightnessblau = 65;
  stepuprot = 50;
  stepdownrot = 100;
  stepupgruen = 35;
  stepdowngruen = 70;
  stepupblau = 20;
  stepdownblau = 40;
  holdtime = 24000;
}

void Szene2()
{
  brightnessrot = 255;
  brightnessgruen = 155;
  brightnessblau = 55;
  stepuprot = 5;
  stepdownrot = 10;
  stepupgruen = 35;
  stepdowngruen = 70;
  stepupblau = 20;
  stepdownblau = 40;
  holdtime = 12000;
}

void Szene3()
{
  brightnessrot = 25;
  brightnessgruen = 15;
  brightnessblau = 5;
  stepuprot = 5;
  stepdownrot = 10;
  stepupgruen = 35;
  stepdowngruen = 70;
  stepupblau = 20;
  stepdownblau = 40;
  holdtime = 12000;
}

void Szene4()
{
  brightnessrot = 1;
  brightnessgruen = 1;
  brightnessblau = 0;
  stepuprot = 5;
  stepdownrot = 20;
  stepupgruen = 5;
  stepdowngruen = 20;
  stepupblau = 5;
  stepdownblau = 30;
  holdtime = 9000;
}

void Szene5()
{
  brightnessrot = 1;
  brightnessgruen = 1;
  brightnessblau = 1;
  stepuprot = 5;
  stepdownrot = 20;
  stepupgruen = 5;
  stepdowngruen = 20;
  stepupblau = 5;
  stepdownblau = 30;
  holdtime = 2000;
}

void Szene6()
{
  brightnessrot = 255;
  brightnessgruen = 155;
  brightnessblau = 40;
  stepuprot = 10;
  stepdownrot = 40;
  stepupgruen = 15;
  stepdowngruen = 60;
  stepupblau = 75;
  stepdownblau = 100;
  holdtime = 18000;
}

void Szene7()
{
  brightnessrot = 205;
  brightnessgruen = 125;
  brightnessblau = 35;
  stepuprot = 10;
  stepdownrot = 40;
  stepupgruen = 15;
  stepdowngruen = 60;
  stepupblau = 75;
  stepdownblau = 100;
  holdtime = 24000;
}

void Szene8()
{
  brightnessrot = 5;
  brightnessgruen = 3;
  brightnessblau = 1;
  stepuprot = 10;
  stepdownrot = 20;
  stepupgruen = 20;
  stepdowngruen = 40;
  stepupblau = 50;
  stepdownblau = 100;
  holdtime = 6000;
}

void Szene9()
{
  brightnessrot = 1;
  brightnessgruen = 1;
  brightnessblau = 0;
  stepuprot = 10;
  stepdownrot = 25;
  stepupgruen = 20;
  stepdowngruen = 50;
  stepupblau = 55;
  stepdownblau = 80;
  holdtime = 9000;
}

void Szene10()
{
  brightnessrot = 1;
  brightnessgruen = 1;
  brightnessblau = 0;
  stepuprot = 10;
  stepdownrot = 25;
  stepupgruen = 20;
  stepdowngruen = 50;
  stepupblau = 55;
  stepdownblau = 80;
  holdtime = 6000;
}

void Szene11()
{
  brightnessrot = 1;
  brightnessgruen = 1;
  brightnessblau = 0;
  stepuprot = 10;
  stepdownrot = 25;
  stepupgruen = 20;
  stepdowngruen = 50;
  stepupblau = 55;
  stepdownblau = 80;
  holdtime = 6000;
}

void Szene12()
{
  brightnessrot = 1;
  brightnessgruen = 1;
  brightnessblau = 0;
  stepuprot = 10;
  stepdownrot = 25;
  stepupgruen = 20;
  stepdowngruen = 50;
  stepupblau = 55;
  stepdownblau = 80;
  holdtime = 6000;
}

void Szene13()
{
  brightnessrot = 1;
  brightnessgruen = 1;
  brightnessblau = 0;
  stepuprot = 10;
  stepdownrot = 25;
  stepupgruen = 20;
  stepdowngruen = 50;
  stepupblau = 55;
  stepdownblau = 80;
  holdtime = 6000;
}

void Szene14()
{
  brightnessrot = 255;
  brightnessgruen = 0;
  brightnessblau = 235;
  stepuprot = 10;
  stepdownrot = 25;
  stepupgruen = 20;
  stepdowngruen = 50;
  stepupblau = 55;
  stepdownblau = 80;
  holdtime = 6000;
}

void Szene15()
{
  brightnessrot = 155;
  brightnessgruen = 0;
  brightnessblau = 125;
  stepuprot = 10;
  stepdownrot = 25;
  stepupgruen = 20;
  stepdowngruen = 50;
  stepupblau = 55;
  stepdownblau = 80;
  holdtime = 6000;
}

void Szene16()
{
  brightnessrot = 65;
  brightnessgruen = 0;
  brightnessblau = 30;
  stepuprot = 10;
  stepdownrot = 25;
  stepupgruen = 20;
  stepdowngruen = 50;
  stepupblau = 55;
  stepdownblau = 80;
  holdtime = 6000;
}

void Szene17()
{
  brightnessrot = 25;
  brightnessgruen = 0;
  brightnessblau = 10;
  stepuprot = 10;
  stepdownrot = 25;
  stepupgruen = 20;
  stepdowngruen = 50;
  stepupblau = 55;
  stepdownblau = 80;
  holdtime = 6000;
}

void ganzschnell()
{
  if (stepuprot > 5)
  {
  stepuprot = stepuprot - 5;
  stepupgruen = stepuprot;
  stepupblau = stepuprot;
  stepdownrot = stepuprot;
  stepdowngruen = stepuprot;
  stepdowngruen = stepuprot;
  }
}  

void heller()
{
  
  if (brightnessrot != 255)
  {
  brightnessrot = brightnessrot + 3;
  }
  else
  {
  brightnessrot = 255;
  }
  
  if (brightnessgruen != 255)
  {
  brightnessgruen = brightnessgruen + 3;
  }
  else
  {
  brightnessgruen = 255;
  }

  if (brightnessblau != 255)
  {
  brightnessblau = brightnessblau + 3;
  }
  else
  {
  brightnessblau = 255;
  }
}
  
void dunkler()
{
  if (brightnessrot > 3)
  {
  brightnessrot = brightnessrot - 3;
  }
  else
  {
  brightnessrot = 1;
  }
  
  if (brightnessgruen > 3)
  {
  brightnessgruen = brightnessgruen - 3;
  }
  else
  {
  brightnessgruen = 1;
  }

  if (brightnessblau > 3)
  {
  brightnessblau = brightnessblau - 3;
  }
  else
  {
  brightnessblau = 1;
  }
}
    
void abspielen()
{
  brightnessrot = brightnessrot++;
  brightnessgruen = brightnessrot + 85;
  brightnessblau = brightnessgruen + 85;
  enableAuto = 0;
}

void anaus()
{
  /*
  brightnessrot = 0;
  brightnessgruen = 0;
  brightnessblau = 0;
  */
  Szene0();
  enableAuto = 1;
}

void rot()
{
  brightnessrot = 255;
  brightnessgruen = 0;
  brightnessblau = 0;
  enableAuto = 0;
}

void gruen()
{
  brightnessrot = 0;
  brightnessgruen = 255;
  brightnessblau = 0;
  enableAuto = 0;
}
    
void blau()
{
  brightnessrot = 0;
  brightnessgruen = 0;
  brightnessblau = 255;
  enableAuto = 0;
}

void weis()
{
  brightnessrot = 205;
  brightnessgruen = 205;
  brightnessblau = 105;
  enableAuto = 0;
}

void rotora()
{
  brightnessrot = 255;
  brightnessgruen = 80;
  brightnessblau = 0;
  enableAuto = 0;
}

void tuerkis()
{
  brightnessrot = 0;
  brightnessgruen = 255;
  brightnessblau = 125;
  enableAuto = 0;
}

void hellblau()
{
  brightnessrot = 0;
  brightnessgruen = 165;
  brightnessblau = 255;
  enableAuto = 0;
}

void beige()
{
  brightnessrot = 235;
  brightnessgruen = 185;
  brightnessblau = 15;
  enableAuto = 0;
}

void gelb()
{
  brightnessrot = 145;
  brightnessgruen = 80;
  brightnessblau = 0;
  enableAuto = 0;
}

void dunkelgelb()
{
  brightnessrot = 60;
  brightnessgruen = 37;
  brightnessblau = 0;
  enableAuto = 0;
}

void gelblich()
{
  brightnessrot = 20;
  brightnessgruen = 12;
  brightnessblau = 0;
  enableAuto = 0;
}

void hellgruen()
{
  brightnessrot = 0;
  brightnessgruen = 205;
  brightnessblau = 17;
  enableAuto = 0;
}

void warmweis()
{
  brightnessrot = 255;
  brightnessgruen = 205;
  brightnessblau = 45;
  enableAuto = 0;
}

void blassgruen()
{
  brightnessrot = 15;
  brightnessgruen = 75;
  brightnessblau = 1;
  enableAuto = 0;
}

void blassblau()
{
  brightnessrot = 55;
  brightnessgruen = 0;
  brightnessblau = 45;
  enableAuto = 0;
}

void kaltweis()
{
  brightnessrot = 185;
  brightnessgruen = 205;
  brightnessblau = 235;
  enableAuto = 0;
}

void blaugruen()
{
  brightnessrot = 0;
  brightnessgruen = 255;
  brightnessblau = 100;
  enableAuto = 0;
}

void violett()
{
  brightnessrot = 255;
  brightnessgruen = 0;
  brightnessblau = 235;
  enableAuto = 0;
}

void blauweis()
{
  brightnessrot = 105;
  brightnessgruen = 105;
  brightnessblau = 205;
  enableAuto = 0;
}

void rotplus()
{
  if (brightnessrot != 255)
  {
  brightnessrot = brightnessrot + 5;
  }
  else
  {
  brightnessrot = 255;
  }  
}


void gruenplus()
{
  if (brightnessgruen != 255)
  {
  brightnessgruen = brightnessgruen + 5;
  }
  else
  {
  brightnessgruen = 255;
  }  
}

void blauplus()
{
  if (brightnessblau != 255)
  {
  brightnessblau = brightnessblau + 5;
  }
  else
  {
  brightnessblau = 255;
  }  
}


void quick()
{
  if (stepuprot > 1)
  {
  stepuprot = stepuprot - 1;
  stepupgruen = stepuprot;
  stepupblau = stepuprot;
  stepdownrot = stepuprot;
  stepdowngruen = stepuprot;
  stepdowngruen = stepuprot;
  }
  else
  {
  stepuprot = 1;
  }  
}

void rotminus()
{
  if (brightnessrot > 6)
  {
  brightnessrot = brightnessrot - 5;
  }
  else
  {
  brightnessrot = 1;
  }
}

void gruenminus()
{
  if (brightnessgruen > 6)
  {
  brightnessgruen = brightnessgruen - 5;
  }
  else
  {
  brightnessgruen = 1;
  }
}

void blauminus()
{
  if (brightnessblau > 6)
  {
  brightnessblau = brightnessblau - 5;
  }
  else
  {
  brightnessblau = 1;
  }
}

void slow()
{
  if (stepuprot < 30)
  {
  stepuprot = stepuprot + 2;
  stepupgruen = stepuprot;
  stepupblau = stepuprot;
  stepdownrot = stepuprot;
  stepdowngruen = stepuprot;
  stepdowngruen = stepuprot;
  }
  else
  {
  stepuprot = 30;
  }
}

void DIY1()
{
  brightnessrot = 0;
  brightnessgruen = 0;
  brightnessblau = 0;
  enableAuto = 0;
}

void DIY2()
{
  brightnessrot = 0;
  brightnessgruen = 0;
  brightnessblau = 0;
  enableAuto = 0;
}

void DIY3()
{
  brightnessrot = 0;
  brightnessgruen = 0;
  brightnessblau = 0;
  enableAuto = 0;
}

void autom()
{
if (enableAuto == 0)
{
  enableAuto = 1;
}
else
{
  enableAuto = 0;
}
}

void DIY4()
{
  brightnessrot = 75;
  brightnessgruen = 75;
  brightnessblau = 45;
  enableAuto = 0;
}

void DIY5()
{
  brightnessrot = 0;
  brightnessgruen = 0;
  brightnessblau = 0;
  enableAuto = 0;
}

void DIY6()
{
  brightnessrot = 255;
  brightnessgruen = 225;
  brightnessblau = 195;
  enableAuto = 0;
}

void flash()
{
  brightnessrot = 25;
  brightnessgruen = 25;
  brightnessblau = 15;
  enableAuto = 0;
}

void jump3()
{
  brightnessrot = 75;
  brightnessgruen = 75;
  brightnessblau = 45;
  enableAuto = 0;
}

void jump7()
{
  brightnessrot = 55;
  brightnessgruen = 55;
  brightnessblau = 35;
  enableAuto = 0;
}

void fade3()
{
   brightnessrot = 35;
  brightnessgruen = 35;
  brightnessblau = 25;
  enableAuto = 0;
}

void fade7()
{
   brightnessrot = 15;
  brightnessgruen = 15;
  brightnessblau = 5;
  enableAuto = 0;
}

http://www.netzmafia.de/skripten/hardwar...erung.html

hier habe ich folgende Info gefunden... Der Timer 2 scheint also der zu sein, der vom NRF24 genutzt wird und den PIN3 stört.... wobei es mich wundert, dass das erst der Fall ist seit ich die IR-Libary dazu genommen habe...

Der Arduino hat, wie schon erwähnt, drei Timer. Jeder dieser Timer ist zwei PWM-fähigen Ausgangs-Pins zugeordnet:

Timer Pin Standardeinstellung
0 5, 6 1000 Hz
1 9, 10 500 Hz
2 3, 11 500 Hz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.03.2015, 20:48
Beitrag #2
RE: Konflikt PWM und libaries... Arduino nano
Kann ich das Problem event. mit einem Arduino Mega umgehen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.03.2015, 22:28 (Dieser Beitrag wurde zuletzt bearbeitet: 26.03.2015 22:35 von HaWe.)
Beitrag #3
RE: Konflikt PWM und libaries... Arduino nano
hallo,
ich denke schon, hier hast du nicht nur mehr Timer IRQs sondern auch mehr pwms, v.a. außerhalb des oft benutzten Bereichs 2-13 (wobei aber jetzt auch im unteren Bereich pins 2,4,7,8,12,13 hinzukommen):

pwms sind alle von 2-13 und 44-46 einschl., hier die Zurordnung zu den Timern:

timer 0 (pin 13, 4)
timer 1 ( pin 12, 11)
timer 2 ( pin 10, 9)
timer 3 ( pin 5, 3, 2)
timer 4 ( pin 8, 7, 6)
timer 5 (pin 44-46)

Sie sind allerdings nicht alle abwärts-Pin-kompatibel zum Uno, besonders bei timer 2 müsstest du es kontrollieren, damit die Pinbelegung wieder stimmt, da er etwas anders funktioniert als die anderen soweit ich weiß.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.03.2015, 09:19
Beitrag #4
RE: Konflikt PWM und libaries... Arduino nano
OK, dann probiere ich es mal... oder ich verknüpfe 2 nanos?

Durch meine Bastelein, bis ich hier gut laufende Projekte hatte, habe ich noch eine handvoll übrig...
Faage wäre nur, wie ich die verknüpfe, ohne die Timer zu nutzen... am besten über 3-4 digitale Ausgänge einen binär-Code ausgeben, der vom 2. nano über die freien Analog-Eingänge einlese?

Ich könnte also nano1 den Funkteil zuordnen- das empfange Szenario als binär Code an den 2. nano weiter geben und der 2. gleicht das mit den Anforderungen der IR ab und steuert die PWMs ????
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.03.2015, 11:17
Beitrag #5
RE: Konflikt PWM und libaries... Arduino nano
mit Nanos verknüpfen kann ich dir nicht helfen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.03.2015, 11:38
Beitrag #6
RE: Konflikt PWM und libaries... Arduino nano
OK.... Aber danke, dass du mir schon mal Einblick in den Mega verschafft hast...

Da ich hier noch ein paar fertige Module - nano + nrf - habe, werde ich mal ein Sketch basteln, welches einen binäre Code ausgibt und den IR- Sketch durch einen eingehenden binären Code ergänzt... und dann teste ich das mal übers WE...

den Mega kann ich ja dann immer noch bestellen...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  TimerOne und I²C und Arduino Nano Mathias 1 62 07.12.2016 18:17
Letzter Beitrag: Mathias
  Seriell Konflikt? jgrothe 3 135 19.10.2016 21:09
Letzter Beitrag: hotsystems
  Arduino Nano --> ATtiny 84A Mathias 25 901 15.07.2016 16:26
Letzter Beitrag: hotsystems
  Programme vom UNO auf nano , mini Pro portieren Probleme anwo 19 1.178 17.04.2016 21:12
Letzter Beitrag: hotsystems
  I²C vom NANO zum PI Probleme mit High/Low Bit Tobias1984 4 334 29.02.2016 00:00
Letzter Beitrag: hotsystems
  Problem beim Upload auf Nano (vermutlich allgemein) Lemartes 9 839 01.02.2016 22:24
Letzter Beitrag: Lemartes
  Daten auf SD-Card werden nur geschrieben, wenn Nano am USB-Port hängt Nathea 6 482 24.01.2016 16:42
Letzter Beitrag: Nathea
  Meerwasser Überwachung mit Arduino-Nano Tim_171 30 2.375 13.01.2016 06:30
Letzter Beitrag: Bitklopfer
  16Bit PWM bei Uno bzw. Nano a.part 2 519 23.11.2015 20:32
Letzter Beitrag: a.part
  Arduino nano und ESP8266 Junano 1 1.096 17.11.2015 07:02
Letzter Beitrag: Junano

Gehe zu:


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