Bom dia a todos

Estou tentando simular o serial do Arduino (Proteus) com o Virtual Terminal. Porém ao inserí-lo no circuito em conjunto com COMPIM (Soquete Serial no Proteus) mais a lógica "DigitalReadSerial" já existente no arduino, me aparece o seguinte mensagem "Logic contention (s) detected on net IO1.

Se eu desligo este terminal do Virtual ele não dá o erro, porém não vai funcionar.

Alguém tem esse problema?

Muito Obrigado a todos

Leonardo Egidio

Exibições: 8502

Responder esta

Respostas a este tópico

Bom dia Leonardo,

Claro que sim amigo, todas as postagens minhas aqui (Pelo menos as minhas, mas acredito a de todos) são para uso e abuso das mesmas, esse é, e deve ser o espirito deste, e de todos os fóruns creio, sinta-se a vontade.

Abs.

Carlos,

Fiz o arquivo no Proteus e inseri o código abaixo.

Porém, os estados dos relés estão aparecendo caracteres estranhos no Virtual Terminal. Será que pode ser algum BUG no Proteus?

Segue o código e o arquivo do Proteus:

int BT2 = 2; //botão 2
int BT3 = 3; //botão 3
int BT4 = 4; //botão 4
int BT5 = 5; //botão 5
int BT6 = 6; //botão 6
int BT7 = 7; //botão 7
int BT8 = 8; //botão 8
int BT9 = 9; //botão 9
int RL10 = 10; //relé 10
int RL11 = 11; //relé 11
int RL12 = 12; //relé 12
int RL13 = 13; //relé 13
int RL14 = 14; //relé 14
int RL15 = 15; //relé 15
int RL16 = 16; //relé 16
int RL17 = 17; //relé 17

//Estado dos botões
int EstadoBT2 = 0;
int EstadoBT3 = 0;
int EstadoBT4 = 0;
int EstadoBT5 = 0;
int EstadoBT6 = 0;
int EstadoBT7 = 0;
int EstadoBT8 = 0;
int EstadoBT9 = 0;


void setup() {
//Comunicação Serial
Serial.begin(9600);

// inicializa as entradas:
pinMode(BT2, INPUT);
pinMode(BT3, INPUT);
pinMode(BT4, INPUT);
pinMode(BT5, INPUT);
pinMode(BT6, INPUT);
pinMode(BT7, INPUT);
pinMode(BT8, INPUT);
pinMode(BT9, INPUT);

// inicializa as saidas:
pinMode(RL10, OUTPUT);
pinMode(RL11, OUTPUT);
pinMode(RL12, OUTPUT);
pinMode(RL13, OUTPUT);
pinMode(RL14, OUTPUT);
pinMode(RL15, OUTPUT);
pinMode(RL16, OUTPUT);
pinMode(RL17, OUTPUT);
}

void loop(){
// le valor botao:
EstadoBT2 = digitalRead (BT2);
EstadoBT3 = digitalRead (BT3);
EstadoBT4 = digitalRead (BT4);
EstadoBT5 = digitalRead (BT5);
EstadoBT6 = digitalRead (BT6);
EstadoBT7 = digitalRead (BT7);
EstadoBT8 = digitalRead (BT8);
EstadoBT9 = digitalRead (BT9);


// verifica se botao pressionado
// verifica se botao esta estado alto:
if (EstadoBT2 == HIGH) {
// liga rele e led:
digitalWrite(RL10, HIGH);
Serial.print("RL10 Ligado");
}
else {
// desliga rele e led:
digitalWrite(RL10, LOW);

if (EstadoBT3 == HIGH) {
// liga rele e led:
digitalWrite(RL11, HIGH);
Serial.print("RL11 Ligado");
}
else {
//desliga rele e led:
digitalWrite(RL11, LOW);
}

if (EstadoBT4 == HIGH) {
// liga rele e led:
digitalWrite(RL12, HIGH);
Serial.print("RL12 Ligado");
}
else {
//desliga rele e led:
digitalWrite(RL12, LOW);
}

if (EstadoBT5 == HIGH) {
// liga rele e led:
digitalWrite(RL13, HIGH);
Serial.print("RL13 Ligado");
}
else {
//desliga rele e led:
digitalWrite(RL13, LOW);
}
if (EstadoBT6 == HIGH) {
// liga rele e led:
digitalWrite(RL14, HIGH);
Serial.print("RL14 Ligado");
}
else {
//desliga rele e led:
digitalWrite(RL14, LOW);
}
if (EstadoBT7 == HIGH) {
// liga rele e led:
digitalWrite(RL15, HIGH);
Serial.print("RL15 Ligado");
}
else {
//desliga rele e led:
digitalWrite(RL15, LOW);
}
if (EstadoBT8 == HIGH) {
// liga rele e led:
digitalWrite(RL16, HIGH);
Serial.print("RL16 Ligado");
}
else {
//desliga rele e led:
digitalWrite(RL16, LOW);
}
if (EstadoBT9 == HIGH) {
// liga rele e led:
digitalWrite(RL17, HIGH);
Serial.print("RL17 Ligado");
}
else {
//desliga rele e led:
digitalWrite(RL17, LOW);
}

}
}

