Questo è lo sketch
lo schema è molto semplice ho soltato collegato la scheda rele (già fatta )
e un bjt per lo strip led
il tutto ha funzionato a dovere finchè non l'ho inserito in uno scatolotto
è possibile che abbia messo in corto qualcosa non so l'hreader ICSP e distrutto il micro?
appena alimentato teoricamente il led L sul pin 13 dovrebbe lampeggiare ma rimane spento
se non per un attimo appena alimento la scheda
#include <IRremote.h>
#include <elapsedMillis.h>
int recvLED = 7;
int recvPin = 11;
int pot;
unsigned long recv_value;
unsigned long pre_recv_value;
unsigned long mask_recv_value;
int pwm,pre_pwm,perc;
int on_off=0;
IRrecv irReciver(recvPin);
int k0=1,k1=1,k2=1,k3=1;
decode_results results;
IRsend irsend;
char serial_command[8];
int i;
#define LG_on_off 0x20df10ef
#define bt_red 0x45B
#define bt_green 0x45C
#define bt_yellow 0x45D
#define bt_blue 0x45E
#define bt_gen 0x45A
#define bt_star 0x41D
#define bt_diesis 0x41C
#define bt_on_off 0x40C
#define separatore "------------"
elapsedMillis time;
#define interval 5000
void setup()
{
pinMode(recvLED, OUTPUT);
pinMode(9, OUTPUT);
//relay
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
digitalWrite(0, HIGH);
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
pinMode(13,OUTPUT);
digitalWrite(recvLED, LOW);
Serial.begin(9600);
irReciver.enableIRIn();
}
void loop()
{
if (on_off)
{
pot = analogRead(A5);
pwm = map(pot,0,1023,0,255);
delay(100);
if (pre_pwm != pwm)
{
analogWrite(9,pwm);
Serial.println(separatore);
Serial.println("Led: ");
perc = map(pwm,0,255,0,100);
Serial.println(perc);
pre_pwm = pwm;
}
}
else pre_pwm = 0;
i=0;
if (Serial.available() > 0)
{
while (Serial.available() >0 )
{
serial_command[i] = Serial.read();
i++;
}
serial_command[i]='\0';
if(!strcmp(serial_command,"k0"))
{
toggle(0);
}
if(!strcmp(serial_command,"k1"))
{
toggle(1);
}
if(!strcmp(serial_command,"k2"))
{
toggle(2);
}
if(!strcmp(serial_command,"k3"))
{
toggle(3);
}
if(!strcmp(serial_command,"all_off"))
{
Serial.println(separatore);
Serial.println("All Off");
digitalWrite(0,1);digitalWrite(1,1);
digitalWrite(2,1);digitalWrite(3,1);
k0=0;k1=1;k2=1;k3=1;
}
if(!strcmp(serial_command,"all_on"))
{
Serial.println(separatore);
Serial.println("All On");
digitalWrite(0,0);digitalWrite(1,0);
digitalWrite(2,0);digitalWrite(3,0);
k0=0;k1=0;k2=0;k3=0;
}
if(!strcmp(serial_command,"status"))
{
print_status ();
}
}
if (time > interval)
{
time -= interval;
print_status();
}
if (irReciver.decode(&results))
{
recv_value = results.value;
if ( recv_value != pre_recv_value )
{
blink();
switch (recv_value & ~0x8000)
{
case bt_red:
toggle(0);
break;
case bt_green:
toggle(1);
break;
case bt_yellow:
toggle(2);
break;
case bt_blue:
toggle(3);
break;
case bt_star:
Serial.println(separatore);
Serial.println("Led down");
if (pwm >= 15 && !on_off)
{
pwm -=15;
perc = map(pwm,0,255,0,100);
Serial.println(perc);
analogWrite(9,pwm);
}
break;
case bt_diesis:
Serial.println(separatore);
Serial.println("Led up: ");
if (pwm <= 245 && !on_off)
{
pwm +=15;
//Serial.println(pwm);
perc = map(pwm,0,255,0,100);
Serial.println(perc);
analogWrite(9,pwm);
}
break;
case bt_gen:
on_off = !on_off;
pwm = 0 ;
analogWrite(9,0);
Serial.println(separatore);
Serial.println("Switch StripLed mode");
break;
case bt_on_off:
irsend.sendNEC((LG_on_off), 32); // pin 3 ;
Serial.println(separatore);
Serial.println("Send On/Off code");
delay(100);
irReciver.enableIRIn();
break;
default:
Serial.println(separatore);
Serial.print("Code: ");
Serial.println(recv_value,HEX);
break;
}
pre_recv_value = recv_value;
}
irReciver.resume();
}
}
void blink ()
{
digitalWrite(recvLED, HIGH);
delay(10);
digitalWrite(recvLED, LOW);
}
void toggle (int k)
{
switch (k) {
case 0:
k0 = ! k0;
digitalWrite(0,k0);
Serial.println(separatore);
Serial.print("K0: ");
Serial.println(!k0);
break;
case 1:
k1 = ! k1;
digitalWrite(1,k1);
Serial.println(separatore);
Serial.print("K1: ");
Serial.println(!k1);
break;
case 2:
k2 = ! k2;
digitalWrite(2,k2);
Serial.println(separatore);
Serial.print("K2: ");
Serial.println(!k2);
break;
case 3:
k3 = ! k3;
digitalWrite(3,k3);
Serial.println(separatore);
Serial.print("K3: ");
Serial.println(!k3);
break;
}
}
void print_status ()
{
Serial.println(separatore);
Serial.println("Status");
Serial.print("K0: ");
Serial.println(!k0);
Serial.print("K1: ");
Serial.println(!k1);
Serial.print("K2: ");
Serial.println(!k2);
Serial.print("K3: ");
Serial.println(!k3);
}