Show Posts
Pages: 1 ... 10 11 [12] 13 14 ... 16
166  Forum 2005-2010 (read only) / Portugues / Re: Duvidas sobre COL-ROW scanning on: August 02, 2010, 08:46:45 am
Como já disse uma vez, não é nem um pouco aconselhável trabalhar em cima da especificação, se o regulador do Arduino fornece 100mA, tente trabalhar no máximo com uns 80mA, no caso deste projeto, a corrente de consumo será por volta 600 a 900mA então sem chances usar a alimentação do Arduino.

Com esta fonte que você tem , você pode montar um regulador com LM317 ou algum similar (LM350, LM117, LM 338, etc) que fornece uma corrente legal.

167  Forum 2005-2010 (read only) / Portugues / Re: Duvidas sobre COL-ROW scanning on: August 02, 2010, 07:14:58 am
Bruno,

no esquema que você quer montar, você envia todos os dados serialmente (estou com preguiça de ver se primeiro é do mais, para o menos significativo ou vice-versa), então você só tem que lembrar que você enviará primeiro os bits na ordem das ligações das portas e dos shift registers, então ao dar o sinal de latch em todos ao mesmo tempo, você simplesmente irá atualizar todas as saídas, então para usar assim, você só tem que seguir esta rotina sempre: envia todos os bits (mesmo os que não mudarão), e atualiza as saídas.

No caso é o que você disse mesmo, manda 8*n bits toda a vez.

Este método é bastante usado, pois controlando todos simultaneamente, você economiza algumas linhas de programação alem de pinos no controlador.

Quanto ao caso de se irá funcionar ou não o projeto completo, eu tenho minhas dúvidas quanto à tensão... mas não custa tentar, o fato é que você certamente irá precisar de uma fonte de 5V externa com corrente de no mínimo 800mA.

Só mais uma coisa, um fato curioso deste circuito, quanto mais leds da mesma coluna você acende, menor é a corrente de consumo smiley
168  Forum 2005-2010 (read only) / Portugues / Re: Iniciante, duvidas LED como php + arduino on: July 23, 2010, 06:48:54 am
Olá, eu não entendo nada de PHP, mas os valores impressos no serial monitor (49 e 50) estão corretos. Estes são os valores para 1 e 2 na tabela ASCII

http://pt.wikipedia.org/wiki/ASCII

Talvez não esteja funcionando apenas pelo método utilizado, essa função 'fwrite' por acaso não está escrevendo o valor inteiro 1 e 2 na porta? Se sim, tenta tenta fazer:

Code:
   $bto_liga->connect_simple('clicked', 'liga_led', '49');
    $bto_desliga->connect_simple('clicked', 'liga_led', '50');
169  Forum 2005-2010 (read only) / Portugues / Re: Comunicação I2C entre Arduinos on: July 29, 2010, 10:49:49 am
Faltou o link hehe

http://www.instructables.com/id/I2C-between-Arduinos/
170  Forum 2005-2010 (read only) / Portugues / Re: Comunicação I2C entre Arduinos on: July 29, 2010, 06:31:35 am
Olá, eu achei um pequeno tutorial no Instructables, com uns alguns videos etc, então apenas adaptei o código para receber um numero via serial, e transmitir de um Arduino ao outro, e este último pisca 3 leds alternadamente de acordo com o numero recebido.

Aqui está,

Master:
Code:
#include <Wire.h>

#define LED_PIN 13
byte x = 0;

void setup()
{
  Wire.begin(); // Start I2C Bus as Master
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);
  Serial.begin(9600);
  Serial.println("start");
}

int incoming;
void loop()
{
  if(Serial.available() >0)
  {
     delay(500); // delay para carregar os bytes no buffer
     x=0; // zera variaveis
     incoming = 0;
     while(Serial.available()) // enquanto houver bytes para ler:
     {
        incoming =(Serial.read() - 0x30); // armazena  o byte lido com seu valor numerico
        x = (x*10) + incoming; // calculo para x receber numero completo digitado
     }
  Serial.println(x, DEC); // imprime x para verificar
  
  Wire.beginTransmission(9); // transmit to device #9
  Wire.send(x);              // sends x
  Wire.endTransmission();    // stop transmitting
  //x++;
  //if (x > 5) x=0;
  delay(450);
  }
}

Slave:
Code:
#include <Wire.h>

#define LED_PIN 13
#define LED_1 12
#define LED_2 11

