Voo Virtual
Olá, seja bem-vindo(a) ao Voo Virtual. Caso ainda não seja membro da nossa comunidade, registre-se, para que possa participar ativamente e ter acesso a todos os conteúdos do site.
Por favor leia as regras do fórum aqui antes de postar, para evitar advertências e suspensão.


Conexão dos avionicos (radios, controles e comandos) com Arduino

Página 2 de 2 Anterior  1, 2

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Joz em Sex 12 Dez 2014, 09:00

Alerial escreveu:Legal Joz, muito bom esse recurso, eu tentei testar uma chave liga desliga, e claro que não funcionou, pois mesmo fazendo o codigo ino, falta o python, esse eu crio ou compilo onde???????????? Abraços
O passo a passo e os links para download estão no site:
http://www.hangarxplane.com.br/projeto-x-plane-arduino/

O exemplo é apenas de "saída de dados". Para utilizar uma chave como entrada de dados, é necessário modificar o código do arduino e também do script Python. Pessoalmente, eu prefiro utilizar o arduino apenas para saída de dados. No meu projeto, para entrada de dados, utilizo:
01 Stargate 8
01 Stargate 12
01 Mjoy16
Mesmo desenvolvendo boa parte do painel com o arduino, concluí que essas placas teriam um ótimo custo/benefício no projeto.

Em qualquer loja xingling, você compra um joystick genérico de playstation por +/- 10 reais. Basta descascar e você terá 16 botões e 4 eixos para ligar chaves. Ou seja, é mais barato até mesmo que uma das chaves que você conecta na placa. Utilizar o Arduino para enviar um simples pressionar de teclas, é matar formiga com um tiro de canhão.
Então não se deve ligar chaves no arduino? Longe disso, se você desenvolver um FMC todo no arduino e no final envia apenas os parâmetros do voo, será uma ótima forma de aproveitar uma grande quantidade de botões sem consumir banda de comunicação com o simulador.

Mesmo assim, para fins didáticos, você quer ligar uma chave para comunica com o simulador, vamos lá:
Código:

// Define o pino 2 para conectarmos a chave:
int chave = 2;

// Inicializa o arduino:
void setup() {
  // Define a comunicacao serial com 9600 bits por segundo:
  Serial.begin(9600);
  // Atribui o pino 2 como entrada de dados digital:
  pinMode(chave, INPUT);
}

// O programa:
void loop() {
  // Le a informacao da chave:
  int posicaoChave = digitalRead(chave);
  // Envia a leitura via serial:
  Serial.println(posicaoChave );
  // espera de 1ms entre as leituras para dar estabilidade
  delay(1);        
}



Esse programa lê a posição da chave e envia a cada 1 milisegundo, "0" se a chave estiver na posição desligada ou "1" se estiver ligada.
Do outro lado, deve ter alguém escutando a porta da comunicação serial.
Se escutar "0" deve desligar alguma função. Se escutar "1" deve ligar alguma coisa.

Se estiver utilizando o X-Plane 10.3, isso já é 98% do programa pronto. Bastando apenas configurar no simulador o que esse comando vai fazer.
Caso esteja utilizando o PythonInterface, isso fica entre 50%.

Espero ter esclarecido alguns pontos, e informe que versão do X-Plane está utilizando.

Abraços

_________________
Josenildo
Especialista em Navegação Aérea
http://www.hangarxplane.com.br/
avatar
Joz
Coronel
Coronel

Masculino
Inscrito em : 23/10/2011
Mensagens : 1437
Reputação : 193
Idade : 38
Simulador preferido : X-Plane
Emprego/lazer : Especialista em Navegação Aérea
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Alerial em Sex 12 Dez 2014, 09:13

Grande Joz, já deu uma luz enorme no fim do tunel. Eu estou usando o XP 9.70, porque consegui emprestado, mas como há essa grande facilidade no X10, não vai ter jeito, vou ter que comprá-lo, pois assim não vou perder tempo me matando com o XP9, sendo que o XP10 já vai facilitar muito. Valeu mais uma vez.
Grato

Alerial
Capitão
Capitão

Masculino
Inscrito em : 11/11/2014
Mensagens : 106
Reputação : 1
Idade : 45
Simulador preferido : FSX, X-Plane
Emprego/lazer : Hidroponia, Aquaponia, pecuaria
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Joz em Sex 12 Dez 2014, 09:45

Não precisa correr pra comprar. Baixa o demo e atualiza.
Funciona tudo, com exceção de joysticks, que devido a limitação do demo, funciona apenas 20 minutos.

_________________
Josenildo
Especialista em Navegação Aérea
http://www.hangarxplane.com.br/
avatar
Joz
Coronel
Coronel

Masculino
Inscrito em : 23/10/2011
Mensagens : 1437
Reputação : 193
Idade : 38
Simulador preferido : X-Plane
Emprego/lazer : Especialista em Navegação Aérea
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Alerial em Sex 12 Dez 2014, 11:02

Nossa, 20 minutos....isso que é pressão..kkkk
Entendido Joz, vou atualizando aqui.
Abraços

Alerial
Capitão
Capitão

Masculino
Inscrito em : 11/11/2014
Mensagens : 106
Reputação : 1
Idade : 45
Simulador preferido : FSX, X-Plane
Emprego/lazer : Hidroponia, Aquaponia, pecuaria
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Mais um passo...

Mensagem por Alerial em Ter 16 Dez 2014, 17:14

Grande Joz, agora a coisa vai andar..rsrrs
Eu fiz um annunciator panel extraindo com a Uno, e tambem fiz um outro codigo para movimentar flaps e com indicador de posição, pela quantidade de botões e pinos usados daria para por tudo na mesma Uno, mas não estou sabendo juntar os codigos para que o mesmo funcione numa placa só.
Tem como juntar tudo num codigo só?????
Abraços

Alerial
Capitão
Capitão

Masculino
Inscrito em : 11/11/2014
Mensagens : 106
Reputação : 1
Idade : 45
Simulador preferido : FSX, X-Plane
Emprego/lazer : Hidroponia, Aquaponia, pecuaria
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Joz em Ter 16 Dez 2014, 17:37

Sim, pode colocar os programas dentro do loop principal ou criar funções para serem chamadas.
Basta ter um pouco de atenção nas declarações e inicialização das variáveis

_________________
Josenildo
Especialista em Navegação Aérea
http://www.hangarxplane.com.br/
avatar
Joz
Coronel
Coronel

Masculino
Inscrito em : 23/10/2011
Mensagens : 1437
Reputação : 193
Idade : 38
Simulador preferido : X-Plane
Emprego/lazer : Especialista em Navegação Aérea
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Alerial em Ter 16 Dez 2014, 18:12

mad mad mad mad mad mad mad
Vamos lá!!
Obrigado abraços

Alerial
Capitão
Capitão

Masculino
Inscrito em : 11/11/2014
Mensagens : 106
Reputação : 1
Idade : 45
Simulador preferido : FSX, X-Plane
Emprego/lazer : Hidroponia, Aquaponia, pecuaria
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Joz em Ter 16 Dez 2014, 18:16

Se não conseguir, posta o código pra gente juntar.

_________________
Josenildo
Especialista em Navegação Aérea
http://www.hangarxplane.com.br/
avatar
Joz
Coronel
Coronel

Masculino
Inscrito em : 23/10/2011
Mensagens : 1437
Reputação : 193
Idade : 38
Simulador preferido : X-Plane
Emprego/lazer : Especialista em Navegação Aérea
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Alerial em Ter 16 Dez 2014, 21:31

Beleza Joz, mas vou tentar até acabar com os restos dos cabelos.. rs

Alerial
Capitão
Capitão

Masculino
Inscrito em : 11/11/2014
Mensagens : 106
Reputação : 1
Idade : 45
Simulador preferido : FSX, X-Plane
Emprego/lazer : Hidroponia, Aquaponia, pecuaria
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Alerial em Qua 17 Dez 2014, 10:23

Joz, segue ai os dois codigos juntos, so que está dando erro na linha 126, separado eles funcionam perfeitamente, estes dois codigos são do JIM, mas adaptei para minha nescessidade.
Eu fui copiando e colando conforme as declarações, voids, etc.
Eu dei várias olhadas, mas acho que há chave de mais ou de menos.
Abraços



/*
This code is in the public domain
For use with "Link2fs_Multi"
Jimspage.co.nz
My thanks to the Guys that gave me snippets of code.
Attach LED's to pins 2,3 and 4 (thru resistors)
Push button switchs onto pins 8 and 9 (flaps up a bit, flaps down a bit)
This also checks the spare pins (10 upwards) for "keys" input except pin 13.

>>>> You must tick "*/
int AnunPinNo[9] = {2, 6, 7, 10, 11, 12};// the selected pins with LED's
char AnunIdent2[9] = {'F','J','K','N','V','H'};//Selected items in "Annunciators" in Multi
int AnunPinValNew[9] = {0,0,0,0,0,0,0,0,0};//Array for pin values (The new readings)
int AnunPinValOld[9] = {0,0,0,0,0,0,0,0,0};//Array for pin values (The old readings)
int count = 0; //for array reading
int counterTrigger = 0;// Used for triggering the flashing LED's
int counterTriggerOld = 0;
long counter = 1;
int AnunPinTot = 0;
int CodeIn;// used on all serial reads
int KpinNo;
int Koutpin;
String flaps;