Anexos

Oi Leo,

Não tive muito tempo hoje então testei em outro programinha que tenho aqui, acho que a coisa é simples, use em vez de print, println, isso faz com que exista uma quebra de linha, se não pode ser embaralhado, e eu daria depois de cada print um delay, fica a seu critério quanto para visualizar melhor, pode usar a tentativa e erro.

Veja o link aqui do vídeo https://www.youtube.com/watch?v=FsBGniUxFQI&feature=youtu.be

Usei um delay de 5000 milissegundos para ,mostrar melhor no vídeo, mas acho que com 1000 na pratica ficara bom, vou colar de qualquer maneira no pastebin com as modificações, testa ai. http://pastebin.com/PukKrdtS

Abs.

Aproveitei que sobrou um tempo aqui e simulei no Proteus apenas com um botão, mas suficiente para te mostrar a diferença do print, println e delay com o virtual monitor ou no serial monitor do Arduino.

Veja o vídeo. https://www.youtube.com/watch?v=o9aWNCDhQMQ&feature=youtu.be

Abs.

Olá,

Fora a maneira mostrada pelo Carlos, existe pelo menos outra, durante a simulação clique com o botão direito do mouse sobre o virtual terminal e clique sobre a última opção: Virtual Terminal.

Pronto, a janela do terminal será aberta novamente.

A figura mostra mostra a operação de forma fácil e também servirá para os outros.

Abraço.

No meu proteus não apareceu a opção de Virtual Terminal com o botão direito, mas mesmo assim muito obrigado pela ajuda.

Abraços

Leo,

Hoje tive tempo de pegar o arquivo que você me enviou, segue o vídeo, e o arquivo modificado, aqui funcionou sem problemas conforme o vídeo mostra.

Tente por ai e avise.

https://www.youtube.com/watch?v=992FopxI_x4&feature=youtu.be

Abraço!

Segue o arquivo, veja se funciona ai.

Abs.

Anexos

Carlos bom dia

Descobri o problema!!!

Como o meu Proteus é uma cópia "meio doida", os arquivos.hex inseridos nele dá pau no virtual terminal, porém o mesmo programa colocado no arduino, funciona normal...

Percebi isto quando peguei seu ultimo arquivo (Leonardo_LDG_corrigido Project.pdsprj, 32 KB), testei com sua lógica default e funcionou normal. Foi só eu colocar o arquivo .hex que deu erro.

Estarei colocando o tópico como resolvido, ok?

Muito Obrigado a todos que colaboraram de alguma forma para engrandecer cada vez mais este canal.

Em especial ao Carlos kwiek que mesmo de noite estava "queimando miolos" pra descobrir o que aconteceu!!!

A Comunidade LDG está de parabéns

Grande Abraço

Obrigado Leo,

Estamos todos aqui para aprender e ensinar um do outro, e temos em comum essa paixão que nos faz perder noites de sono, mas a recompensa é gratificante.

Grande abraço!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço