Pessoal seguinte estou programando com meu Arduíno Uno com meu filho e criei as seguintes linhas de comando:

int led1 = 1;
int led2 = 2;
int led3 = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led7 = 7;
int led8 = 8;

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led1, HIGH);
  delay(15);
  digitalWrite(led1, LOW);
  delay(15);
  digitalWrite(led2, HIGH);
  delay(15);
  digitalWrite(led2, LOW);
  delay(15);
  digitalWrite(led3, HIGH);
  delay(15);
  digitalWrite(led3, LOW);
  delay(15);
  digitalWrite(led4, HIGH);
  delay(15);
  digitalWrite(led4, LOW);
  delay(15);
  digitalWrite(led5, HIGH);
  delay(15);
  digitalWrite(led5, LOW);
  delay(15);
  digitalWrite(led6, HIGH);
  delay(15);
  digitalWrite(led6, LOW);
  delay(15);
  digitalWrite(led7, HIGH);
  delay(15);
  digitalWrite(led7, LOW);
  delay(15);
  digitalWrite(led8, HIGH);  
  delay(15);
  digitalWrite(led8, LOW);
  delay(15);
  digitalWrite(led7, HIGH);
  delay(15);
  digitalWrite(led7, LOW);
  delay(15);
  digitalWrite(led6, HIGH);
  delay(15);
  digitalWrite(led6, LOW);
  delay(15);
  digitalWrite(led5, HIGH);
  delay(15);
  digitalWrite(led5, LOW);
  delay(15);
  digitalWrite(led4, HIGH);
  delay(15);
  digitalWrite(led4, LOW);
  delay(15);
  digitalWrite(led3, HIGH);
  delay(15);
  digitalWrite(led3, LOW);
  delay(15);
  digitalWrite(led2, HIGH);
  delay(15);
  digitalWrite(led2, LOW);
  delay(15);
  digitalWrite(led1, HIGH);
  delay(15);
  digitalWrite(led1, LOW);
  delay(15);
 }

Esse código cria uma simples sequencia para os led's piscarem indo e voltando algo bem simples mesmo, mas como ainda estou engatinhando com os códigos vi que as linhas pinMode, são muito extensas e trabalhosas de digitar queria simplifica - las tendo em vista que todas estão indicando a mesma coisa que todas as portas dos leds da 1~8 são para OUTPUT, tentei fazer de outra forma:

"pinMode(led1,led2,led3,led4,led5,led6,led7,led8, OUTPUT)"

Porém ao escrever essa linha de comando a IDE do Arduino não compila e tive que escrever o código inteiro como abaixo:

  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);

Não que seja muito difícil de se fazer mais tendo em vista que vou fazer com meu filho quero criar algo minimalista para ele ir aprendendo também....poderiam me ajudar ???

Abraços

Exibições: 672

Responder esta

Respostas a este tópico

Ok, tem alguma indicação de livros que possa ler para entender melhor sobre isso ??

Por padrão se vc der HIGH em uma porta ela já está em OUTPUT, nao é necesario vc declarar todas elas uma a uma, e se vc deixar de colocar as portas em variáveis e deixar como  o numero delas mesmo vc pode fazer essa sequencia com um if, ocupando apenas umas 4 linhas pra todo o codigo, sei qeu dá, so nao sei como, :D , faz uma variavel inteira e faz ela assumir cada loop um valor mais alto 1 unidade:

int led;

void setup()

{}

void loop()

{

led = 1;

for (led >= 8 ; led++)

}

é mais ou menos isso, a cada loop a variavel led vai assumir o valor dela mais um, ai se vc fizer isso da pra vc uzar ela na como quiser e depois é so dar mais um loop, (dica, declare as variaveis dentro da funcao que vc vai uzar, se for uzar funções, pra ela nao ficar ocupando espaco na memoria do arduino o tempo todo, destrua a variavel sempre que possivel

Faça a variável led em vetor (array).

Ex:

int led[7] = {1, 2, 3, 4, 5, 6, 7, 8};

void setup(){

   for (int x=0; x<7; x++){

      pinMode(led[x], OUTPUT);

   }

}

Aaaaeeeeeeeeeeeeeeeee !!!!!!!

Isso mesmo que eu quero meu camarada outro amigo tinha me passado algo parecido com esse mas colocou assim...

unsigned char LED[8] = {1,2,3,4,5,6,7,8};

void setup() {
for (unsigned char j = 0; j<8;) {
pinMode(LED[j], OUTPUT);
}
}

Porque ele usou o unsigned ???

unsigned indica que a variável será sem sinal (+ ou -)

Eu gosto de trabalhar com variável inteira em loop, por estar incrementando-a.

Mas trabalhando assim com a variável em array, esse seu código vai reduzir pra metade. :)

Abraços!

www.efeitonerd.com.br :)

Entendi agora...e realmente ficou muito mais pequenino o código mesmo.....

e será que consigo diminuir por exemplo a primeira variável ??

int led1 = 1;
int led2 = 2;
int led3 = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led7 = 7;
int led8 = 8;

Sim, nomear elas todas de uma forma geral...

O código todo ficaria assim:

int led[7] = {1, 2, 3, 4, 5, 6, 7, 8};

// the setup routine runs once when you press reset:
void setup() {
  // initialize the digital pin as an output.
  for (int x = 0; x < 7; x++) {
    pinMode(led[x], OUTPUT);
  }
}

// the loop routine runs over and over again forever:
void loop() {
  for (int x = 0; x < 7; x++) {
    digitalWrite(led[x], HIGH);
    delay(15);
    digitalWrite(led[x], LOW);
    delay(15);
  }
}

:)

Esse código substitui o que vc postou.

Cola no arduino e vê se funciona.

Abraços!

Funcionou?!

Perai to testando aqui, porém a primeira vista colocando somente os que você digitou está correto, eles correm....porém no meu código eles voltavam acendendo também....como um ping....pong 12345678....87654321....entendeu ??? estou tentando criar a outra função....vamos ver se consigo...não de a resposta ainda...kkkkk

Ah é! Agora que vi que tem a volta...

É só seguir o mesmo padrão. :)

heheheh ok!

Mas ai que ta não to conseguindo fazer a volta...não to conseguindo explicar pro Arduino para ele sair do primeiro laço.....porque ele sempre retorna pro Zero novamente... quero criar tipo algo assim

for (x = 8, x<8, x--) algo como isso.....kkkkkk para ele ir diminuindo

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço