Hello everybody, I have done a LED sequence set, which contains 8 LED to independent digital outputs (Well conected and with their 220 Ohm resistor)
Every led is conected (short pin ---> ground // long pin --->resistor --->digital output
I am using pins: [4,5,6,7,8,9,10,11]
The fact.. is that I could check by doing a blinking code that every output is working properly, BUT!
when I connect the 8 outputs, and I run the code of LEDs sequence, the outputs [4,5,6,7] do not shine properly (just a little).
When I connect these LEDs to another OUTPUT (like 8,9,10,11) it shines perfectly.
The code contains a part for IR remote control signals and interruptions.
Any tipp?
Here I drop my code, but I thing that it must be a hardware problem...Like if Arduino UNO R3 can not support 8 digital outputs at the same time (which sounds riddiculous..)
I will post 2 codes:
first one is the one that has the IR remote control ---> PINS 4,5,6,7 NOT WORKING
second one has the similar sequences and ALL the PINS are WORKING
FIRST CODE
#include <IRLremote.h>
/*
Command: (HEX)1=0x8877 2=0x48B7 3=0xC837 4=0x28D7
*/
int IR=3;
int LEDs[8]={4,5,8,9,10,11,6,7};
int led;
int i;
uint8_t oldSREG;
volatile uint8_t protocolo;
volatile uint32_t codigo;
void setup(){
Serial.begin(9600);
Serial.println("Startup");
//Declaración leds
for(i=8;i<12;i++){
pinMode(i,OUTPUT);
}
//Declaración IR(DATA)
pinMode(IR,INPUT);
IRLbegin<IR_ALL>(digitalPinToInterrupt(IR));
protocolo=0;
}
void IREvent (uint8_t protocol, uint16_t address, uint32_t comand){
protocolo=protocol;
codigo=comand;
}
void loop(){
oldSREG=SREG;
cli();
if(protocolo){
Serial.println(codigo);
switch (codigo){
case 0x8877:
Serial.println("MODE 1");
led=1;
break;
case 0x48B7:
Serial.println("MODE 2");
led=2;
break;
case 0xC837:
Serial.println("MODE 3");
led=3;
break;
case 0x28D7:
Serial.println("MODE 4");
led=4;
break;
default:
led=0;
break;
}
protocolo=0;
}
SREG=oldSREG;
if(led==0) TurnOff();
else if (led== 1) {
TurnOff();
delay(250);
TurnOn();
delay(250);
}
else if (led== 2) {
OneByOne();
}
else if (led==3){
TurnOff();
Snake();
TurnOff();
SnakeInverse();
}
else if (led== 4){
blueLEDsOn();
delay(250);
blueLEDsOff();
redLEDsOn();
delay(300);
redLEDsOff();
yellowLEDsOn();
delay(250);
yellowLEDsOff();
delay(300);
TurnOn();
delay(400);
TurnOff();
delay(250);
}
}
// SNAKE MODE
void Snake(){
for( int k=0; k<8; k++){
for(int j=0; j<8;j++){
if(j<=k) digitalWrite(LEDs[j],1);
else digitalWrite(LEDs[j],0);
}
delay(250);
}
}
//SNAKE INVERSE MODE
void SnakeInverse(){
digitalWrite(LEDs[7],1);
delay(250);
digitalWrite(LEDs[6],1);
delay(250);
digitalWrite(LEDs[5],1);
delay(250);
digitalWrite(LEDs[4],1);
delay(250);
digitalWrite(LEDs[3],1);
delay(250);
digitalWrite(LEDs[2],1);
delay(250);
digitalWrite(LEDs[1],1);
delay(250);
digitalWrite(LEDs[0],1);
delay(250);
}
// Turn on function
void TurnOn(){
for (int j=0; j<8; j++){
digitalWrite(LEDs[j],1);
}
}
// Turn Off function
void TurnOff(){
for (int j=0; j<8; j++){
digitalWrite(LEDs[j],0);
}
}
void OneByOne(){
for( int k=0; k<8; k++){
for(int j=0; j<8;j++){
if(j==k) digitalWrite(LEDs[j],1);
else digitalWrite(LEDs[j],0);
}
delay(250);
}
}
void blueLEDsOn(){
for (i=0;i<2;i++){
digitalWrite(LEDs[i],1);
}
for (i=7;i>5;i--){
digitalWrite(LEDs[i],1);
}
}
void blueLEDsOff(){
for (i=0;i<2;i++){
digitalWrite(LEDs[i],0);
}
for (i=7;i>5;i--){
digitalWrite(LEDs[i],0);
}
}
void redLEDsOn(){
for (i=3;i<5;i++){
digitalWrite(LEDs[i],1);
}
}
void redLEDsOff(){
for (i=3;i<5;i++){
digitalWrite(LEDs[i],0);
}
}
void yellowLEDsOn(){
digitalWrite(LEDs[2],1);
digitalWrite(LEDs[5],1);
}
void yellowLEDsOff(){
digitalWrite(LEDs[2],0);
digitalWrite(LEDs[5],0);
}
SECOND CODE
//Declaring leds vector (8 length)
int LEDs[8]={4,5,8,9,10,11,6,7};
// SNAKE MODE
void Snake(){
for( int k=0; k<8; k++){
for(int j=0; j<8;j++){
if(j<=k) digitalWrite(LEDs[j],1);
else digitalWrite(LEDs[j],0);
}
delay(250);
}
}
//SNAKE INVERSE MODE
void SnakeInverse(){
digitalWrite(LEDs[7],1);
delay(250);
digitalWrite(LEDs[6],1);
delay(250);
digitalWrite(LEDs[5],1);
delay(250);
digitalWrite(LEDs[4],1);
delay(250);
digitalWrite(LEDs[3],1);
delay(250);
digitalWrite(LEDs[2],1);
delay(250);
digitalWrite(LEDs[1],1);
delay(250);
digitalWrite(LEDs[0],1);
delay(250);
}
// Turn on function
void TurnOn(){
for (int j=0; j<8; j++){
digitalWrite(LEDs[j],1);
}
}
// Turn Off function
void TurnOff(){
for (int j=0; j<8; j++){
digitalWrite(LEDs[j],0);
}
}
void OneByOne(){
for( int k=0; k<8; k++){
for(int j=0; j<8;j++){
if(j==k) digitalWrite(LEDs[j],1);
else digitalWrite(LEDs[j],0);
}
delay(250);
}
}
// ------------------------------------------------------- S E T U P -----------------------------------------------------------------------------------
void setup() {
for(int i=0; i<3;i++){
pinMode(LEDs[i],OUTPUT);
}
for(int i=0; i<8; i++)
{
pinMode(LEDs[i],OUTPUT);
}
}
//--------------------------------------------------------------- L O O P -----------------------------------------------------------------------------------
void loop() {
for(int k=0; k<2; k++){
TurnOn();
delay(500);
TurnOff();
delay(500);
}
for(int k=0; k<2; k++){
OneByOne();
}
for(int k=0; k<5; k++){
TurnOff();
Snake();
TurnOff();
SnakeInverse();
}
}
Thank you! And if you have some idea please let me know.