int x;

void setup() {
  Wire.begin(9);                // Start I2C Bus as a Slave (Device Number 9)
  Wire.onReceive(receiveEvent); // register event
  
  pinMode(LED_PIN, OUTPUT);
  pinMode(LED_1, OUTPUT);
  pinMode(LED_2, OUTPUT);
  
  digitalWrite(LED_PIN, LOW);
  digitalWrite(LED_1, LOW);
  digitalWrite(LED_2, LOW);
  
  x = 0;
}

int j=13;
void loop()
{
 if (x > 0)
 {
   for (int i=0; i<x; i++) // funcao para piscar 3 leds alternadamente, o numero de vezes recebido via i2c
   {
     digitalWrite(j, HIGH);
     delay(200);
     digitalWrite(j, LOW);
     delay(200);
     j--;
     if(j<11) j=13;
   }
   x = 0;
   delay(1000);
 }
 delay(100);
}
  

void receiveEvent(int howMany) // evento
{
  x = Wire.receive();    // receive byte as an integer  
}
171  Forum 2005-2010 (read only) / Portugues / Re: Comunicação I2C entre Arduinos on: July 28, 2010, 11:31:06 am
Descobri! medi os pinos com um osciloscópio e descobri que o pino 4 estava se comportando de acordo com o led do pino 13... meu Arduino estava coincidentemente com um respingo de solda entre a trilha do pino analógico 4 e o pino 13 (do led) ¬¬

Agora funciona perfeitamente, mas aproveito para deixar outra pergunta,

Esta lib tem confirmação de recebimento da mensagem pelo slave (ou mesmo pelo master se for o caso) ou terei de fazer isso manualmente?

Como seria um código simples (pode ser só a lógica) com confirmação de recebimento de pacote?

Obrigado.
172  Forum 2005-2010 (read only) / Portugues / Comunicação I2C entre Arduinos on: July 28, 2010, 11:15:09 am
Olá, estou tentando fazer 2 Arduino se comunicarem via I2C, o que teoricamente é muito simples usando a lib Wire.h e 4 fios para ligá-los,

porém, não está funcionando nem por decreto, tentei os exemplos da própria lib, tentei exemplos achados em blogs, e nada  smiley-sad

Alguém tem idéia de alguma causa de problema?

Eu estou usando pull-ups de 22K externos, os GNDs e o VCC estão ligados juntos, os pinos usados são o A4 e o A5 (4 e 5 analógicos) o chip é o ATMEGA168

os Arduinos estão a menos de 10 centímetros de distância, medi continuidade, etc...
173  Forum 2005-2010 (read only) / Portugues / Re: LE-MM103 com arduino on: July 23, 2010, 07:10:38 am
Neste blog tem um esquema de ligações para e o código usado com uma cor.

http://blog.duklabs.com/?p=133

Aparentemente está bem exemplificado, dá uma olhada lá...

Já que você disse que seu problema são as ligações, e que não entendeu muito bem o datasheet, vou te dar uma luz hehe,

Segundo o datasheet, você alimenta o pino da linha, e põe o "valor 0" (coloca GND) no pino da coluna que acenderá o led desejado.

No exemplo do blog, o cara deitou a matriz (90º), mas o princípio é o mesmo.

Ah, e o bendito tem 12 pinos de cada lado porque é bicolor, logo, 8 linhas comum as duas cores + 8 colunas vermelhas + 8 colunas verdes = 24
174  Forum 2005-2010 (read only) / Portugues / Re: Problemas com gravação on: July 21, 2010, 04:30:51 pm
É isso mesmo Bruno, quanto mais corrente (menor resistor), mais brilho, porém sempre respeitando o limite da sua alimentação, no caso o LM7805 (certo?) e a corrente que o próprio led suporta, que não deve ser mais que alguns mA.

Disponha.
175  Forum 2005-2010 (read only) / Portugues / Re: Problemas com gravação on: July 21, 2010, 04:07:54 pm
haha, não, esta conta que fiz é a lei de ohm (U = R . I)

Pode ligar com resistores de 1K que irá funcionar. A corrente será igual à 4,3mA para cada led, somando os 13 leds, você terá 55,9mA de consumo total e mais alguns miliamperes que o próprio Atmega consome.

Infelizmente não dá para usar resistores muito grandes, pois se a corrente (que é inversamente proporcional) é muito pequena o led pode não acender, ou acender com pouco brilho, e não é nem um pouco recomendável trabalhar no limite do especificado, ou seja, se suporta 100mA, tente trabalhar com no maximo uns 80mA e isso em casos realmente necessários, ou para pequenos testes.
176  Forum 2005-2010 (read only) / Portugues / Re: Problemas com gravação on: July 21, 2010, 03:46:52 pm
O regulador do Arduino se não me engano suporta 100mA, então você pode ligar no maximo 5 leds de 20mA  e mesmo assim o regulador esquentaria bastante smiley-razz

O que dá pra fazer, é reduzir essa corrente para uma mais baixa colocando resistores em série com os leds, ou alimentar via USB  / Serial / Fonte externa.

Eu sempre alimento via USB quando preciso fazer testes com leds, lcds, etc e sempre dá conta.

Mas acho que 5mA são suficientes para acender (quase) todo tipo de led, lembrando que a queda sob o led é de aprox. 0.7V, então para 5mA:

R = U/I
x = (5 - 0.7)/0.005
x = 860 ohm

Dá pra substituir por resistores de 820 ohm que são facilmente encontrados
177  Forum 2005-2010 (read only) / Portugues / Re: como testar 328 sem boot?? on: July 19, 2010, 06:25:15 am
Cesar, provavelmente o único jeito de você saber se o chip está ok é gravando algo nele, se ele está sem bootloader, você deve ter um gravador para isso... ou usar algum dos métodos mais baratos para gravação como o parallel programmer (http://arduino.cc/en/Hacking/ParallelProgrammer), ou bitbang (http://www.arduino.cc/playground/Hacking/AvrdudeFTDIBitbang).

O problema destes métodos, e que nem sempre funcionam e fica díficil de você saber se é por causa do controlador, ou outro motivo, mas a princípio é isso aí.
178  Forum 2005-2010 (read only) / Portugues / Re: Sensores LM35DZ + LDR com variações on: July 19, 2010, 11:14:14 am
Amigo adicione um Serial.print, para verificar o valor lido do LM35
Code:
 val = analogRead(potPin);                 //read the value of sensor
  Serial.print("LM35: ");
  Serial.println(val); // ## imprima o valor lido aqui e verifique se esta de acordo com o esperado
  temperature = (5*val*100/1024);           //convert voltage to temperature
  Serial.println("Valor LM35dz");
  Serial.println ((long)temperature);       //print temperature value on serial screen
 
  delay(10000);  //Tempo de espera em secondos
 

Se o valor lido estiver ok, e o valor depois de feito o calculo estiver incorreto, você está com problema de tamanho de variavel. Se ambos os valores estiverem incorretos, o problema está nas ligações (ligação incorreta, mal contato, porta com defeito, etc).

Para o primeiro caso, tenta declarar temperatura como unsigned long, e ajustar o calculo para trabalhar com numero inteiro. calculos com pontos flutuantes geralmente sao problematicos para microcontroladores.

Aliás, a variável "val" pode ser do tipo inteiro.
179  Forum 2005-2010 (read only) / Portugues / Re: Arduino com varios LCDS on: July 16, 2010, 06:42:40 am
Olá,

aqui tem uma lib e o esquema para se conectar um LCD de até 2 linhas usando apenas dois fios

https://code.google.com/p/arduinoshiftreglcd/

Para conectar mais displays, basta criar outra instância "ShiftRegLCD" por exemplo:

Code:
#include ShiftRegLCD.h

ShiftRegLCD srlcd1(2, 3, TWO_WIRE) // declara lcd 1
ShiftRegLCD srlcd2(4, 5, TWO_WIRE) // declara lcd 2

void setup()
{
    srlcd1.print("Hello world");
    srlcd2.print("Hello world");
}

void loop()
{}

Aqui um link com as funções que podem ser usadas dessa lib.
https://code.google.com/p/arduinoshiftreglcd/wiki/Usage

Espero ter ajudado.
180  Forum 2005-2010 (read only) / Portugues / Re: Alterações no preferences.txt não funcionam on: July 13, 2010, 06:38:57 am
Olá, estou usando Windows XP, percebi que há mais de um arquivo desses, não me recordo em qual deles eu mexi e consegui mudar a cor da fonte, mas foi a única coisa que funcionou, não consegui alterar tamanho da janela, escolher guardar último arquivo aberto, etc...
Pages: 1 ... 10 11 [12] 13 14 ... 16