Para fazer o meu arduino "caseiro" se conectar com o PC por porta serial, porém nada, não funciona da forma correta. Eu consigo ler, tanto que no atmega 328 tem gravado um código que lê um potênciometro e através disso controla o motor de passo. No código dá para ver os valores do potenciometro na tela serial. Mas só isso.
Se eu consigo receber, acredito que 50% da coisa funcionou da forma correta, porém os outros 50% alguém sabe o que pode ser?
Eu já tentei alimentar com 3 volts, 5... nada.
No esquema o cara usa capacitores de disco, os meus são de poliester, quadradinhos azuis. Tem o mesmo valor, porém só muda o material, será que é isso?
Eu consigo ler, tanto que no atmega 328 tem gravado um código que lê um potênciometro e através disso controla o motor de passo. No código dá para ver os valores do potenciômetro na tela serial. Mas só isso.
Ok e como sabes que nao estas a enviar?
O teu código no arduino faz algo ao receber bytes da serial que tu envias do PC?
coloca ai o esquema que seguiste.
Para testares isso faz upload deste skeetch e testa.
E como um eco tu escreves um digito no terminal no pc e ele vai ao arduino e ele devolve te o mesmo caracter.
Assim podes testar o teu circuito.
Hugo, muito obrigado pela respota. Eu i que não está funcionando pois estou tentando entre outros códigos enviar o blink para o atmega. Eu já testei 3 atmegas com o bootloader do Arduino e não funciona. Eu estou começando a achar que pode ser o max232. Os esquemas que vejo na web usam entre outros, o max232A o meu é o max232N.Será que pode ser isso?
Do mais, essa montagem foi a que mais me aproximou do sucesso porém eu vou refazer. Dessa vez vou tentar usar capacitores eletroliticos. Vou começar do valor 0,1 uf e ir subindo até 10 uf e ver no que dá.
Se alguém aqui puder dar uma dica do que pode ser!
Do mais, eu posto o log das tentativas aqui hehehe.
HugoPT:
Confirma se tens as tuas ligações como este esquema.Eu uso muitas vezes o max232 e não da problemas.
Então, Hugo, eu tô começando a pensar que meu max232 deve estar com problemas. Eu fiz praticamente todos esquemas que achei na web para ligar o mesmo com o atmega e nada. Fiz até o esquema que mostra no datasheet. Não funcionou. Teste vários capacitores de 0.1 até 1 uf... A única coisa que realmente faltou foi tentar com capacitor cerâmico de 0,1 uf (Esquema no site do adafruit), eu não tenho desses, porém no datasheet diz que o meu max (MAX232N - No caso, de acordo com minhas pesquisas ele deveria funcionar como o 232 normal, por isso dos capacitores de 1 uf) deve usar 1 uf.
Mas enfim, deve ser problema nele mesmo pois depois de tantas tentativas e nenhum resultado. Como eu disse, eu até consigo conectar, ler dados do potênciometro e tals, mas nada mais do que isso.
Lembrando que eu testei várias pinagens no cabo rs232 também.
Quais os pinos que estas a usar do lado TTL e do lado RS232?
Ele internamente tem dois drivers, tu tens de usar ambos devido a direcção do sinal TTL para RS232 e RS232 para TTL.
Será que tens os pinos correctos?
Se como dizes já fizeste vários esquemas o importante era talvez então testares com outro no lugar desse.
Olá pessoal, desculpem a demora, eu estava testando aqui. Então, Hugo, eu acredito que estou usando os dois drivers sim. no caso usando uma saída e cada um, igual ao esquema que você passou na resposta antiga. No momento eu estou usando esse esquema e parece que tive uma melhora de 10% no meu problema. O esquema (Só estou usando o esquema do max232 pois do arduino não preciso):
Como eu disse, meus problemas acredito que diminuiram uns 10% hehehe, agora ao invés do erro sync, estou tendo esse erro:
avrdude: verification error, first mismatch at byte 0x0000
0x0c != 0x62
avrdude: verification error; content mismatch
Estou pesquisando para ver o que pode ser. Alguém tem alguma dica?
Bubulindo, eu estou alimentando o max com a saída de energia do atmega, pode isso ou tem que ter uma alimentação externa para o max com os gnd em comum?
Deu trabalho, mas valeu a pena. Testei ele com o velho Blink, com o Knock usando um piezo e com a leitura de um potênciometro. Também testei com esse código:
} else if (sensorValue < 200){
digitalWrite(led, LOW);
}
}
Tudo CERTINHO. Nenhum problema.
Eu consegui seguindo as dicas do blog que eu postei acima. Não sei o que era que esava ando errado, mas consegui.
Outra coisa, o problema que estava dando:
avrdude: verification error, first mismatch at byte 0x0000 0x0c != 0x62 avrdude: verification error; content mismatch
Eu resolvi mudando o atmega, como eu tenho 3, eu usei um outro e funcionou. De acordo com as minhas pesqusas sobre esse problema, parece que aquele atmega pifou.
Pessoal, deixa só eu atualizar uma coisa aqui, não é flood não mas é importante para quem está tendo problemas. No meu esquema, agora de pouco quando eu fui passar para uma plaquinha PCB, eu perceb que um capacitor estava invertido. Não tenho fotos do meu circuito aqui no momento, mas veja na circuito do cara: