LusoRobótica - Robótica em Português
Sistemas específicos => Arduino / AVR => Tópico iniciado por: buu em 14 de Novembro de 2010, 23:17
-
Estou a fazer um circuito para detectar o sinal de 4 fontes de video e o arduino vai escolher a melhor fonte e vai deixar passar o melhor sinal para a saida. Até aqui tudo mto bem e simples, vai ter (já tem ) um LCD para saber a qualidade do sinal de cada fonte, (agora só tenho 2 fontes para não complicar muito)
O esquema é mto parecido com este, apenas troquei as resistencias para 75 ohm para o video, e nas entradas meti mais dois condensadores ceramicos de 0.47uf e 2 resistencias de 100k em cada entrada de video. O resto está tudo igual.
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg51.imageshack.us%2Fimg51%2F8807%2Fescrd.jpg&hash=7e9a18dd513de727778904ddd55c608cee49ccf7)
O JU1 esta ligado ao intput 9 do arduino. (GND - GND arduino)
A minha placa:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg189.imageshack.us%2Fimg189%2F1985%2Fboardnp.jpg&hash=79014e789a564b3404632ba926689c620b4b3ba2)
Agora o meu problema, usado o digitalWrite consigo ligar uma fonte mais não consigo trocar entre elas, o codigo que tenho neste momento é isto (parcial):
int MUXSelect_1 = 8;
pinMode(MUXSelect_1, OUTPUT);
static void MUX(void){
if (rssi_1 <= 85) {
digitalWrite(MUXSelect_1, HIGH);
}
else {
digitalWrite(MUXSelect_1, LOW);
}
Para valores inferiores a 85% o arduino deve mudar o canal do max3414, só que eu só estou a conseguir ver uma fonte de video, sei qe isto é relacionado com esta tabela, mas já tentei varias opções e não consigo fazer a comutação entre as duas fontes de video
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg337.imageshack.us%2Fimg337%2F3078%2Ftabelacc.jpg&hash=94b2ff0148f0614731916a0fd1aa78b2c3653ff5)
Pin out do MAX4314
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg340.imageshack.us%2Fimg340%2F5839%2F28653865.jpg&hash=6bad1820e52cbc3ef4082f0a379981c4ac0a327d)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg99.imageshack.us%2Fimg99%2F9499%2Fpiny.jpg&hash=aa036fb09f41fb6c00ab1abb08eee21613a6a53b)
http://datasheets.maxim-ic.com/en/ds/MAX4310-MAX4315.pdf (http://datasheets.maxim-ic.com/en/ds/MAX4310-MAX4315.pdf)
-
Estás a usar o 4313 ou o 4311/14 ?
É que os últimos têem dois pinos de endereçamento, e na tua placa só tens um pino ligado. Se o outro pino tiver internamente um pull-up ou pull-down, andas sempre no canal 0 e 2 ou 1 e 3.
-
Estou a usar o 4314, bolas onde é que viste isso?? :( eu cheguei lá por erro, mas como vi sempre usarem o pino 1 para fazer a comutação...(mas era sempre o 4310/13)
Depois de muitas tentativa, se ligar o pino 1 a massa vai ligar a entrada do pino 7, se ligar o pino 1,2 a massa vai ligar a entrada do pino 5.
Afinal nem tudo estava mal, agora no programa a abordagem esta correcta? posso controlar os 2 pinos do 4314 atraves de 2 saidas digitais do arduino, como esta no meu codigo? ou tenho de usar bitshift?
-
A explicação está nas imagens que tu aí puseste ;D
Sim, podes controlar por dois pinos digitais do teu micro.
O melhor método para ligar/desligar pinos, é fazer OR para ligar e AND para desligar. Isto por causa do método de escrita das portas. Confirma no datasheet do micro usado.
-
Com digitalWrite é só fazer HIGH e LOW não precisa de se preocupar com mais nada, mas o datasheet tem tudo, deixar um pino de selecção a flutuar é pedir problemas.