help needed for newbie

Status
Not open for further replies.

karolis

New member
Hello
I just bought teensy2++ and i was playing with it.
i noticed one thing. IF i declare LED pin at start of my program it works fine(it bright), but if i change it in void setup or loop it becomes not very bright can someone tell me why?
 
Code:
int led = 7;


void setup() {                

  pinMode (led, OUTPUT);  

}


void loop() {
led = 8;
digitalWrite (led, HIGH);  

}

I want to make this shorter

Code:
int led1 = 7; 
int led2 = 8;
int led3 = 9;
int led4 = 10;
int led5 = 11;



void setup() {                

  pinMode (led1, OUTPUT);  
  pinMode (led2, OUTPUT);
  pinMode (led3, OUTPUT);
  pinMode (led4, OUTPUT);
  pinMode (led5, OUTPUT);
}


void loop() {
//led1 
digitalWrite (led1, HIGH);  
delay (50);
digitalWrite (led1, LOW);
delay (50);
digitalWrite (led1, HIGH);  
delay (50);
digitalWrite (led1, LOW);  
delay (50);
digitalWrite (led1, HIGH);
//led2
digitalWrite (led2, HIGH);
delay (50);
digitalWrite (led2, LOW);
delay (50);
digitalWrite (led2, HIGH);
delay (50);
digitalWrite (led2, LOW);
delay (50);
digitalWrite (led2, HIGH);
//led3
digitalWrite (led3, HIGH);
delay (50);
digitalWrite (led3, LOW);
delay (50);
digitalWrite (led3, HIGH);
delay (50);
digitalWrite (led3, LOW);
delay (50);
digitalWrite (led3, HIGH);
//led4
digitalWrite (led4, HIGH);
delay (50);
digitalWrite (led4, LOW);
delay (50);
digitalWrite (led4, HIGH);
delay (50);
digitalWrite (led4, LOW);
delay (50);
digitalWrite (led4, HIGH);
//led5
digitalWrite (led5, HIGH);
delay (50);
digitalWrite (led5, LOW);
delay (50);
digitalWrite (led5, HIGH);
delay (50);
digitalWrite (led5, LOW);
delay (50);
digitalWrite (led5, HIGH);

}
 
Last edited:
In your first section of code pin 7 is correctly configured as an output but pin 8 is not, so it remains a default input.
When you set pin 8 to high it is still an input and you are just activating it's internal pull up resistor. That is why the
LED would be very dim. Your second section of code is the correct way to declare outputs. Hope that helps.
 
To shorten your second section of code you could do something like:

int led1 = 7;
int led2 = 8;
int led3 = 9;
int led4 = 10;
int led5 = 11;



void setup() {

pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT);
pinMode (led3, OUTPUT);
pinMode (led4, OUTPUT);
pinMode (led5, OUTPUT);
}


void loop()
{
for (int i=7; i <= 11; i++)
{
digitalWrite(i,HIGH);
delay(50);
digitalWrite(i,LOW);
delay(50);

}

}
 
MY idea was to make second part of the code shorter in this way.
Code:
int led = 7;


void setup() {                

  pinMode (led, OUTPUT);  

}


void loop() {


delay (1000);
digitalWrite (led, HIGH);  
led ++;
while (led == 11);
But now, I know its a wrong way:) So i need to figure out the right way :)(
 
You might try:

int led = 7;


void setup() {

pinMode (led, OUTPUT);

}


void loop() {


delay (1000);
digitalWrite (led, HIGH);
led ++;
pinMode (led, OUTPUT);
while (led > 11);
 
Maybe this?

Code:
int firstLED = 7; 
int lastLED = 11;

void setup() {
  for (int i=firstLED; i <= lastLED; i++) {         
    pinMode (i, OUTPUT);
  }
}

void loop() {
  for (int i=firstLED; i <= lastLED; i++) {
    digitalWrite (i, HIGH);  
    delay (50);
    digitalWrite (i, LOW);
    delay (50);
    digitalWrite (i, HIGH);  
    delay (50);
    digitalWrite (i, LOW);  
    delay (50);
    digitalWrite (i, HIGH);
  }
}
 
Status
Not open for further replies.
Back
Top