collapse

* Links de Robótica

* Posts Recentes

Ajuda com TRIAC por senso
[17 de Novembro de 2017, 18:00]


TV LG White Screen por almamater
[15 de Novembro de 2017, 08:37]


Pergunta sobre prototipagem ( Pesquisa ) por luisjustin
[14 de Novembro de 2017, 23:22]


Medir Agua que está no Poço por Njay
[14 de Novembro de 2017, 13:28]


Amplificador audio por beirao
[12 de Novembro de 2017, 23:43]


Power_OK Enermax por edeweld
[12 de Novembro de 2017, 17:15]


Driver motor por beirao
[11 de Novembro de 2017, 17:40]


Preciso de uma fonte de corrente constante ? por samc
[09 de Novembro de 2017, 14:18]


Pressoestato 0-10V por artur36
[07 de Novembro de 2017, 23:22]


Ideias para construir um quadrúpede simples por Njay
[07 de Novembro de 2017, 18:39]

Autor Tópico: Sobre sketch funcionando parcialmente.  (Lida 1327 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Etico

  • Mini Robot
  • *
  • Mensagens: 10
Sobre sketch funcionando parcialmente.
« em: 24 de Dezembro de 2011, 19:08 »
Olá! Primeiramente gostaria de desejar boas festas.

Tenho um pequeno problema. Estou com intensão de fazer com que 10 LEDs pisquem em sequência. Por exemplo, o LED 1 acende, então ele apaga e acende o 2 e assim por diante.

Vejam o esquema que montei na minha protoboard



Fiz também um vídeo que mostra o problema.



O efeito nos LEDs funcona parcialmente, digo isso porque os que estão ligados aos pinos 4 e 5 não piscam nunca.

Esse é o código para realizar a tarefa.
Código: [Seleccione]
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int ledDelay(65);
int direction = 1;
int currentLED = 0;
unsigned long changeTime;

void setup() {
  for (int x=0; x<10; x++) {
    pinMode(ledPin[x], OUTPUT); }
    changeTime = millis();
}

void loop() {
  if ((millis() - changeTime) > ledDelay) {
  changeLED();
    changeTime = millis();
  }
}

void changeLED() {
  for (int x=0; x<10; x++) {
    digitalWrite(ledPin[x], LOW);
  }
  digitalWrite(ledPin[currentLED], HIGH);
currentLED += direction;
  if (currentLED == 9) {direction = -1;}
  if (currentLED == 0) {direction = 1;}
}

Poderiam me dizer o que posso fazer para corrigir isso?

Começo a achar que esses pinos possivelmente estão com defeito, mas por enquanto não encontrei motivo para tal...

Att.,

Etico
« Última modificação: 24 de Dezembro de 2011, 20:26 por Etico »

Offline GnGz

  • Mini Robot
  • *
  • Mensagens: 665
Re: Sobre sketch funcionando parcialmente.
« Responder #1 em: 24 de Dezembro de 2011, 20:32 »
Verifica se estão bem polarizados os leds, senão troca um dos outros e mete lá e verifica se acende ao não.

Offline joaopedrocmp

  • Mini Robot
  • *
  • Mensagens: 246
Re: Sobre sketch funcionando parcialmente.
« Responder #2 em: 25 de Dezembro de 2011, 21:46 »
Boas :)

Assim de repente depois de um grande jantar de Natal, acho que assim funciona.

Código: [Seleccione]

byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int ledDelay(65);
int direction = 1;
int currentLED = 4;
unsigned long changeTime;

void setup() {
     pinMode(ledPin[4], OUTPUT);
     pinMode(ledPin[5], OUTPUT);
     pinMode(ledPin[6], OUTPUT);
     pinMode(ledPin[7], OUTPUT);
     pinMode(ledPin[8], OUTPUT);
     pinMode(ledPin[9], OUTPUT);
     pinMode(ledPin[10], OUTPUT);
     pinMode(ledPin[11], OUTPUT);
     pinMode(ledPin[12], OUTPUT);
     pinMode(ledPin[13], OUTPUT);
       changeTime = millis();
}

