172.Helicoptero

 [| Edit] 0[| 15][|…] =** Autor **= Adenisio Pereira de Freitas - 0040961323002
 * Helicoptero Arduino**

Uno  Funduino   Placa de transistor de fita. Carcaça e motores de helicóptero de brinquedo do tipo h-18 Candide.
 * Dispositivo (Modelo do arduino): **

=** Projeto **= helicóptero controle com Arduíno.

=** Resumo **= Projeto para construir um helicóptero (drone) controlado com Funduino e Arduino.

=** Software/materiais utilizados **=

Software:

 * ==== IDE do arduino. ====
 * ==== Classes desenvolvidas para este projeto. ====

=** Metodologia **= O circuito utiliza uma placa de Arduino Uno e uma de controle Funduino que é conectada a placa do Arduino. Para o chaveamento do controle foi utilizado uma placa com com transitores para controle especifico de funcionamento do helicóptero.

=** Desenvolvimento (problemas encontrados, como foram resolvidos, programas desenvolvidos) **=

Depois de encontrar uma carcaça e motores em bom estado, foi retirado a placa mãe e os sensores originais do modelo. Os motores ganharam um novo circuito que ligava uma perna diretamente a placa de transistores e e outra a Protoboard. O motor da cauda foi substituído e adaptado por outro de outro modelo. A placa de controle Funduino foi conectada a placa do Arduino para criar os eventos de funcionamento do helicóptero. O circuito passa por uma Protoboard para fazer a comunicação entre os componentes como placa do Funduino, transistores, a bateria de 3,7 v e o próprio helicóptero. O programa para funcionamento do helicóptero foi criado somente para seu funcionamento sem auxilio de bibliotecas para esse tipo de trabalho.

** Resultados: **
==== O helicóptero responde a controles da placa do Funduino para ligar suas hélices com rotação baixa, acelerar rotação, ir para frente,girar, desacelerar e desligar. ==== Como em um funcionamento normal, um helicóptero conta com um motor traseiro para mudar seu trajeto, sendo que esse motor e posicionado paralelamente ao seu corpo, e o modelo utilizado tem um motor que apenas auxilia no nivelamento ( desacelerando a cauda desce e ele vai para trás e acelerando a cauda sobe e ele tende ir para frente). Para fazer a mudança de direção foi utilizado o recurso de diminuir a aceleração de um dos motores e aumento da aceleração do outro motor para compensar sua velocidade, com essa alternância de velocidade nos motores foi possível girar o motor de acordo com o motor que girar mais rápido, pois os motores giram em sentidos opostos.

imagens do projeto:





Segue o código. code format="c"

int btnAcelerate = 2; int btnRecue = 4; int velocBack = 0; int velocRight = 0; int velocLeft = 0; bool start = false; int state = 0, rotate = 0; //pin const int backEl = 9;              //elice tras const int rigthEl = 10;            //elice cima const int leftEl = 11;             //elice cima const int valuex = 400; const int valuey = 800; const int loadx = A0; const int loady = A1;

void setup { // put your setup code here, to run once: Serial.begin(9600);

pinMode(key, INPUT_PULLUP); pinMode(btnAcelerate, INPUT); pinMode(btnRecue, INPUT);

pinMode(backEl, OUTPUT); pinMode(rigthEl, OUTPUT); pinMode(leftEl, OUTPUT);

}

void loop {

// put your main code here, to run repeatedly: int analogValuex = analogRead(0); int analogValuey = analogRead(1); int digitalKeyz = digitalRead(key);

analogWrite(backEl, velocBack); analogWrite(leftEl, velocLeft); analogWrite(rigthEl, velocRight);

if(digitalRead(key)== 0){ start = !start; }

//stop the helicoptero if(start && state == 0){ velocBack = 50; velocLeft = 50; velocRight = 50; state = 1; rotate = 0; } //stop the elicoptero if(!start && state == 1){ velocBack = 0; velocLeft = 0; velocRight = 0; state = 0; rotate = 0; }

//acelerate system if(digitalRead(btnAcelerate) == 0 && state == 1){ velocBack = 1023; velocLeft = 1023; velocRight = 1023; state = 2; rotate = 1; }

if(digitalRead(btnAcelerate) == 1 && state == 2){ velocBack = 1020; velocLeft = 300; velocRight = 300; state = 1; rotate = 1 ; }

Serial.print(analogValuex); Serial.print(" = x    y =  "); Serial.print(analogValuey); Serial.println; delay(500);

if(analogValuex > 700 && rotate == 1){ velocBack = 1023; velocLeft = 900; velocRight = 900; } if(analogValuey > 700 && rotate == 1){ velocBack = 1023; velocLeft = 50; velocRight = 1020; } if(analogValuey < 200 && rotate == 1){ velocBack = 1023; velocLeft = 1023; velocRight = 50; }

} code int key = 8; //clicke key// //int btnAcelerate = 2;int btnRecue = 4;int velocBack = 0;int velocRight = 0;int velocLeft = 0;bool start = false;int state = 0, rotate = 0; //

pin const int backEl = 9; //elice tras// const int rigthEl = 10;

 }