Show Posts
Pages: 1 [2] 3 4 ... 16
16  International / Portugues / Re: Medir descarga da bateria 12 V com arduino on: October 31, 2013, 11:57:48 am
Um divisor resistivo por 3 deve dar conta:

onde quer medir |___|10k|__.__|4k7|___| gnd
.                                               |
.                                               |
.                                             A0 (entrada analógica do arduino)

um codigo rapido:
Code:
//com "precisao" de 10mV
unsigned int tensao;
tensao = analogRead(A0);
tensao = (float)tensao * 0.1529; // coeficiente pelo divisor resisistivo
//tensao é 10x V entrada
17  International / Portugues / Re: Arduino Mega + LCD TFT01: bitmap, memoria, etc on: October 31, 2013, 11:27:13 am
Quote
De que limite estas a falar em termos de bytes?
É o atmega1280, 128k de flash, 8k de sram

Quote
axo pouco provável que o teu problema seja mesmo o tamanho do bitmap na flash mas sim a quantidade de bytes que podes desenhar no ecra na dimensão que desejas.
Sim, eu cheguei nesta conclusão tambem, gera erros de print na tela bastante aleatorios quando a imagem é maior que o ecra, mas não é esse o caso...

É assim: se eu armazeno (apenas por questão de exemplo) a mesma imagem três vezes (podem ser três diferentes), com nomes diferentes, e mando imprimir na tela as "três bmps", ela imprime cada uma perfeitamente. Agora, se eu crio uma quarta bmp, mesmas dimensões, mesmo tamanho, etc, e mando imprimir as 4, as 4 imprimem com erros!

Acredito estar relacionado à como é tratado o PROGMEM, ou talvez em como a lib utiliza este recurso, mas não faço ideia do que realmente possa ser.

Quote
Pergunta óbvia... quanto é que tens livres de flash?
Muita!... Brincadeiras a parte, uns 60k.

Quote
Porque é que meteste aqui o código que funciona em vez do código que não funciona? Se este funciona, não podemos fazer muito nele, ou podemos?
Pois o código que não funciona é o mesmo com mais imagens armazenadas na flash. Mesmo que eu não use todas, que no software eu só use uma bmp das armazenadas, e só uma vez, só pelo fato de eu carregar o bmp no Arduino como no exemplo, qualquer bmp que imprimir aparece com lixo.

Quote
Isso que dizes de aparecer bitmaps antigos é interessante e indica-me que pode estar a haver algum problema com apontadores.
Tem razão, provavelmente ele não zera memória toda, pois há bastante diferença de tempo de carregamento de acordo com o tamanho final do programa.

O tamanho fica em 71K, sendo que aproximadamente 39k são de bmps
18  International / Portugues / Re: Arduino Mega + LCD TFT01: bitmap, memoria, etc on: October 29, 2013, 05:02:40 am
Ninguém? Não preciso de uma solução, apenas de uma explicação se possível...
19  International / Portugues / Re: Comunicação Arduino + modulos Xbee(Standalone) on: October 18, 2013, 12:27:51 pm
Cara, se achar algo interessante compartilha aqui, também estou pensando em fazer algo do tipo! Um Arduino na ethernet + xbee, e xbees standalone pela casa
20  International / Portugues / Re: Erro ao realizar o upload on: October 18, 2013, 12:08:49 pm
tenta mudar o nome da COM2 para COM3 no gerenciador de dispositivos, tenha certeza que essa COM some quando você desconecta o Arduino.

Tem uma lista extensa de problemas que podem causar isto, mas sinto dizer que a mais comum é Arduino queimado  smiley-sad

Tenta trocar o cabo, a porta USB, conecta e desconecta, reinicia o computador, reinstala os drivers, etc
21  International / Portugues / Arduino Mega + LCD TFT01: bitmap, memoria, etc on: October 18, 2013, 11:57:08 am
Galera,
Estou usando um Arduino mega para controlar um LCD grafico 320x240 (inclusive recomendo, é barato e bem legal de mexer).
link: http://www.elecfreaks.com/wiki/index.php?title=2.4%22_TFT_LCD:_TFT01-2.4

Encontrei uma biblioteca para controlá-lo que facilita bastante o trabalho: link: http://www.henningkarlsen.com/electronics/library.php?id=51

Aí a dúvida é o seguinte:
eu gero a array uint16 contendo uma bitmap, usando o PROGMEM, então usando a função da lib, ele desenha o bitmap na tela do LCD. Até aí tudo bem, o caso é que eu entendo que posso armazenar quantos BMPs minha flash permitir, mas não é isso o que acontece. Se eu excedo um certo limite de memória na soma dos bytes da bmp, ele imprime lixo na LCD, inclusive com pedaços de BMPs de softwares antigos, o que pode estar acontecendo?

Aqui um trecho de uma das bitmaps:
Code:
// Generated by   : ImageConverter 565 Online
// Generated from : graph.png
// Time generated : Fri, 18 Oct 13 18:06:19 +0200  (Server timezone: CET)
// Image Size     : 56x56 pixels
// Memory usage   : 6272 bytes

#include <avr/pgmspace.h>

prog_uint16_t graph[3136] PROGMEM={
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,   // 0x0010 (16) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,   // 0x0020 (32) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,   // 0x0030 (48) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF79, 0xDF58, 0xDF58, 0xDF58,   // 0x0040 (64) pixels
0xDF58, 0xDF58, 0xDF58, 0xDF58, 0xDF58, 0xDF58, 0xDF58, 0xDF58, 0xD758, 0xE77A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,   // 0x0050 (80) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,   // 0x0060 (96) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,   // 0x0070 (112) pixels...................
};

Aqui o código no Arduino:
Code:
#include <UTFT.h>
#include <avr/pgmspace.h>
#include "draws.h"; // que contem os bitmaps

// Declare which fonts we will be using
extern uint8_t SmallFont[];

// Uncomment the next line for Arduino 2009/Uno
//UTFT myGLCD(ITDB32S,19,18,17,16);   // Remember to change the model parameter to suit your display module!

// Uncomment the next line for Arduino Mega
UTFT myGLCD(SSD1289,38,39,40,41);   // Remember to change the model parameter to suit your display module!


void setup()
{
  myGLCD.InitLCD();
  myGLCD.setFont(SmallFont);
}

void loop()
{  
  myGLCD.fillScr(255, 255, 255);
  myGLCD.setColor(255, 255, 255);
  myGLCD.drawBitmap (64, 24, 56, 56, graph, 3);
  delay(5000);
}

E aqui o trecho da lib que excuta a impressão da bmp:
Code:
void UTFT::drawBitmap(int x, int y, int sx, int sy, bitmapdatatype data, int scale)
{
unsigned int col;
int tx, ty, tc, tsx, tsy;
byte r, g, b;

if (scale==1)
{
if (orient==PORTRAIT)
{
cbi(P_CS, B_CS);
setXY(x, y, x+sx-1, y+sy-1);
for (tc=0; tc<(sx*sy); tc++)
{
col=pgm_read_word(&data[tc]);
LCD_Write_DATA(col>>8,col & 0xff);
}
sbi(P_CS, B_CS);
}
else
{
cbi(P_CS, B_CS);
for (ty=0; ty<sy; ty++)
{
setXY(x, y+ty, x+sx-1, y+ty);
for (tx=sx-1; tx>=0; tx--)
{
col=pgm_read_word(&data[(ty*sx)+tx]);
LCD_Write_DATA(col>>8,col & 0xff);
}
}
sbi(P_CS, B_CS);
}
}
else
{
if (orient==PORTRAIT)
{
cbi(P_CS, B_CS);
for (ty=0; ty<sy; ty++)
{
setXY(x, y+(ty*scale), x+((sx*scale)-1), y+(ty*scale)+scale);
for (tsy=0; tsy<scale; tsy++)
for (tx=0; tx<sx; tx++)
{
col=pgm_read_word(&data[(ty*sx)+tx]);
for (tsx=0; tsx<scale; tsx++)
LCD_Write_DATA(col>>8,col & 0xff);
}
}
sbi(P_CS, B_CS);
}
else
{
cbi(P_CS, B_CS);
for (ty=0; ty<sy; ty++)
{
for (tsy=0; tsy<scale; tsy++)
{
setXY(x, y+(ty*scale)+tsy, x+((sx*scale)-1), y+(ty*scale)+tsy);
for (tx=sx-1; tx>=0; tx--)
{
col=pgm_read_word(&data[(ty*sx)+tx]);
for (tsx=0; tsx<scale; tsx++)
LCD_Write_DATA(col>>8,col & 0xff);
}
}
}
sbi(P_CS, B_CS);
}
}
clrXY();
}

Este exemplo funciona bem, mas se por exemplo eu duplicar a bmp graph, gerando graph2, graph3, graph4... e mandar imprimir seguidamente no loop, a imagem gerada aparece cheia de lixo.
22  International / Portugues / Re: Medir distância e velocidade on: July 19, 2013, 02:51:18 pm
Amigo, se possível faz um desenho e posta aqui, exemplificando os corpos, os movimentos e as posições, incluindo dos sensores. Seu projeto parece interessante mas está difícil visualizar.

É tipo (exemplo) como se fosse um sensor na linha de chegada para saber quando o primeiro lugar chegou e a que velocidade, e quando o segundo chegou, com que distância e tempo de diferença??
23  International / Portugues / Re: [tuto] Corrigir tradução da opção "cortar" na IDE do Arduino 1.0.5 em pt-br on: July 19, 2013, 01:49:12 pm
Não sei como funciona a tradução oficial, mas creio que seria interessante enviar isso ao site oficial para que fosse atualizado...

Alguém sabe se o projeto é open source? Se está em um GitHub ou similar onde possamos fazer commits/push?

Já reportei aqui -> https://github.com/arduino/Arduino/issues?state=open
É apenas uma solução imediata para quem quiser, esse 'bug' me incomoda desde que saiu a tradução da IDE (acredito que na 1.0?), e quando descobri como resolver postei aqui smiley-wink

...já está confirmado a correção na próxima release...
24  International / Portugues / Re: Motor de passos + driver (código para girar em graus) on: July 16, 2013, 03:32:09 pm
Quote
eu gostaria de digitar um valor, e só qndo esse valor fosse digitado rodasse a função loop.. pelos print que botei.. ele fica no loop e nao para ali no serial.read.. acho que ia parar e ficar na linha até que fosse digitado o valor, se sem digitar nada ele ta passando igual e imprimindo sempre -1 na variavel digValue, sendo que eu atribuo 0 pra ela, e qndo digito algo no terminal ela imprime um valor 49.. sei la que lixo ou o que ela ta pegando pra imprimir, mas gostaria de conseguir controlar isso, com uma opcao entrar ou nao ali no if certo dai. Alguma dica?

Code:
while (Serial.available() > 0) { Serial.read(); } // limpa o 'lixo'

while (Serial.available() == 0); // fica parado aqui enquanto é zero
digValue = Serial.read(); // le quando digitado
isso que quer?
Só um adendo: cuidado com esses loops que 'travam' o código, se programados de maneira errada...vai travar seu código!
25  International / Portugues / Re: Sensor de corrente(programação) on: July 16, 2013, 03:12:27 pm
Quote
E mais outra questão bubulindo é que não consegui perceber se foi engano seu ou não quando fez esta conta //5V = 1024 1V = (1*1024)/5 = 204.8 ~ 209 >Arredondou para 209 porquê para 209 e não 205???
Não li o tópico inteiro, mas acredito que ele simplesmente se enganou amigo, põe 205 lá e vê se é isso mesmo, a capacidade de fazer upload via usb é boa justamente para estes casos,
não está dando certo? Altera o que você acha que possa interferir e vê o resultado instantaneamente. Piorou? Desfaz a alteração e vai para a próxima linha smiley-wink

Quote
Como mudo o valor 2=0 para 1.96=0??
Não entendi direito sua dúvida, mas talvez só arrumando o trecho:

corrente = map(valor, 209, 614, -100, 100);
para:
corrente = map(valor, 205, 614, -100, 100);

pode ser que resolva o problema. Se não, o caminho é por aí, percebe que seu problema maior é matemática, não programação/eletrônica?
26  International / Portugues / [tuto] Corrigir tradução da opção "cortar" na IDE do Arduino 1.0.5 em pt-br on: July 16, 2013, 02:36:44 pm
Galera, quem usa a IDE em português deve ter reparado que clicando com botão direito aparece duas vezes a opção "copiar", sendo que uma corresponde a função copiar.
 já está confirmado a correção na próxima release, mas para quem usa diariamente a IDE e quer uma solução imediata aí vai:

Primeiramente, certifique-se de ter o winrar ou semelhante instalado.

- Abra a pasta "...\Arduino-1.0.x\lib"
- Duplo clique no arquivo "pde.jar (ou botão direito -> abrir com)
- Opção "Selecionar um programa em uma lista.." e a opção para abrir com o winrar (não esqueça de desmarcar para não abrir padrão com o winrar)
- Na janela que abre, selecione o arquivo "processing/app/Resources_pt_br.properties"
- Certifique-se que a IDE do Arduino está fechada
- Duplo clique, abra o arquivo com o wordpad
- Aperte "ctrl+F" e digite "copiar" e clique em "localizar próxima"
- Aí está a string em questão, modifique-a para "cortar" ou "recortar", salve, feche, e confirme a atualização do arquivo pelo winrar.

Pronto!
27  International / Portugues / Re: Motor DC+ Driver Ponte H - Motor não tem força on: May 24, 2013, 07:56:46 am
você não tem uma fonte de parede só para testar (tipo de notebook por exemplo)? ou uma bateria de maior corrente, 2000mA.h por exemplo? Muitas vezes consideramos a tensão e esquecemos da corrente do circuito que é crucial para o funcionamento.
28  International / Portugues / Re: Função desse resistor. on: April 11, 2013, 12:55:52 pm
Ruídos amigo.

Normalmente dizemos que temos entradas/saídas de alta e baixa impedância. Quando maior a impedância(resistência), mais suscetível a ruídos externos é o circuito.
No caso do Arduino, quando está em modo entrada e não possui um resistor pull up (ou pull down), a impedância da entrada é tão grande que pode-se considerar que o circuito está aberto ou no caso, não há corrente.

Tente fazer o mesmo exercício mas com um resistor maior que 300K se possuir. Você verá que continuará com esse comportamento aleatório, mas em menor intensidade, talvez dependendo do seu ambiente nem aparece ruído.

Pesquise sobre tristate (na wikipedia mesmo pode ser) se quiser se aprofundar melhor de como funciona este tipo de entrada.
29  International / Portugues / Re: uma entrada e duas saidas on: April 11, 2013, 11:39:52 am
BC337..., até mesmo da família TIP, não é relevante neste caso, apenas certifique-se de que o transistor é NPN
30  International / Portugues / Re: Função desse resistor. on: April 11, 2013, 11:37:11 am
Quote
Ficou uma duvida...Como que sem esse resistor a leitura iria variar?
ruído.
Faça o exercício:

Code:
void setup()
{
Serial.begin(9600);
}

void loop()
{
Serial.print("leitura A0: ")
Serial.println(analogRead(A0),DEC);
delay(500);
}

Teste com um resistor 10K entre o A0 e o 5V, e depois teste sem. Encoste e tire o dedo na placa do Arduino nos dois casos e compare os resultados.
Pages: 1 [2] 3 4 ... 16