void loop() {
 
  digitalWrite(ledPin[currentLED], HIGH);
   delay(65);
   digitalWrite(ledPin[currentLED],LOW);
   
   if (currentLED =13){direction= -1;};
   if (currentLED = 4){direction= 1;};
   currentLED =currentLED + direction;
   
  }


Offline Etico

  • Mini Robot
  • *
  • Mensagens: 10
Re: Sobre sketch funcionando parcialmente.
« Responder #3 em: 26 de Dezembro de 2011, 17:25 »
Olá.

Consegui resolver o problema, era causado porque não fiz uma ligação necessária. Vou explicar melhor, vejam a imagem abaixo:


Eu havia esquecido de fazer uma ligação horizontal indicada pelo fio laranja, logo os últimos pinos não iriam acender.
Foi apenas os dois últimos pinos porque na prática eu liguei os primeiros adiante, como mostra o vídeo...

A consequência disso eu não sei, gostaria que vocês me falassem qual é o risco ou problema de esquecer de fazer a conexão com o terra?

Offline Etico

  • Mini Robot
  • *
  • Mensagens: 10
Re: Sobre sketch funcionando parcialmente.
« Responder #4 em: 30 de Dezembro de 2011, 19:32 »
Pessoal me ajudem, por favor.  :-[

Offline im2geek4you

  • Mini Robot
  • *
  • Mensagens: 47
    • GeekProjects
Re: Sobre sketch funcionando parcialmente.
« Responder #5 em: 30 de Dezembro de 2011, 20:20 »
Boas,
Mesmo sem ver em detalhe a forma como o Arduino faz o drive dos portos posso-te dizer que a falta dessa ligação não faz diferença nenhuma. Apenas não serias capaz de alimentar os led's daquele lado, pois os led's não eram alimentados com uma tensão suficiente.

PS: atenção que em certos microcontroladores (dependendo da forma como é feito o drive dos portos) é possível alimentar um led mesmo sem usar a massa. Ligando por exemplo o led  e a resistência a dois pinos dos portos e colocando um ao valor lógico 1 (5V) e outro a 0 (0V).  Espero não te ter baralhado mais ;D

Offline Etico

  • Mini Robot
  • *
  • Mensagens: 10
Re: Sobre sketch funcionando parcialmente.
« Responder #6 em: 30 de Dezembro de 2011, 21:29 »
Boas,
Mesmo sem ver em detalhe a forma como o Arduino faz o drive dos portos posso-te dizer que a falta dessa ligação não faz diferença nenhuma. Apenas não serias capaz de alimentar os led's daquele lado, pois os led's não eram alimentados com uma tensão suficiente.

PS: atenção que em certos microcontroladores (dependendo da forma como é feito o drive dos portos) é possível alimentar um led mesmo sem usar a massa. Ligando por exemplo o led  e a resistência a dois pinos dos portos e colocando um ao valor lógico 1 (5V) e outro a 0 (0V).  Espero não te ter baralhado mais ;D

Obrigado, mas fiquei um pouco confuso hehehe. Ainda não consegui entender se não ter ligado os últimos leds ao terra GND pode ou não causar algum tipo de problema. Desculpe-me se você explicou isso, ainda não consegui captar este conceito, na verdade nem sei porque deve ter uma ligação ao terra.
« Última modificação: 30 de Dezembro de 2011, 21:31 por Etico »

Offline LoneWolf

  • Mini Robot
  • *
  • Mensagens: 763
  • ..Ser ou não ser não tem questão nenhuma...
    • A Visão do Lobo
Re: Sobre sketch funcionando parcialmente.
« Responder #7 em: 30 de Dezembro de 2011, 22:33 »
Boas,

Etico, pelo que eu entendi também é que podes ligar um led ex: ao pin 11 e ao 12, no 11 das HIGH e o 12 LOW acho que é isso.

Agora o facto de não teres o GND ligado causou isso ( não funcionou) dai se dizer que se deve partilhar todos os GND, mas no teu caso não havia continuidade ( circulação da electricidade) dai não funcionar.

Abraços e espero ter ajudado e não complicado mais lol
Blog: A Visão do Lobo

Nick antigo: kilobyte

Offline Etico

  • Mini Robot
  • *
  • Mensagens: 10
Re: Sobre sketch funcionando parcialmente.
« Responder #8 em: 30 de Dezembro de 2011, 22:46 »
Boas,

Etico, pelo que eu entendi também é que podes ligar um led ex: ao pin 11 e ao 12, no 11 das HIGH e o 12 LOW acho que é isso.

Agora o facto de não teres o GND ligado causou isso ( não funcionou) dai se dizer que se deve partilhar todos os GND, mas no teu caso não havia continuidade ( circulação da electricidade) dai não funcionar.

Abraços e espero ter ajudado e não complicado mais lol

Certo, o problema em si eu entendi e consegui resolver. Considerando de uma forma geral sem focalizar no problema que apresentei, qual é a utilidade de se fazer a ligação com o terra e qual a consequência de não fazer? O Arduíno pode queimar, não trabalhar de forma correta??

Obrigado.

Offline LoneWolf

  • Mini Robot
  • *
  • Mensagens: 763
  • ..Ser ou não ser não tem questão nenhuma...
    • A Visão do Lobo
Re: Sobre sketch funcionando parcialmente.
« Responder #9 em: 30 de Dezembro de 2011, 22:54 »
Bem eu não serei a melhor pessoa para te explicar mas vou tentar, no teu caso não ligas-te o GND (-) e com isso não havia continuidade do positivo para o negativo e assim não funciona. Não queima o arduino podes estar descansado  ;D só não funcionou como presenciaste isso, noutros casos podia acontecer o mesmo ou funcionar mal.

Abraços se não for isso desculpa-me por te estar a induzir em erro e que alguém me corrija sff.   
Blog: A Visão do Lobo

Nick antigo: kilobyte

Offline im2geek4you

  • Mini Robot
  • *
  • Mensagens: 47
    • GeekProjects
Re: Sobre sketch funcionando parcialmente.
« Responder #10 em: 31 de Dezembro de 2011, 18:17 »
Boas,

Etico, pelo que eu entendi também é que podes ligar um led ex: ao pin 11 e ao 12, no 11 das HIGH e o 12 LOW acho que é isso.

Agora o facto de não teres o GND ligado causou isso ( não funcionou) dai se dizer que se deve partilhar todos os GND, mas no teu caso não havia continuidade ( circulação da electricidade) dai não funcionar.

Abraços e espero ter ajudado e não complicado mais lol

@LoneWolf:Correcto!

Já agora aproveito para deitar uma uma acha para a fogueira  ;D.
Tive a dar uma vista de olhos nas 448 paginas do datasheet to ATMEGA328 que é um dos microcontroladores mais comuns nos Arduinos e a corrente máxima que podes obter de cada pino dos portos é 40mA, MAS, há sempre um mas, a corrente máxima no microcontrolador é 200mA. Quer isto dizer que se quiseres ligar 10 led's ao mesmo tempo a corrente total em cada um não deve ultrapassar os 20mA. Isto depende bastante do tipo de led's e da resistência limitadora de corrente que usas. Por exemplo se estiveres a usar led's de alto brilho estes normalmente precisam de 50mA ou mais.. com 10 led's destes facilmente chegas a 0.5A... por isso evita ligar este tipo de led's directamente, usa um outro circuito integrado para fazer o drive dos led's, ou transístores, há inúmeras soluções.
O teu "boneco" parece ter resistências de 220Ohm(vermelho, vermelho,castanho) o que dá cerca de 13.6mA para um led com uma queda de tensão de 2V. Não há problema nenhum em alimentar todos os led's pois ainda estás dentro do limite(136mA<200mA). Portanto fica descansado!  :P