Algumas Dúvidas Rápidas

Mortis:
Isso é porque não és novato!! lol

Não... apenas porque bluetooth gasta mais energia do que seria desejável para um robot. Sim, é muito bonito e giro controlar com o telemóvel, mas em termos de eficiência não é ideal. Apenas por isso.

AlxDroidDev:
Veja bem: cada pino do Arduino tem um limite de corrente de 40mA.

ISTO ESTÁ ERRADO!!
E pior, continua a ser perpetuado como correcto por toda a gente aqui no fórum.

O limite de corrente de 40mA é o limite antes da destrucão do pino (Absolute Maximum Ratings). Tanto é que se leres um pouco mais abaixo no datasheet do chip vês que cada porto apenas pode fornecer ou receber cerca de 100mA. Bate certo que um porto de 8 bits apenas consiga fornecer 100 mA e no entanto cada pino pode fornecer 40???

Logo ao calcular resistências ou correntes nunca se deve utilizar esses valores do quadro Absolute Maximum Ratings. Mas porque a maior parte das pessoas não quer mergulhar no datasheet usa esse como se fosse um valor seguro.

alguém me ajuda com o 74HC595...
eu não consigo entender ele, já li milhões de demonstrações etc... achei muito confuso.
queria por exemplo mandar sinal para a entrada Q1 dele, como deveria fazer? e se fosse Q2?
e da pra eu trabalhar com if? tipo "if a entrada Q1 está High" então fzer isso..

vlw galera!

Primeiro tens de ler o que está no 595... e só depois podes usar um if.

Já viste a funcão ShiftIn?

bubulindo:
Primeiro tens de ler o que está no 595... e só depois podes usar um if.

Já viste a funcão ShiftIn?

não, vou ver o datasheet dele todo... mas consegui uma library chamada SniftOutMega, muito boa, jah que posso refeir diretamente a uma das portas eu declaro o nome de um 595
ShiftOutMega mega(latchPin, dataPin, clockPin, qtdRegistradores); //Inicia a biblioteca passando os parametros de uso.

e nos voids posso utilizar
mega.shiftWrite(1, HIGH);
bem simples...

o problema está sendo a referencia, por exemplo, colocar no inicio do programa em quais pinos estão o LCD e o motor.attach(?????) qual pino está o motor...
mas para acender LED ele é perfeito, problema mesmo é que não acho nada sobre ele na internet...

Solbre o 74h + LCD, não comparei os datasheets para ver o que muda entre os 74h além do número de portas, mas eu tenho guardado os links abaixo para usar em projetos futuros (hoje o máximo que tenho tempo de fazer é dar umas olhadas por aqui, e olhe lá rs)

Algumas Dúvidas Rápidas esta se tornando muitas dúvidas rs

Mortis:
Solbre o 74h + LCD, não comparei os datasheets para ver o que muda entre os 74h além do número de portas, mas eu tenho guardado os links abaixo para usar em projetos futuros (hoje o máximo que tenho tempo de fazer é dar umas olhadas por aqui, e olhe lá rs)
http://www.instructables.com/id/LCD-Shifter-for-Arduino/
Arduino: 構想100年
3guys1laser.com

Algumas Dúvidas Rápidas esta se tornando muitas dúvidas rs

hahaaha, vou dar uma olhada!! obrigado =).. acabou virando um tópico pessoal isso sim hahha no inicio eram algumas dúvidas e continuam sendo =) Kkkk

não da certo de jeito nenhum no Proteus =(

joneco:
não da certo de jeito nenhum no Proteus =(

Infelizmente no trabalho eu não posso instalar o Proteus, se você quiser anexar o que tens eu posso tentar abrir e testar a noite, ou no final de semana (mas acho que até lá descobriste o problema).

cara tentei usar essa conexão:

p código vem duma library de i2c para lcd...

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(32,16,2);  // set the LCD address to 0x20 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd 
 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.print("Hello, world!");
}

void loop()
{
}

Fala ai joneco,

Qual a versão dessa lib que você esta usando?

Numa pesquisa rápida vi o caso abaixo:
"Quando retornei para o Arduino 022 o LCD respondeu ao programa Hello Word e agora todo o projeto esta funcionando."

Existem libs que não funcionam com versões mais recentes da IDE. Veja aqui: http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/

Ola.
E claro que isso nunca vai funcionar :grin: porque motivo tens os pinos A0 A1 e A2 ligados aos pinos de controlo do LCD.Sabes para que servem esses pinos?
Servem para dares o endereço ao Port Expander.
Para lhe construires o endereço ligas esses pinos ao GND ou ao VCC para construires o endereço.Ve no datasheet como

Olha para a pagina 2

LiquidCrystal_I2C lcd(32,16,2);  // set the LCD address to 0x20 for a 16 chars and 2 line display

Esse endereço entra aqui como primeiro parametro mas tambem aqui colocas 0x32 o que nao é correcto.
Depois tambem te faltam os Pull-ups no BUS I2C.
Quando corregires isto tudo inda resta uma possivel falha que recai sobre a lib.Existe uma versao a rodar que foi alterada pelos chinocas para umas placas que eles vendem no ebaye trocaram as macros dos pinos para lhes facilitar o desenho da placa(fizeram me perder umas horas...)
Apos trocar uns mails com o autor da lib oficial descobri que afinal eu tinha uma dessas libs instalada e ai estavam os meus problemas.O autor original Mario confirmou me tudo isto e que muitos utilizadores teem este problema.
Para quem quiser confirmar se usa a lib correta aqui fica o mail trocado comigo e com o autor original onde ele explica as diferenças da lib.

Hi Hugo,

The only way your display can work is when you are NOT using my library but
a (copy of my) library that was modified by somebody else to work with your
display.

I know a Chinese company called DFrobot who took my library and modified
(and removed my name!) it so it would work with their PCB. I guess that's
the library you are using.

I'll show you some differences between the libraries that explain why it
works with the other connections. There are other differences, but the ones
below are related to the different connections.

MY FILES
DFrobot FILES

LiquidCrystal_I2C.h
LiquidCrystal_I2C.h

#define LCD_NOBACKLIGHT 0x80
#define LCD_NOBACKLIGHT 0x00

#define En B00010000 // Enable bit
#define En B00000100 // Enable bit

#define Rw B00100000 // Read/Write bit
#define Rw B00000010 // Read/Write bit

#define Rs B01000000 // Register select bit
#define Rs B00000001 // Register select bit

LiquidCrystal_I2C.cpp
LiquidCrystal_I2C.cpp

void LiquidCrystal_I2C::send(uint8_t value, uint8_t mode) { void
LiquidCrystal_I2C::send(uint8_t value, uint8_t mode) {

uint8_t highnib=value>>4;
uint8_t highnib=value&0xf0;

uint8_t lownib=value & 0x0F;
uint8_t lownib=(value<<4)&0xf0;

write4bits((highnib)|mode);
write4bits((highnib)|mode);

write4bits((lownib)|mode);
write4bits((lownib)|mode);

}
}

Look at the library you are using. Your content of these files MUST be
different than my files otherwise your display can not work.

In fact the pin-out is not really that different, The only difference is
that I used the low nibble for data and the high nibble for control lines.

The Chinese do it the other way around. That's all. I think they choose for
that option to simplify their PCB design.

Regards,

Mario

Putz, isso me escapou rs

E olha que olhei os esquemas neste site =S http://ardugonic.blogspot.com.br/

HugoPT:
Existe uma versao a rodar que foi alterada pelos chinocas para umas placas que eles vendem no ebaye trocaram as macros dos pinos para lhes facilitar o desenho da placa(fizeram me perder umas horas...)

Valeu HugoPT, assim nos salva umas horas :wink:

Hugo,
uma parte fica escrito MY FILES
DFrobot FILES embaixo um código esse código é o original? ou os endereços que são corretos que foram mudados?

Mortis,
eu já usei o esquema desse site no proteus e não foi O_o

A explicaçao e a seguinte:

MY FILES
DFrobot FILES

 

LiquidCrystal_I2C.h
LiquidCrystal_I2C.h

#define LCD_NOBACKLIGHT 0x80 //Este é o original do autor
#define LCD_NOBACKLIGHT 0x00 //Este é a versao dos chinocas

#define En B00010000  // Enable bit -->Este é o original do autor
#define En B00000100  // Enable bit -->Este é a versao dos chinocas

#define Rw B00100000  // Read/Write bit --> Este é o original do autor
#define Rw B00000010  // Read/Write bit -->Este é a versao dos chinocas

#define Rs B01000000  // Register select bit --> Este é o original do autor
#define Rs B00000001  // Register select bi[/quote] -->Este é a versao dos chinocas

Curiosamente no meu caso eu tropecei numa lib destas com uma board que comprei no ebay.A board funciona só que quando necessitei de usar um PCF em breadboard usei o esquema original nao funcionou devido aos pinos serem trocados.
Ora como a dos chinocas funcionava e na breadboard nao suspeitei de imensas coisas codigo ligaçoes e quando esgotei tudo comparei as linhas de controlo do lcd usando um Logic Analizer e descobri que estavam diferentes.Nunca suspeitei da lib e entao contactei o autor original que me esclareceu sobre eu poder ter uma versao alterada dos chinocas.Defacto tinha ...

joneco:
eu já usei o esquema desse site no proteus e não foi O_o

Tentarei fazer uns testes no final de semana e te digo o que encontrei

HugoPT:
A explicaçao e a seguinte:
(...)

HugoPT,

Eu tenho uns "chinocas" na gaveta, verificarei quais ligações eles tem!

Muito obrigado!

HugoPT:
A explicaçao e a seguinte:

MY FILES

DFrobot FILES

LiquidCrystal_I2C.h
LiquidCrystal_I2C.h

#define LCD_NOBACKLIGHT 0x80 //Este é o original do autor
#define LCD_NOBACKLIGHT 0x00 //Este é a versao dos chinocas

#define En B00010000  // Enable bit -->Este é o original do autor
#define En B00000100  // Enable bit -->Este é a versao dos chinocas

#define Rw B00100000  // Read/Write bit --> Este é o original do autor
#define Rw B00000010  // Read/Write bit -->Este é a versao dos chinocas

#define Rs B01000000  // Register select bit --> Este é o original do autor
#define Rs B00000001  // Register select bi[/quote] -->Este é a versao dos chinocas





Curiosamente no meu caso eu tropecei numa lib destas com uma board que comprei no ebay.A board funciona só que quando necessitei de usar um PCF em breadboard usei o esquema original nao funcionou devido aos pinos serem trocados.
Ora como a dos chinocas funcionava e na breadboard nao suspeitei de imensas coisas codigo ligaçoes e quando esgotei tudo comparei as linhas de controlo do lcd usando um Logic Analizer e descobri que estavam diferentes.Nunca suspeitei da lib e entao contactei o autor original que me esclareceu sobre eu poder ter uma versao alterada dos chinocas.Defacto tinha ...

a sim, o meu é original então ^^, ta tenso não arranjei um jeito de funcionar esse maldito lcd =(. mas coisas que só precisa de high tipo led ou motor dc, vai tenho até uma lib bem maneiro chamada ShiftOutMega

ta tenso não arranjei um jeito de funcionar esse maldito lcd smiley-cry

Ja corregiste o esquema?
Se nao fizeres isso isso nunca irá funcionar.Monta de acordo com este esquema que ira funcionar.

Fala ai HupoPT,

No proteus não tem os pinos 15 e 16 ^^, mas tuas informações foram muito valiosas!

Então Joneco,

Anexo o esquema do proteus e a lib, mas eu usei o ATMega, no lugar do componente UnoR3.

Abaixo o código:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x20,16,2);  // set the LCD address to 0x38 for a 16 chars and 2 line display

void setup()
{
  Serial.begin(9600);
  lcd.init(); 
  lcd.print("Hello, world!");
}
int i=0;
void loop()
{
  lcd.setCursor(0,1);
  lcd.print(i);
  lcd.noBacklight();
  delay(100);
  lcd.backlight();
  i++;
}

Meu ponto de partida foi link abaixo:

Então, parte dos créditos é dele :wink:

edit: Não reparem o ammeter, o transistor e a lampada, eu estava fazendo outro teste e esqueci de apagar rs

I2C-Lcd.zip (60.1 KB)

LiquidCrystal_I2C.zip (1.19 MB)

Mortis:
Fala ai HupoPT,

No proteus não tem os pinos 15 e 16 ^^, mas tuas informações foram muito valiosas!

Então Joneco,

Anexo o esquema do proteus e a lib, mas eu usei o ATMega, no lugar do componente UnoR3.

Abaixo o código:

#include <Wire.h> 

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x20,16,2);  // set the LCD address to 0x38 for a 16 chars and 2 line display

void setup()
{
 Serial.begin(9600);
 lcd.init();
 lcd.print("Hello, world!");
}
int i=0;
void loop()
{
 lcd.setCursor(0,1);
 lcd.print(i);
 lcd.noBacklight();
 delay(100);
 lcd.backlight();
 i++;
}




Meu ponto de partida foi link abaixo:
http://skyduino.wordpress.com/2011/06/07/librairie-arduino-i2c-pour-le-pcf8574/
Então, parte dos créditos é dele ;)


edit: Não reparem o ammeter, o transistor e a lampada, eu estava fazendo outro teste e esqueci de apagar rs

HugoPT:

ta tenso não arranjei um jeito de funcionar esse maldito lcd smiley-cry

Ja corregiste o esquema?
Se nao fizeres isso isso nunca irá funcionar.Monta de acordo com este esquema que ira funcionar.

ALELUIA!! hahaha =), gente muito obrigado!!! os 2 deram certo =), mas que beleza ^^

Que bom! :wink: