Tutorial: FlightGear com Arduino: Parte 2 - INPUT

Neste tutorial, continuaremos com o simulador de vôo FlightGear, como no tutorial anterior Parte 1, mas agora iremos mostrar o Arduino enviando comando para o simulador de vôo. Ligaremos um botão ao arduino e este enviando comando para o freio de estacionamento do simulador.

Primeiramente, conecte um botão entre o pino digital 2 e o 5V do Arduino e um resistor de 10K Ohm entre o pino digital 2 entre o GND.

Abra a IDE do Arduino, abra a programação exemplo localizada em File\Examples\Digital\Button e adicione as três linhas destacadas em vermelho na programação abaixo:

/*
Button
Turns on and off a light emitting diode(LED) connected to digital 
pin 13, when pressing a pushbutton attached to pin 2. 
The circuit:
* LED attached from pin 13 to ground 
* pushbutton attached to pin 2 from +5V
* 10K resistor attached to pin 2 from ground
* Note: on most Arduinos there is already an LED on the board
attached to pin 13.
created 2005
by DojoDave a href="http://www.0j0.org%3E">http://www.0j0.org>;;
modified 30 Aug 2011
by Tom Igoe
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/Button
*/

// constants won't change. They're used here to 
// set pin numbers:
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin

// variables will change:
int buttonState = 0; // variable for reading the pushbutton status

void setup() {
    // initialize the LED pin as an output:
    pinMode(ledPin, OUTPUT); 
    // initialize the pushbutton pin as an input:
    pinMode(buttonPin, INPUT);
    Serial.begin(9600);
}

void loop(){
    // read the state of the pushbutton value:
    buttonState = digitalRead(buttonPin);

    // check if the pushbutton is pressed.
    // if it is, the buttonState is HIGH:
    if (buttonState == HIGH) { 
        // turn LED on: 
        digitalWrite(ledPin, HIGH);
    } 
    else {
        // turn LED off:
        digitalWrite(ledPin, LOW); 
    }
    Serial.println(buttonState);
    delay(100);

}

Selecione a versão da placa Arduino (UNO, Duemilanove,etc) e a porta em que o Arduino está conectado (COMx, ttyUSBx, ttyACMx, etc) e faça o UPLOAD. Agora abra o Serial Monitor. Cada vez que apertar o botão, o LED acenderá e o Serial Monitor mostrará '1'. Ao soltar o botão irá aparecer '0'. Feche o Serial Monitor.

Vá para a pasta "data" do FlightGear, crie um arquivo novo dentro da pasta "protocol",cole a programação abaixo e salve o arquivo com o nome de "arduino-in.xml":

<?xml version="1.0"?>
<PropertyList>
    <generic>
        <input>
            <line_separator>newline</line_separator
            <var_separator>newline</var_separator>
            <chunk>
                <name>park</name>
                <format>%d</format>
                <node>/controls/gear/brake-parking</node>
            </chunk>
        </input>
    </generic>
</PropertyList>

 

Este arquivo representa o que você quer importar pela porta serial. Entre cada <chunk> é um simulador de variável. Você pode mudar essa variável facilmente.

Se você estiver usando a linha de comando, adicione o código abaixo após o comando de lançamento:

--generic=serial,in,25,\\.\COM30,9600,arduino-in

 

Agora, se estiver usando o FG launcher, clique no botão "Advanced". Depois em "input/output' e então em "new". Configure de acordo com os paramêtros abaixo:

  • protocol = generic
  • media = serial
  • direction = in
  • Hz = 1
  • Port = \\.\COM20 (mude para a porta do Arduino)
  • Baud = 19600
  • File = arduino-in (selecione o arquivo arduino-in.xml)

Então clique em "OK" e rode o simulador.

Pressione o botão para mudar o estado do freio e você verá o indicador de freio na tela e o LED da placa Arduino acender e apagar.

Exibições: 1476

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço