Hello. I have problem with software. IR control wont works , AVR reaciver signal from remote control, but nothing more.
//IR//
#include <IRremote.h>
#define irPin 11
IRrecv irrecv(irPin);
decode_results results;
//PRZYCISKI//
#define OPT1sw 18
#define OPT2sw 19
#define OPT3sw 20
#define COAXsw 21
#define USBsw 22
#define BTsw 23
//LEDy//
#define OPT1led 9
#define OPT2led 10
#define OPT3led 8
#define COAXled 31
#define USBled 14
#define BTled 30
//AK4118
#define IPS0 4
#define IPS1 3
#define ISOusb 0
#define MUXbt 1
#define MUXak 2
//RGB//
int redPin = 12;
int greenPin = 13;
int bluePin = 15;
//RGB//
int potPin_red = A7;
int potPin_green = A6;
int potPin_blue = A5;
//RGB//
int readValue_red;
int readValue_green;
int readValue_blue;
//RGB//
int writeValue_red;
int writeValue_green;
int writeValue_blue;
void setup()
{
irrecv.enableIRIn();
//PRZYCISKI//
pinMode(OPT1sw, INPUT_PULLUP);
pinMode(OPT2sw, INPUT_PULLUP);
pinMode(OPT3sw, INPUT_PULLUP);
pinMode(COAXsw, INPUT_PULLUP);
pinMode(USBsw, INPUT_PULLUP);
pinMode(BTsw, INPUT_PULLUP);
//LEDy//
pinMode(OPT1led, OUTPUT);
pinMode(OPT2led, OUTPUT);
pinMode(OPT3led, OUTPUT);
pinMode(COAXled, OUTPUT);
pinMode(USBled, OUTPUT);
pinMode(BTled, OUTPUT);
//MUXy//
pinMode(MUXak, OUTPUT);
pinMode(MUXbt, OUTPUT);
//IZOLATOR//
pinMode(ISOusb, OUTPUT);
//AK4118//
pinMode(IPS0, OUTPUT);
pinMode(IPS1, OUTPUT);
//RGB//
pinMode(potPin_red, INPUT);
pinMode(potPin_green, INPUT);
pinMode(potPin_blue, INPUT);
//RGB//
pinMode(redPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(greenPin, OUTPUT);
digitalWrite(IPS0, HIGH);
digitalWrite(IPS1, HIGH);
digitalWrite(ISOusb, LOW);
digitalWrite(MUXbt, LOW);
digitalWrite(MUXak, LOW);
digitalWrite(USBled, HIGH);
digitalWrite(OPT1led, LOW);
digitalWrite(OPT2led, LOW);
digitalWrite(OPT3led, LOW);
digitalWrite(COAXled, LOW);
digitalWrite(BTled, LOW);
}
void ledsoff()
{
digitalWrite(OPT1led, LOW);
digitalWrite(OPT2led, LOW);
digitalWrite(OPT3led, LOW);
analogWrite(COAXled, LOW);
digitalWrite(USBled, LOW);
analogWrite(BTled, LOW);
}
void opt1source()
{
digitalWrite(IPS0, LOW);
digitalWrite(IPS1, LOW);
digitalWrite(ISOusb, HIGH);
digitalWrite(MUXbt, LOW);
digitalWrite(MUXak, HIGH);
}
void opt2source()
{
digitalWrite(IPS0, HIGH);
digitalWrite(IPS1, LOW);
digitalWrite(ISOusb, HIGH);
digitalWrite(MUXbt, LOW);
digitalWrite(MUXak, HIGH);
}
void opt3source()
{
digitalWrite(IPS0, LOW);
digitalWrite(IPS1, HIGH);
digitalWrite(ISOusb, HIGH);
digitalWrite(MUXbt, LOW);
digitalWrite(MUXak, HIGH);
}
void coaxsource()
{
digitalWrite(IPS0, HIGH);
digitalWrite(IPS1, HIGH);
digitalWrite(ISOusb, HIGH);
digitalWrite(MUXbt, LOW);
digitalWrite(MUXak, HIGH);
}
void btsource()
{
digitalWrite(IPS0, HIGH);
digitalWrite(IPS1, HIGH);
digitalWrite(ISOusb, HIGH);
digitalWrite(MUXbt, HIGH);
digitalWrite(MUXak, LOW);
}
void usbsource()
{
digitalWrite(IPS0, HIGH);
digitalWrite(IPS1, HIGH);
digitalWrite(ISOusb, LOW);
digitalWrite(MUXbt, LOW);
digitalWrite(MUXak, LOW);
}
void loop()
{
//RGB//
readValue_red = analogRead(potPin_red);
readValue_green = analogRead(potPin_green);
readValue_blue = analogRead(potPin_blue);
//RGB//
writeValue_red = (255. / 1023.) * readValue_red;
writeValue_green = (255. / 1023.) * readValue_green;
writeValue_blue = (255. / 1023.) * readValue_blue;
//RGB//
analogWrite(redPin, writeValue_red);
analogWrite(greenPin, writeValue_green);
analogWrite(bluePin, writeValue_blue);
//ZRODLA//
//OPT1//
if (digitalRead(OPT1sw) == LOW)
{
ledsoff();
opt1source();
digitalWrite(OPT1led, HIGH);
}
//OPT2//
if (digitalRead(OPT2sw) == LOW)
{
ledsoff();
opt2source();
digitalWrite(OPT2led, HIGH);
}
//OPT3//
if (digitalRead(OPT3sw) == LOW)
{
ledsoff();
opt3source();
digitalWrite(OPT3led, HIGH);
}
//COAX//
if (digitalRead(COAXsw) == LOW)
{
ledsoff();
coaxsource();
digitalWrite(COAXled, HIGH);
}
//BT//
if (digitalRead(BTsw) == LOW)
{
ledsoff();
btsource();
digitalWrite(BTled, HIGH);
}
//USB//
if (digitalRead(USBsw) == LOW)
{
ledsoff();
usbsource();
digitalWrite(USBled, HIGH);
}
if (irrecv.decode(&results))
{
switch (results.value)
{
case 0x801: // OPT1
ledsoff();
opt1source();
digitalWrite(OPT1led, HIGH);
break;
case 0x01: // OPT1
ledsoff();
opt1source();
digitalWrite(OPT1led, HIGH);
break;
case 0x802: // OPT2
ledsoff();
opt2source();
digitalWrite(OPT2led, HIGH);
break;
case 0x02: // OPT2
ledsoff();
opt2source();
digitalWrite(OPT2led, HIGH);
break;
case 0x803: // OPT3
ledsoff();
opt3source();
digitalWrite(OPT3led, HIGH);
break;
case 0x03: // OPT3
ledsoff();
opt3source();
digitalWrite(OPT3led, HIGH);
break;
case 0x804: // COAX
ledsoff();
coaxsource();
digitalWrite(COAXled, HIGH);
break;
case 0x04: // COAX
ledsoff();
coaxsource();
digitalWrite(COAXled, HIGH);
break;
case 0x805: // USB
ledsoff();
usbsource();
digitalWrite(USBled, HIGH);
break;
case 0x05: // USB
ledsoff();
usbsource();
digitalWrite(USBled, HIGH);
break;
case 0x806: // BT
ledsoff();
btsource();
digitalWrite(BTled, HIGH);
break;
case 0x06: // BT
ledsoff();
btsource();
digitalWrite(BTled, HIGH);
break;
}
irrecv.resume();
}
}
Buttons works
IR wont works (I have checked hardware and all is ok). I think that problem is in void loops.
Atmega16, Sanguino pinout, 8MHz external, 3,3VDC, fuses are ok.
Maybe somone have idea whats wrong?
This test code for IR works without problem:
//IR//
#include <IRremote.h>
#define irPin 11
IRrecv irrecv(irPin);
decode_results results;
//LED
#define OPT1led 9
void setup()
{
irrecv.enableIRIn();
pinMode(OPT1led, OUTPUT);
}
void loop()
{
if (irrecv.decode(&results))
{
switch (results.value)
{
case 0x801: // OPT1
digitalWrite(OPT1led, HIGH);
break;
case 0x01: // OPT1
digitalWrite(OPT1led, LOW);
break;
}
irrecv.resume();
}
}
Regards