String KoldpinStateSTR, KpinStateSTR, Kstringnewstate,Kstringoldstate;

void setup(){
Kstringoldstate = "111111111111111111111111111111111111111111111111111111111111111111111";

for (int KoutPin = 8; KoutPin < 20; KoutPin++)// Set's up all the input pins
{
pinMode(KoutPin, INPUT);
digitalWrite(KoutPin, HIGH);
}
//pinMode(2, OUTPUT); // Flaps are "not up" LED
pinMode(3, OUTPUT); // Flaps are down 1st position LED
pinMode(4, OUTPUT); // Flaps are down 2nd position LED
pinMode(5, OUTPUT); // Flaps are down 3nd position Led
http://Serial.begin(115200);

//void setup()
for (count=0;count<9;count++) {// we make all the Anun declarations at once
// Be careful with the above line.(Dont involve a pin that will have a switch on it ,, it can fry your pin or card)
pinMode(AnunPinNo[count], OUTPUT);
digitalWrite(AnunPinNo[count], LOW);
}
// pinMode(piezo, OUTPUT); // done the piezo seperately for clearer coding
// digitalWrite(piezo, LOW);
// pinMode(Anunbutton, INPUT); // Cancell button on Anunnciators
// digitalWrite(Anunbutton, HIGH);
Serial.begin(115200);
}

void loop() {
{KEYS();} //Check the "keys" section
if (Serial.available()) {
CodeIn = getChar();//get a character
if (CodeIn == '<') {LESSTHAN();}// The first identifier is "<"
}//end of serial check
}//end of void loop

char getChar()// Get a character from the serial buffer
{
while(Serial.available() == 0);// wait for data
return((char)Serial.read());// Thanks Doug
}

void LESSTHAN(){ // The first identifier was "<"
CodeIn = getChar(); // Get another character
switch(CodeIn) {// Now lets find what to do with it
case 'G'://Found the second identifier ("G" Flaps position)
flaps = "";
//flaps += getChar();
flaps += getChar();
flaps += getChar();
flaps += getChar();
int flapsInt = flaps.toInt(); // convert it to an integer (Thanks Phill)
//if (flapsInt > 0) {digitalWrite(2, HIGH);} else {digitalWrite(2, LOW);}
if (flapsInt > 10) {digitalWrite(3, HIGH);} else {digitalWrite(3, LOW);}
if (flapsInt > 20) {digitalWrite(4, HIGH);} else {digitalWrite(4, LOW);}
if (flapsInt > 40) {digitalWrite(5, HIGH);} else {digitalWrite(5, LOW);}
break;
}
}

void KEYS()
{
Kstringnewstate = "";
for (int KpinNo = 8; KpinNo < 20; KpinNo++){//check for inputs on pins 8 to 70
KpinStateSTR = String(digitalRead(KpinNo)); //if you change the 8 in the line above ,, also change the 8 in the line below
KoldpinStateSTR = String(Kstringoldstate.charAt(KpinNo - 8));
if (KpinStateSTR != KoldpinStateSTR)//yes it's different
{
if (KpinNo != 13){ //pin 13 is no good as an input, it can "flutter" unless set up correctly
if (KpinNo == 8 && KpinStateSTR == "0"){Serial.println ("C15");} //flap handle up a bit
if (KpinNo == 9 && KpinStateSTR == "0"){Serial.println ("C14");} //flap handle down a bit
if (KpinNo > 9){//now the keys bit
Serial.print ("D");
if (KpinNo < 10) Serial.print ("0");
Serial.print (KpinNo);
Serial.println (KpinStateSTR);
}//end of keys bit
}//end of its not pin 13
}//end of yes its different
Kstringnewstate += KpinStateSTR;
}//end of 'For' loop
Kstringoldstate = Kstringnewstate;
//}// end of "inputs" void

//void loop()
//{
{OTHER();}
{ANNUNBUTTON();}
if (Serial.available()) {
CodeIn = getChar();
if (CodeIn == '=') {EQUALS();}
if (CodeIn == '<') {LESSTHAN();}
if (CodeIn == '?') {QUESTION();}
if (CodeIn == '/') {SLASH();}
}
//}

char getChar()
{
while(Serial.available() == 0);
return((char)Serial.read());
}

void OTHER(){
// Normal "run" stuff in here
}

void EQUALS(){
CodeIn = getChar();
switch(CodeIn) {
case 'A':
//Do something
break;

case 'W':
//Do something
break;

case 'a':
//Do something
break;
//etc etc etc
}
}

void LESSTHAN(){ // The first identifier was "<"
//Do something (See void EQUALS)
}

void QUESTION(){ // The first identifier was "?"
//Do something (See void EQUALS)
}

void SLASH(){ // The first identifier was "/" (Annunciators)
CodeIn = getChar();
AnunPinTot = 0; // for turning OFF piezo after quick fault
for (count=0;count<9;count++) {
if (CodeIn == AnunIdent2[count]){
AnunPinValNew[count] = (getChar()- 48);
if (AnunPinValNew[count] == 1){
if (AnunPinValOld[count] < 1) {digitalWrite(AnunPinNo[count], HIGH);
// digitalWrite(piezo, HIGH);
AnunPinValOld[count] = AnunPinValNew[count];}}
if (AnunPinValNew[count] == 0){
if (AnunPinValOld[count] > 0) {digitalWrite(AnunPinNo[count], LOW);AnunPinValOld[count] = AnunPinValNew[count];
}}}
if (AnunPinValOld[count] < 2 ){// for turning OFF piezo after quick fault
AnunPinTot = (AnunPinTot + AnunPinValNew[count]);}
http://Serial.print(PinValNew[count]);
}
//if (AnunPinTot < 1) {digitalWrite(piezo, LOW);} // for turning OFF piezo after quick fault
}

void ANNUNBUTTON(){
counter = counter + 1;
if (counter < 50000){counterTrigger = 0;}else {counterTrigger = 1;}
if (counter > 100000) {counter = 1;}
// if (digitalRead(Anunbutton) == 0){
// digitalWrite(piezo, LOW);
for (count=0;count<9;count++) {
if (AnunPinValOld[count] == 1){AnunPinValOld[count] = 3;}
}
}
// if (counterTrigger != counterTriggerOld) {
// for (count=0;count<9;count++) {
// if (AnunPinValOld[count] == 3) {
// if (counterTrigger == 1){digitalWrite(AnunPinNo[count], HIGH);}
// if (counterTrigger == 0){digitalWrite(AnunPinNo[count], LOW);}
// }
// }
// counterTriggerOld = counterTrigger;
// }
//}









Alerial
Capitão
Capitão

Masculino
Inscrito em : 11/11/2014
Mensagens : 106
Reputação : 1
Idade : 45
Simulador preferido : FSX, X-Plane
Emprego/lazer : Hidroponia, Aquaponia, pecuaria
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Joz em Qua 17 Dez 2014, 11:48

No momento não posso conferir o código no arduino, mas dando uma olhada rápida, você tem duas funções "LESSTHAN()", a primeira tem código e a segunda está vazia. Ou seja, está desfazendo a função. Delete a segunda função.(linhas 150 a 152).
Deve estar acontecendo algum erro de sintaxe com as linhas 109 a 121 que seria o 2º VOID LOOP. Como você deixou comentado, pode ser que simplesmente as funções não sejam executadas. Você só pode ter um VOID LOOP por código, então teria que "mesclar" os dois num só. Delete o segundo VOID LOOP e substitua o primeiro com este código:
Código:

void loop(){
   {KEYS();} //Check the "keys" section
   {OTHER();}
   {ANNUNBUTTON();}
   if (Serial.available()) {
      CodeIn = getChar();
      if (CodeIn == '=') {EQUALS();}
      if (CodeIn == '<') {LESSTHAN();}
      if (CodeIn == '?') {QUESTION();}
      if (CodeIn == '/') {SLASH();}
   }
}

_________________
Josenildo
Especialista em Navegação Aérea
http://www.hangarxplane.com.br/
avatar
Joz
Coronel
Coronel

Masculino
Inscrito em : 23/10/2011
Mensagens : 1437
Reputação : 193
Idade : 38
Simulador preferido : X-Plane
Emprego/lazer : Especialista em Navegação Aérea
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Vitor Castro em Qua 17 Dez 2014, 11:49

Alerial, mostra fotos pra gente depois dos cockipits, acredito que a maioria deve estar curiosa rs Very Happy
avatar
Vitor Castro
Major
Major

Masculino
Inscrito em : 23/11/2014
Mensagens : 385
Reputação : 21
Idade : 32
Simulador preferido : X Plane 10
Emprego/lazer : Analista de Suporte(TI) estudante de Análise de Sistemas
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Alerial em Qua 17 Dez 2014, 12:56

Joz, segui as instruções, mas salvo algum erro meu, ainda deu erro....

Alerial
Capitão
Capitão

Masculino
Inscrito em : 11/11/2014
Mensagens : 106
Reputação : 1
Idade : 45
Simulador preferido : FSX, X-Plane
Emprego/lazer : Hidroponia, Aquaponia, pecuaria
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Alerial em Qua 17 Dez 2014, 13:54

happy happy aplauso aplauso happy happy aplauso aplauso happy happy aplauso aplauso happy happy aplauso aplauso

Grande Joz, fucei, refucei, fucei de novo e agora deu certo.
Do jeito que está o codigo ai em baixo ele acende o annunciator e indica por led as posições dos flaps.
Acho que agora a coisa tende a andar.
Vou montar o annunciator, e o comando do flap, e caso possa e seja util para alguem eu posso colocar os detalhes, como ligação, pinos, materiais, etc....

uma batalha foi vencida, agora vamos para a outra

Valeu Professor....

/*
This code is in the public domain
For use with "Link2fs_Multi"
Jimspage.co.nz
My thanks to the Guys that gave me snippets of code.
Attach LED's to pins 2,3 and 4 (thru resistors)
Push button switchs onto pins 8 and 9 (flaps up a bit, flaps down a bit)
This also checks the spare pins (10 upwards) for "keys" input except pin 13.

>>>> You must tick "*/
int AnunPinNo[9] = {2, 6, 7, 10, 11, 12};// the selected pins with LED's
char AnunIdent2[9] = {'F','J','K','N','V','H'};//Selected items in "Annunciators" in Multi
int AnunPinValNew[9] = {0,0,0,0,0,0,0,0,0};//Array for pin values (The new readings)
int AnunPinValOld[9] = {0,0,0,0,0,0,0,0,0};//Array for pin values (The old readings)
int count = 0; //for array reading
int counterTrigger = 0;// Used for triggering the flashing LED's
int counterTriggerOld = 0;
long counter = 1;
int AnunPinTot = 0;
int CodeIn;// used on all serial reads
int KpinNo;
int Koutpin;
String flaps;

String KoldpinStateSTR, KpinStateSTR, Kstringnewstate,Kstringoldstate;

void setup(){
Kstringoldstate = "111111111111111111111111111111111111111111111111111111111111111111111";

for (int KoutPin = 8; KoutPin < 20; KoutPin++)// Set's up all the input pins
{
pinMode(KoutPin, INPUT);
digitalWrite(KoutPin, HIGH);
}
pinMode(3, OUTPUT); // Flaps are down 1st position LED
pinMode(4, OUTPUT); // Flaps are down 2nd position LED
pinMode(5, OUTPUT); // Flaps are down 3nd position Led
http://Serial.begin(115200);

for (count=0;count<9;count++) {// we make all the Anun declarations at once
// Be careful with the above line.(Dont involve a pin that will have a switch on it ,, it can fry your pin or card)
pinMode(AnunPinNo[count], OUTPUT);
digitalWrite(AnunPinNo[count], LOW);
}

Serial.begin(115200);
}
void loop()
{
{KEYS();} //Check the "keys" section
// {OTHER();}
{ANNUNBUTTON();}
if (Serial.available()) {
CodeIn = getChar();
if (CodeIn == '=') {EQUALS();}
if (CodeIn == '<') {LESSTHAN();}
if (CodeIn == '?') {QUESTION();}
if (CodeIn == '/') {SLASH();}
}
}
char getChar()
{
while(Serial.available() == 0);
return((char)Serial.read());
}
void EQUALS(){
CodeIn = getChar();
switch(CodeIn) {
case 'A':
//Do something
break;

case 'W':
//Do something
break;

case 'a':
//Do something
break;
//etc etc etc
}
}
void QUESTION(){ // The first identifier was "?"
//Do something (See void EQUALS)
}

void SLASH(){ // The first identifier was "/" (Annunciators)
CodeIn = getChar();
AnunPinTot = 0; // for turning OFF piezo after quick fault
for (count=0;count<9;count++) {
if (CodeIn == AnunIdent2[count]){
AnunPinValNew[count] = (getChar()- 48);
if (AnunPinValNew[count] == 1){
if (AnunPinValOld[count] < 1) {digitalWrite(AnunPinNo[count], HIGH);
// digitalWrite(piezo, HIGH);
AnunPinValOld[count] = AnunPinValNew[count];}}
if (AnunPinValNew[count] == 0){
if (AnunPinValOld[count] > 0) {digitalWrite(AnunPinNo[count], LOW);AnunPinValOld[count] = AnunPinValNew[count];
}}}
if (AnunPinValOld[count] < 2 ){// for turning OFF piezo after quick fault
AnunPinTot = (AnunPinTot + AnunPinValNew[count]);}
http://Serial.print(PinValNew[count]);
}
//if (AnunPinTot < 1) {digitalWrite(piezo, LOW);} // for turning OFF piezo after quick fault
}

void ANNUNBUTTON(){
counter = counter + 1;
if (counter < 50000){counterTrigger = 0;}else {counterTrigger = 1;}
if (counter > 100000) {counter = 1;}
// if (digitalRead(Anunbutton) == 0){
// digitalWrite(piezo, LOW);
for (count=0;count<9;count++) {
if (AnunPinValOld[count] == 1){AnunPinValOld[count] = 3;}
}
}

void LESSTHAN()
{ // The first identifier was "<"
CodeIn = getChar(); // Get another character
switch(CodeIn) {// Now lets find what to do with it
case 'G'://Found the second identifier ("G" Flaps position)
flaps = "";
//flaps += getChar();
flaps += getChar();
flaps += getChar();
flaps += getChar();
int flapsInt = flaps.toInt(); // convert it to an integer (Thanks Phill)
//if (flapsInt > 0) {digitalWrite(2, HIGH);} else {digitalWrite(2, LOW);}
if (flapsInt > 10) {digitalWrite(3, HIGH);} else {digitalWrite(3, LOW);}
if (flapsInt > 20) {digitalWrite(4, HIGH);} else {digitalWrite(4, LOW);}
if (flapsInt > 40) {digitalWrite(5, HIGH);} else {digitalWrite(5, LOW);}
break;
}
}

void KEYS()
{
Kstringnewstate = "";
for (int KpinNo = 8; KpinNo < 20; KpinNo++){//check for inputs on pins 8 to 70
KpinStateSTR = String(digitalRead(KpinNo)); //if you change the 8 in the line above ,, also change the 8 in the line below
KoldpinStateSTR = String(Kstringoldstate.charAt(KpinNo - 8));
if (KpinStateSTR != KoldpinStateSTR)//yes it's different
{
if (KpinNo != 13){ //pin 13 is no good as an input, it can "flutter" unless set up correctly
if (KpinNo == 8 && KpinStateSTR == "0"){Serial.println ("C15");} //flap handle up a bit
if (KpinNo == 9 && KpinStateSTR == "0"){Serial.println ("C14");} //flap handle down a bit
if (KpinNo > 9){//now the keys bit
Serial.print ("D");
if (KpinNo < 10) Serial.print ("0");
Serial.print (KpinNo);
Serial.println (KpinStateSTR);
}//end of keys bit
}//end of its not pin 13
}//end of yes its different
Kstringnewstate += KpinStateSTR;
}//end of 'For' loop
Kstringoldstate = Kstringnewstate;
}











Alerial
Capitão
Capitão

Masculino
Inscrito em : 11/11/2014
Mensagens : 106
Reputação : 1
Idade : 45
Simulador preferido : FSX, X-Plane
Emprego/lazer : Hidroponia, Aquaponia, pecuaria
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Alerial em Qua 17 Dez 2014, 14:00

Como isso é viciante.....Nossa!!!
Só mais uma pergunta... nesse codigo tem como eu usar as outras 6 saidas analogicas? se sim o que eu poderia ligar nelas?

Abraços

Alerial
Capitão
Capitão

Masculino
Inscrito em : 11/11/2014
Mensagens : 106
Reputação : 1
Idade : 45
Simulador preferido : FSX, X-Plane
Emprego/lazer : Hidroponia, Aquaponia, pecuaria
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Joz em Qua 17 Dez 2014, 22:15

Blz Alerial, que bom que resolveu! Pegou o espírito da coisa thumbsup
Agora que você consegue juntar os códigos, pode testar pequenas partes de códigos por vez. É mais fácil de implementar, compreender e verificar os erros.
Alerial escreveu:tem como eu usar as outras 6 saidas analogicas? se sim o que eu poderia ligar nelas?
Se você estiver se referindo aos pinos A0 ao A5, não são saídas, mas sim "entradas" analógicas. Pode ligar potenciômetros e os mais diversos sensores. Sempre com o intuito de fornecer dados para o arduino.
E onde estão as saídas analógicas? Alguns dos pinos digitais, tem a característica "PWM", que emula uma saída analógica. Nelas você pode ligar luzes para controlar a intensidade, motores para controlar a velocidades, etc. Sempre partindo do princípio que você pode controlar a tensão.

_________________
Josenildo
Especialista em Navegação Aérea
http://www.hangarxplane.com.br/
avatar
Joz
Coronel
Coronel

Masculino
Inscrito em : 23/10/2011
Mensagens : 1437
Reputação : 193
Idade : 38
Simulador preferido : X-Plane
Emprego/lazer : Especialista em Navegação Aérea
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Flavio Ribeiro em Qui 18 Dez 2014, 12:36

Alerial escreveu:

(...)
Grande Joz, fucei, refucei, fucei de novo e agora deu certo.
Do jeito que está o codigo ai em baixo ele acende o annunciator e indica por led as posições dos flaps.
Acho que agora a coisa tende a andar.
Vou montar o annunciator, e o comando do flap, e caso possa e seja útil para alguém eu posso colocar os detalhes, como ligação, pinos, materiais, etc....
(...)

Oi amigo,

tenho sim muito interesse em montar algo assim. Por favor nos brinde com os detalhes de suas montagens. Quando possível acompanhadas de fotos.

Adquiri uma paca arduino mega, alguns sensores e outros trecos e estou aprendendo aos poucos os conceito dessa ferramenta...é mesmo apaixonante... viciante.
Recentemente consegui fazer acender uma lâmpada (representada por um led) usando controle remoto e relê. Me senti realizado ao concluir essa experiência.

_________________
avatar
Flavio Ribeiro
Tenente-Coronel
Tenente-Coronel

Masculino
Inscrito em : 21/05/2012
Mensagens : 525
Reputação : 36
Idade : 37
Simulador preferido : FSX
Emprego/lazer : Historiador
Nacionalidade : Brasil

http://voandoemcasa.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Alerial em Qui 18 Dez 2014, 12:54

Eu estou com a Uno, pelo motivo de aprender, caso seja viavel, vou montar com Mega por ter mais opções de entrada e saida.
Eu vou tentar fazer um rascunho e ilustrar com foto os componentes e ligações, e ai cada um faz o layout conforme o painel a ser montado.

Alerial
Capitão
Capitão

Masculino
Inscrito em : 11/11/2014
Mensagens : 106
Reputação : 1
Idade : 45
Simulador preferido : FSX, X-Plane
Emprego/lazer : Hidroponia, Aquaponia, pecuaria
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Flavio Ribeiro em Qui 18 Dez 2014, 12:58

Alerial escreveu:Eu estou com a Uno, pelo motivo de aprender, caso seja viavel, vou montar com Mega por ter mais opções de entrada e saida.
Eu vou tentar fazer um rascunho e ilustrar com foto os componentes e ligações, e ai cada um faz o layout conforme o painel a ser montado.


Beleza... fico no aguardo!

_________________
avatar
Flavio Ribeiro
Tenente-Coronel
Tenente-Coronel

Masculino
Inscrito em : 21/05/2012
Mensagens : 525
Reputação : 36
Idade : 37
Simulador preferido : FSX
Emprego/lazer : Historiador
Nacionalidade : Brasil

http://voandoemcasa.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Joz em Qua 07 Jan 2015, 08:47

Alerial, você estava curioso para saber como o Arduino poderia enviar comandos para o simulador. Resolvi fazer um pequeno teste onde um potenciômetro controla a posição do flap. A comunicação é com o X-Plane, plataforma que utilizo atualmente, mas o código do Arduino não muda muita coisa. É só adaptar para formato dos dados do link2fs. O código do Arduino está disponível em:
http://www.hangarxplane.com.br/x-plane-arduino-controlando-o-flap/

Demonstração:


Aqui, uma demonstração de entrada/saída.




_________________
Josenildo
Especialista em Navegação Aérea
http://www.hangarxplane.com.br/
avatar
Joz
Coronel
Coronel

Masculino
Inscrito em : 23/10/2011
Mensagens : 1437
Reputação : 193
Idade : 38
Simulador preferido : X-Plane
Emprego/lazer : Especialista em Navegação Aérea
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Alerial em Seg 12 Jan 2015, 12:17

Muito bom. É uma ótima opção para flap. Parabéns

Alerial
Capitão
Capitão

Masculino
Inscrito em : 11/11/2014
Mensagens : 106
Reputação : 1
Idade : 45
Simulador preferido : FSX, X-Plane
Emprego/lazer : Hidroponia, Aquaponia, pecuaria
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Edenio Rodrigues em Seg 12 Jan 2015, 12:27

Parabéns Joz aplauso
Aceite um pontinho thumbsup ,  abraços

_________________

Voar, triunfo da evolução
Stargate -  http://usbi.com.br/
avatar
Edenio Rodrigues
Tenente-Brigadeiro
Tenente-Brigadeiro

Masculino
Inscrito em : 07/12/2010
Mensagens : 4263
Reputação : 438
Idade : 73
Simulador preferido : FS2004
Emprego/lazer : Simulação, energia solar, hidroponia
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por manuhboo em Sab 26 Dez 2015, 13:33

Fala comandos,
Entrei na arte do HC, tenho uma breve noção de eletrônica e programação, lendo e assistindo os videos que o pessoal aqui posta consegui chegar a um resultado satisfatório de um protótipo.
Estou usando o Arduíno uno, uso o software "link2fs_multi_fsx_v5h".

a programação está no caminho certo, encontrei um tutorial do "Zakkatkinson" peguei o código dele e o adaptei para as minhas necessidades.

funcionou digamos 80% de tudo, mas não sei se é por falha da estrutura do projeto ou da programação que estou tendo o seguinte problema.

quando direciono a porta do arduíno uma chave como no código abaixo, Pino 9 para luzes strobos, quando compilo e testo no fsx a mesma funciona, quando vou adicionar as demais cheves elas ficam ligando e desligando repetitivamente, seria um erro de programação ou erro na ligação dos terminais?

Segue o código e algumas fotos.

void setup()
{
 Serial.begin(115200); //begin serial at 115200 Baud
   
   pinMode(2, INPUT_PULLUP);  // ALTERNADOR
   pinMode(3, INPUT_PULLUP);  // BATERIA
   pinMode(9, INPUT_PULLUP);  // LIGHT STROBO
   pinMode(11, INPUT_PULLUP); // MASTER AVIONICS

}

void loop()
{
 if(digitalRead(11) == LOW){       // if switch on pin 11 is in "on" position
         Serial.println("A431");   // turn AVIONICS on
   }else{Serial.println("A430"); } // else turn AVIONICS off

 if(digitalRead(3) == LOW){       // if switch on pin 3 is in "on" position
        Serial.println("E18");   // turn BATERIA on
  }else{Serial.println("E17"); } // else turn BATERIA off

 if(digitalRead(2) == LOW){       // if switch on pin 2 is in "on" position
        Serial.println("E21");   // turn ALTERNADOR on
  }else{Serial.println("E20"); } // else turn ALTERNADOR off    

 if(digitalRead(9) == LOW){       // if switch on pin 9 is in "on" position
        Serial.println("C451");   // turn STROBO on
  }else{Serial.println("C450"); } // else turn STROBO off

}//End loop



Desconsiderar anotações.







*Lembrando que é apenas um protótipo. rss

Obrigado e abraços a todos do Forum!
avatar
manuhboo
Recruta
Recruta

Masculino
Inscrito em : 24/12/2015
Mensagens : 1
Reputação : 0
Idade : 27
Simulador preferido : FSX
Emprego/lazer : TI
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Thiago Sobral em Sab 26 Dez 2015, 20:19

Opa,

não sei se serei útil, eu sou quase 100% leigo em circuitos, mas já ajudei um colega meu um pouco na programação de scripts para Arduino.
O código parece estar totalmente correto. Eu arriscaria dizer que pode ser algo no circuito.

Quando você testa apenas com um outro interruptor qualquer que não seja o Strobe, funciona normal ou também dá problema? E isso acontece com mais de um tipo de aeronave?

Se for possível, pode postar uma printscreen do Link2fs na parte que exibe o tráfego de dados vindo da placa Arduino?

Abraço

Thiago Sobral
Primeiro-Tenente
Primeiro-Tenente

Masculino
Inscrito em : 09/09/2014
Mensagens : 51
Reputação : 2
Idade : 29
Simulador preferido : Prepar3D 2.5
Emprego/lazer : Doutorando / Professor universitário
Nacionalidade : Brasil

Voltar ao Topo Ir em baixo

Re: Conexão dos avionicos (radios, controles e comandos) com Arduino

Mensagem por Juan Landim em Sab 26 Dez 2015, 20:56

Muito bom essa dica do painel com Arduíno, comprei algumas placas, irei tentar montar um painel "Universal" para usar nos meus voos.
happy happy aplauso aplauso

_________________
Setup: Windows 10/Core I5-4460 3.2GHz/8GB HyperX 1866MHz (2x4GB)/Geforce GTX 960 2GB GDDR5 128Bit/HD 1TB Sata III 64Mb cache/SSD 260GB kingston
avatar
Juan Landim
Segundo-Tenente
Segundo-Tenente

Masculino
Inscrito em : 19/09/2013
Mensagens : 45
Reputação : 6
Idade : 20
Simulador preferido : P3D v3.2
Emprego/lazer : Estudante/ Aeroporto
Nacionalidade : Brasil

http://aviadoresdocariri.com.br

Voltar ao Topo Ir em baixo

Página 2 de 2 Anterior  1, 2

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum