collapse

* Links de Robótica

* Posts Recentes

Printer 3D barata por andre_f_carvalho
[Hoje às 13:09]


Procuro resistências 220 Ohm de 1% por brunus
[02 de Dezembro de 2016, 15:50]


Package de cond 10uF 35V smd? por KammutierSpule
[02 de Dezembro de 2016, 11:19]


Videos hipnoticos de mecanica industrial por TigPT
[02 de Dezembro de 2016, 00:07]


FPV Drone Racing? por brunus
[02 de Dezembro de 2016, 00:00]


Decodificar cabo por Hugu
[01 de Dezembro de 2016, 23:11]


Ajuda para replicar e reparar um Dimmer por brunus
[30 de Novembro de 2016, 23:23]


Adaptar impressora 3D a Drill Maschine por Hugu
[30 de Novembro de 2016, 23:20]


Módulo gsm por dio123
[30 de Novembro de 2016, 13:39]


RAM SO-DIMM 256 MB por Hugu
[29 de Novembro de 2016, 22:52]

Autor Tópico: Como posso ligar 3 acelerometro MMA7361 em apenas um "Arduino MEGA"  (Lida 3003 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline megamartinelle

  • Mini Robot
  • *
  • Mensagens: 96
Galera gostaria de uma pequena ajuda :D

Meu objetivo é conectar 3 acelerometros MMA7361 no arduino mega para controlar 9 servos. tenho o código para controle de 3 que no caso é apenas um acelerometro. Como posso fazer para controlar os 3 no mesmo arduino?

Código:

#include <Servo.h>

Servo Servo_Y;                               

Servo Servo_X;

Servo Servo_Z;

int Eixo_X,Eixo_Y,Eixo_Z;

int Medicao1[15],Media_X;

int Medicao2[15],Media_Y;

int Medicao3[15],Media_Z;

int i,j,l;

int Pino_Sleep = 8;

void setup()
{
Serial.begin(9600);

pinMode(Pino_Sleep, OUTPUT);

digitalWrite(Pino_Sleep, HIGH);

Servo_Z.attach(11);
Servo_X.attach(10);
Servo_Y.attach(9);

i=0;
j=0;
l=0;
}

void loop()
{

Eixo_X = analogRead(0);

Medicao1=Eixo_X;

Media_X=(Medicao1[0]+Medicao1[1]+Medicao1[2]+Medicao1[3]+Medicao1[4]+Medicao1[5]+Medicao1[6]+Medicao1[7]+Medicao1[8]+Medicao1[9]+Medicao1[10]+Medicao1[11]+Medicao1[12]+Medicao1[13]+Medicao1[14])/15;
i++;

if(i>=15)i=0;
Media_X=map(Media_X,171,499,180,0);

Servo_X.write(Media_X);


Eixo_Y = analogRead(1);

Medicao2[j]=Eixo_Y;


Media_Y=(Medicao2[0]+Medicao2[1]+Medicao2[2]+Medicao2[3]+Medicao2[4]+Medicao2[5]+Medicao2[6]+Medicao2[7]+Medicao2[8]+Medicao2[9]+Medicao2[10]+Medicao2[11]+Medicao2[12]+Medicao2[13]+Medicao2[14])/15;

j++;

if(j>=15)j=0;

Media_Y=map(Media_Y,184,511,180,0);

Servo_Y.write(Media_Y);


Eixo_Z = analogRead(2);

Medicao3[l]=Eixo_Z;


Media_Z=(Medicao2[0]+Medicao2[1]+Medicao2[2]+Medicao2[3]+Medicao2[4]+Medicao2[5]+Medicao2[6]+Medicao2[7]+Medicao2[8]+Medicao2[9]+Medicao2[10]+Medicao2[11]+Medicao2[12]+Medicao2[13]+Medicao2[14])/15;

l++;

if(l>=15)l=0;

Media_Z=map(Media_Z,184,511,180,0);

Servo_Z.write(Media_Z);

Serial.print(" Eixo X: ");
Serial.print(Media_X);

Serial.print(" Eixo Y: ");
Serial.println(Media_Y);

Serial.print(" Eixo Z: ");
Serial.println(Media_Z);
delay(1);
}

Offline artur36

  • Mini Robot
  • *
  • Mensagens: 567
Re: Como posso ligar 3 acelerometro MMA7361 em apenas um "Arduino MEGA"
« Responder #1 em: 27 de Setembro de 2015, 19:01 »
Primeiro que tudo acho completamente desnecessário o SPAM de estar a criar dois tópicos exactamente iguais em secções distintas do forum, seria de "bom tom" pedires a um moderador para apagar um dos tópicos.

Quanto à tua pergunta não sei ajudar-te directamente e nem sequer me darei ao trabalho de abrir um tab no navegador para pesquisar que acelerómetro é esse e como comunicar com este, pesquisar para aprender acho que deves ser tu a fazê-lo já que o projecto é teu.

A ajuda que te posso dar é muito simples:
- Precisas realmente de ler 3 acelerómetros distintos? Se é por falta de eixos existem acelerómetros de 9 eixos.
- Sabes ler os dados de um acelerómetro individualmente e processar correctamente os seus dados?
- Sabes accionar correctamente um servomotor individualmente?
- Sabes controlar mais que um servo num mesmo código correctamente?

Só quando puderes responder afirmativamente a estas 4 perguntas é que te deves preocupar em ler 3 acelerómetros, antes disso é escusado avançares mais.
Nota que eu perguntei se sabias correctamente, não se já tinhas copiado o código necessário de outro lado. Isto não é uma crítica destrutiva mas sim construtiva, não dizes concretamente qual o teu projecto, mas controlar 9 servos com dados de acelerómetros não me parece um projecto simples e ideal para primeiros projectos, é importante que percebas realmente todos os bocados individuais do teu código e não apenas copiá-los de outro lado, isto será depois muito importante quando aparecerem os primeiros erros e tiveres de descobrir de onde eles vêm.
Se dominares os pequenos passos que necessitas para o teu projecto, comandar um servo e ler correctamente um acelerómetro, depois é só uma questão de os replicares várias vezes no projecto ao chamar a função respectiva quando esta for necessário, para isso aconselho-te a tentares desenhar um fluxograma para teres claro em que condições necessitas de ler o(s) acelerómetro(s) e accionar os servos.

P.S.: A leitura de vários acelerómetros não será nenhum bicho de sete cabeças, lê bem a datasheet para perceberes como funciona a comunicação com este, provavelmente será I2C ou SPI portanto ou tens de activar o pino "chip select" do acelerómetro que queres ler ou tens de definir endereços independentes para os acelerómetros e na comunicação enviar o endereço respctectivo (não sei de cabeça a que protocolo corresponde cada um dos métodos mas de qualquer das maneiras estuda bem a datasheet que vem lá isto bem explicado)

Editado para rasurar as passagens onde depois do alerta do senso e de analisar mais friamente a minha resposta reconheço que errei
« Última modificação: 27 de Setembro de 2015, 20:06 por artur36 »

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 8.988
  • Helpdesk do sitio
Re: Como posso ligar 3 acelerometro MMA7361 em apenas um "Arduino MEGA"
« Responder #2 em: 27 de Setembro de 2015, 19:34 »
Que arrogância, é mesmo preciso esse tom?
Por mim era já uma semana de férias só pela PDM que demonstras nesse post

Pelo analogRead obviamente que é um acelerómetro com saida analógica.

Basicamente é só replicar o código 3 vezes e mudar os pinos do analogRead para os outros 2 acelerómetros e adicionar mais servos em pinos diferentes.
Avr fanboy

Offline artur36

  • Mini Robot
  • *
  • Mensagens: 567
Re: Como posso ligar 3 acelerometro MMA7361 em apenas um &quot;Arduino MEGA&quot;
« Responder #3 em: 27 de Setembro de 2015, 20:04 »


Que arrogância, é mesmo preciso esse tom?
Por mim era já uma semana de férias só pela PDM que demonstras nesse post
Senso desde já peço desculpa a ti e a qualquer outro membro que tenha interpretado a minha resposta como arrogante ou de qualquer maneira menos própria para o fórum, não foi de todo essa a minha intenção.
Analisando friamente a minha resposta talvez tenhas alguma razão.
Mantenho em parte a minha resposta em especial no que se refere ao tópico duplicado  má reconheço que podia ter dado ao menos uma olhadela ao código apresentado e realmente teria percebido rapidamente que a saída do acelerometro seria analógica e não um qualquer protocolo digital como erradamente pressupôs.
De qualquer das maneiras Mantenho as perguntas que deixei, acho muita dificuldade em perceber o básico, neste caso afinal apenas ler mais que uma entrada analógica, para quem quer fazer mover 9 servos através de acelerometros.

P.S.: Quanto ás férias cabe aos moderadores decidirem, sendo tu um deles se assim o decidires aceito-o perfeitamente, como disse acima reconheço agora que podia ter tido outra postura...

Offline megamartinelle

  • Mini Robot
  • *
  • Mensagens: 96
Re: Como posso ligar 3 acelerometro MMA7361 em apenas um "Arduino MEGA"
« Responder #4 em: 27 de Setembro de 2015, 21:16 »
Arthur, eu criei em outra sessão por engano e não tem como eu apagar. Então não tem como remover meu post da outra sessão!
E Senso, eu fiz o que você falou antes mesmo de postar aqui no forum, mas deu erro na hora de fazer a compliação.

Offline artur36

  • Mini Robot
  • *
  • Mensagens: 567
Re: Como posso ligar 3 acelerometro MMA7361 em apenas um &quot;Arduino MEGA&quot;
« Responder #5 em: 27 de Setembro de 2015, 21:34 »
Arthur, eu criei em outra sessão por engano e não tem como eu apagar. Então não tem como remover meu post da outra sessão!
E Senso, eu fiz o que você falou antes mesmo de postar aqui no forum, mas deu erro na hora de fazer a compliação.
Pelo que sei do fórum só um moderador pode apagar um tópico.
Se já tentas-te mas deu erro coloca aqui as alterações que fizeste ao código e que erro deu

Offline megamartinelle

  • Mini Robot
  • *
  • Mensagens: 96
Re: Como posso ligar 3 acelerometro MMA7361 em apenas um "Arduino MEGA"
« Responder #6 em: 28 de Setembro de 2015, 03:58 »
Bem vou mandar duas partes de como eu fiz.

PRIMEIRA:

Código: [Seleccione]
#include <Servo.h>

Servo Servo1_Y;                               

Servo Servo2_X;

Servo Servo3_Z;

///////////////

Servo Servo4_Y;                               

Servo Servo5_X;

Servo Servo6_Z;

//////////////

Servo Servo7_Y;                               

Servo Servo8_X;

Servo Servo9_Z;


int Eixo_X,Eixo_Y,Eixo_Z;

int Medicao1[15],Media1_X;

int Medicao2[15],Media2_Y;

int Medicao3[15],Media3_Z;

////////////////////////

int Medicao4[15],Media4_X;

int Medicao5[15],Media5_Y;

int Medicao6[15],Media6_Z;

////////////////////////

int Medicao7[15],Media7_X;

int Medicao8[15],Media8_Y;

int Medicao9[15],Media9_Z;


int i,j,l;

int Pino_Sleep = 8;

void setup()
{
Serial.begin(9600);

pinMode(Pino_Sleep, OUTPUT);

digitalWrite(Pino_Sleep, HIGH);

//Acelerômetro 1
Servo1_Z.attach(2);
Servo2_X.attach(3);
Servo3_Y.attach(4);
 
//Acelerômetro 2
Servo4_Z.attach(5);
Servo5_X.attach(6);
Servo6_Y.attach(7);
 
//Acelerômetro 3
Servo7_Z.attach(8);
Servo8_X.attach(9);
Servo9_Y.attach(10);

i=0;
j=0;
l=0;
}


SEGUNDA PARTE NÃO CONSIGO COLOCAR MAIS 2 CÓDIGOS SEM QUE FIQUE DANDO ERRO. ENTÃO VOU MANDAR ELA AQUI DE COMO ELA REALEMNTE É COM APENAS UM ACELERÔMETRO:

void loop()
{

Eixo_X = analogRead(0);

Medicao1[j]=Eixo_X;

Media_X=(Medicao1[0]+Medicao1[1]+Medicao1[2]+Medicao1[3]+Medicao1[4]+Medicao1[5]+Medicao1[6]+Medicao1[7]+Medicao1[8]+Medicao1[9]+Medicao1[10]+Medicao1[11]+Medicao1[12]+Medicao1[13]+Medicao1[14])/15;
i++;

if(i>=15)i=0;
Media_X=map(Media_X,171,499,180,0);

Servo_X.write(Media_X);


Eixo_Y = analogRead(1);

Medicao2[j]=Eixo_Y;


Media_Y=(Medicao2[0]+Medicao2[1]+Medicao2[2]+Medicao2[3]+Medicao2[4]+Medicao2[5]+Medicao2[6]+Medicao2[7]+Medicao2[8]+Medicao2[9]+Medicao2[10]+Medicao2[11]+Medicao2[12]+Medicao2[13]+Medicao2[14])/15;

j++;

if(j>=15)j=0;

Media_Y=map(Media_Y,184,511,180,0);

Servo_Y.write(Media_Y);


Eixo_Z = analogRead(2);

Medicao3[l]=Eixo_Z;


Media_Z=(Medicao2[0]+Medicao2[1]+Medicao2[2]+Medicao2[3]+Medicao2[4]+Medicao2[5]+Medicao2[6]+Medicao2[7]+Medicao2[8]+Medicao2[9]+Medicao2[10]+Medicao2[11]+Medicao2[12]+Medicao2[13]+Medicao2[14])/15;

l++;

if(l>=15)l=0;

Media_Z=map(Media_Z,184,511,180,0);

Servo_Z.write(Media_Z);

Serial.print(" Eixo X: ");
Serial.print(Media_X);

Serial.print(" Eixo Y: ");
Serial.println(Media_Y);

Serial.print(" Eixo Z: ");
Serial.println(Media_Z);
delay(1);

AGORA NÃO ESTOU CONSEGUINDO ACRESCENTAR MAIS SEM QUE DE ERRO



Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 8.988
  • Helpdesk do sitio
Re: Como posso ligar 3 acelerometro MMA7361 em apenas um "Arduino MEGA"
« Responder #7 em: 28 de Setembro de 2015, 12:37 »
E que erro é que dá?
Avr fanboy

Offline megamartinelle

  • Mini Robot
  • *
  • Mensagens: 96
Re: Como posso ligar 3 acelerometro MMA7361 em apenas um "Arduino MEGA"
« Responder #8 em: 28 de Setembro de 2015, 20:30 »
Mesagem de erro: Arduino: 1.6.5 (Windows 8.1), Placa:"Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

c_digo_teste_aceler_metro.ino: In function 'void setup()':
c_digo_teste_aceler_metro:64: error: 'Servo1_Z' was not declared in this scope
c_digo_teste_aceler_metro:66: error: 'Servo3_Y' was not declared in this scope
c_digo_teste_aceler_metro:69: error: 'Servo4_Z' was not declared in this scope
c_digo_teste_aceler_metro:71: error: 'Servo6_Y' was not declared in this scope
c_digo_teste_aceler_metro:74: error: 'Servo7_Z' was not declared in this scope
c_digo_teste_aceler_metro:76: error: 'Servo9_Y' was not declared in this scope
c_digo_teste_aceler_metro.ino: In function 'void loop()':
c_digo_teste_aceler_metro:94: error: 'Media_X' was not declared in this scope
c_digo_teste_aceler_metro:108: error: 'Media_Y' was not declared in this scope
c_digo_teste_aceler_metro:116: error: 'Servo3_Y' was not declared in this scope
c_digo_teste_aceler_metro:124: error: 'Media_Z' was not declared in this scope
c_digo_teste_aceler_metro:132: error: 'Servo1_Z' was not declared in this scope
c_digo_teste_aceler_metro:146: error: 'Servo6_X' was not declared in this scope
c_digo_teste_aceler_metro:162: error: 'Servo5_Y' was not declared in this scope
c_digo_teste_aceler_metro:178: error: 'Servo4_Z' was not declared in this scope
c_digo_teste_aceler_metro:192: error: 'Servo9_X' was not declared in this scope
c_digo_teste_aceler_metro:208: error: 'Servo8_Y' was not declared in this scope
c_digo_teste_aceler_metro:224: error: 'Servo7_Z' was not declared in this scope
'Servo1_Z' was not declared in this scope

  Este relatório deveria ter mais informações
  "Mostrar saída verbosa durante a compilação"
  habilitado em Arquivo > Preferências.



Como está o programa:



void loop()
{

///////////////////////////////////// ACELERÔMETRO 1

Eixo_X = analogRead(0);

Medicao1[j]=Eixo_X;

Media_X=(Medicao1[0]+Medicao1[1]+Medicao1[2]+Medicao1[3]+Medicao1[4]+Medicao1[5]+Medicao1[6]+Medicao1[7]+Medicao1[8]+Medicao1[9]+Medicao1[10]+Medicao1[11]+Medicao1[12]+Medicao1[13]+Medicao1[14])/15;
i++;

if(i>=15)i=0;
Media_X=map(Media_X,171,499,180,0);

Servo2_X.write(Media_X);


Eixo_Y = analogRead(1);

Medicao2[j]=Eixo_Y;


Media_Y=(Medicao2[0]+Medicao2[1]+Medicao2[2]+Medicao2[3]+Medicao2[4]+Medicao2[5]+Medicao2[6]+Medicao2[7]+Medicao2[8]+Medicao2[9]+Medicao2[10]+Medicao2[11]+Medicao2[12]+Medicao2[13]+Medicao2[14])/15;

j++;

if(j>=15)j=0;

Media_Y=map(Media_Y,184,511,180,0);

Servo3_Y.write(Media_Y);


Eixo_Z = analogRead(2);

Medicao3[l]=Eixo_Z;


Media_Z=(Medicao2[0]+Medicao2[1]+Medicao2[2]+Medicao2[3]+Medicao2[4]+Medicao2[5]+Medicao2[6]+Medicao2[7]+Medicao2[8]+Medicao2[9]+Medicao2[10]+Medicao2[11]+Medicao2[12]+Medicao2[13]+Medicao2[14])/15;

l++;

if(l>=15)l=0;

Media_Z=map(Media_Z,184,511,180,0);

Servo1_Z.write(Media_Z);

///////////////////////////////////// ACELERÔMETRO 2

Eixo_X = analogRead(3);

Medicao1[j]=Eixo_X;

Media_X=(Medicao1[0]+Medicao1[1]+Medicao1[2]+Medicao1[3]+Medicao1[4]+Medicao1[5]+Medicao1[6]+Medicao1[7]+Medicao1[8]+Medicao1[9]+Medicao1[10]+Medicao1[11]+Medicao1[12]+Medicao1[13]+Medicao1[14])/15;
i++;

if(i>=15)i=0;
Media_X=map(Media_X,171,499,180,0);

Servo6_X.write(Media_X);


Eixo_Y = analogRead(4);

Medicao2[j]=Eixo_Y;


Media_Y=(Medicao2[0]+Medicao2[1]+Medicao2[2]+Medicao2[3]+Medicao2[4]+Medicao2[5]+Medicao2[6]+Medicao2[7]+Medicao2[8]+Medicao2[9]+Medicao2[10]+Medicao2[11]+Medicao2[12]+Medicao2[13]+Medicao2[14])/15;

j++;

if(j>=15)j=0;

Media_Y=map(Media_Y,184,511,180,0);

Servo5_Y.write(Media_Y);


Eixo_Z = analogRead(5);

Medicao3[l]=Eixo_Z;


Media_Z=(Medicao2[0]+Medicao2[1]+Medicao2[2]+Medicao2[3]+Medicao2[4]+Medicao2[5]+Medicao2[6]+Medicao2[7]+Medicao2[8]+Medicao2[9]+Medicao2[10]+Medicao2[11]+Medicao2[12]+Medicao2[13]+Medicao2[14])/15;

l++;

if(l>=15)l=0;

Media_Z=map(Media_Z,184,511,180,0);

Servo4_Z.write(Media_Z);

///////////////////////////////////// ACELERÔMETRO 3

Eixo_X = analogRead(3);

Medicao1[j]=Eixo_X;

Media_X=(Medicao1[0]+Medicao1[1]+Medicao1[2]+Medicao1[3]+Medicao1[4]+Medicao1[5]+Medicao1[6]+Medicao1[7]+Medicao1[8]+Medicao1[9]+Medicao1[10]+Medicao1[11]+Medicao1[12]+Medicao1[13]+Medicao1[14])/15;
i++;

if(i>=15)i=0;
Media_X=map(Media_X,171,499,180,0);

Servo9_X.write(Media_X);


Eixo_Y = analogRead(4);

Medicao2[j]=Eixo_Y;


Media_Y=(Medicao2[0]+Medicao2[1]+Medicao2[2]+Medicao2[3]+Medicao2[4]+Medicao2[5]+Medicao2[6]+Medicao2[7]+Medicao2[8]+Medicao2[9]+Medicao2[10]+Medicao2[11]+Medicao2[12]+Medicao2[13]+Medicao2[14])/15;

j++;

if(j>=15)j=0;

Media_Y=map(Media_Y,184,511,180,0);

Servo8_Y.write(Media_Y);


Eixo_Z = analogRead(5);

Medicao3[l]=Eixo_Z;


Media_Z=(Medicao2[0]+Medicao2[1]+Medicao2[2]+Medicao2[3]+Medicao2[4]+Medicao2[5]+Medicao2[6]+Medicao2[7]+Medicao2[8]+Medicao2[9]+Medicao2[10]+Medicao2[11]+Medicao2[12]+Medicao2[13]+Medicao2[14])/15;

l++;

if(l>=15)l=0;

Media_Z=map(Media_Z,184,511,180,0);

Servo7_Z.write(Media_Z);

Serial.print(" Eixo X: ");
Serial.print(Media_X);

Serial.print(" Eixo Y: ");
Serial.println(Media_Y);

Serial.print(" Eixo Z: ");
Serial.println(Media_Z);
delay(1);
}

Offline artur36

  • Mini Robot
  • *
  • Mensagens: 567
Re: Como posso ligar 3 acelerometro MMA7361 em apenas um &quot;Arduino MEGA&quot;
« Responder #9 em: 28 de Setembro de 2015, 20:38 »
O erro diz que as variáveis não estão declaradas ou não estão acessíveis na função indicada. No primeiro código que apresentas-te tens as variáveis declaradas fora das funções imediatamente a seguir ao include, assim são variáveis globais e acessíveis em todas as funções, está assim agora, é que neste excerto não aparece sequer o include?

P.s.: estou a ver no tapatalk pelo que pode ser erro de interpretação porque este não apresenta o código devidamente formatado...

P.S.2: Caso as variáveis estejam declaradas no sítio correcto vê se por acaso não te esqueceste nessa zona de algum ponto e Virgula, é um erro que me acontece com alguma frequência (o bem do MpLab é que sublinha as zonas em erro)
« Última modificação: 28 de Setembro de 2015, 20:59 por artur36 »

Offline megamartinelle

  • Mini Robot
  • *
  • Mensagens: 96
Re: Como posso ligar 3 acelerometro MMA7361 em apenas um "Arduino MEGA"
« Responder #10 em: 28 de Setembro de 2015, 21:01 »
Vou analisar com mais calma, em tornoi de 3 dias falo se ta normal ou não. Por favor,não bloquei essep ost para que eu não venha ter que criar outro se necessario. Desde já agradeço pela ajuda!

Offline artur36

  • Mini Robot
  • *
  • Mensagens: 567
Re: Como posso ligar 3 acelerometro MMA7361 em apenas um &quot;Arduino MEGA&quot;
« Responder #11 em: 28 de Setembro de 2015, 21:28 »
Tenta perceber o que se passa com a declaração das variáveis pois todos os erros apresentados relacionam-se com isso, se depois não existirem mais erros partes para os testes "físicos" a ver se funciona

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 1.688
  • NERD!
Re: Como posso ligar 3 acelerometro MMA7361 em apenas um "Arduino MEGA"
« Responder #12 em: 28 de Setembro de 2015, 22:38 »
Já agora dá uma vista ao comando "for". Quando num código se vê o mesmo bloco repetido n vezes, o programador está a fazer algo mal.
Por exemplo:
Código: [Seleccione]
Media_X=(Medicao1[0]+Medicao1[1]+Medicao1[2]+Medicao1[3]+Medicao1[4]+Medicao1[5]+Medicao1[6]+Medicao1[7]+Medicao1[8]+Medicao1[9]+Medicao1[10]+Medicao1[11]+Medicao1[12]+Medicao1[13]+Medicao1[14])/15;

Fica muito mais legível, fácil de detetar erros e fazer alterações se for:
Código: [Seleccione]
#define AMOSTRAS 15

MediaX=0;
for (int cnt=0;cnt<AMOSTRAS;cnt++) {
    MediaX=MediaX+Medicao1[cnt];
}
MediaX=MediaX/AMOSTRAS;

Offline megamartinelle

  • Mini Robot
  • *
  • Mensagens: 96
Re: Como posso ligar 3 acelerometro MMA7361 em apenas um "Arduino MEGA"
« Responder #13 em: 29 de Setembro de 2015, 07:20 »
Vou analisar com mais cuidado. Então você me recomenda subistituir essa parte:

 Media_X=(Medicao1[0]+Medicao1[1]+Medicao1[2]+Medicao1[3]+Medicao1[4]+Medicao1[5]+Medicao1[6]+Medicao1[7]+Medicao1[8]+Medicao1[9]+Medicao1[10]+Medicao1[11]+Medicao1[12]+Medicao1[13]+Medicao1[14])/15;

Pela a que você me enviou?

Offline artur36

  • Mini Robot
  • *
  • Mensagens: 567
Re: Como posso ligar 3 acelerometro MMA7361 em apenas um &quot;Arduino MEGA&quot;
« Responder #14 em: 29 de Setembro de 2015, 09:09 »
Não adianta substituíres o exemplo sem compreender o que ele faz, até porque tens mais sítios onde podes aplicar  a mesma simplificação. Se não conseguiste compreender o exemplo estuda um pouco do ciclo FOR, é muito útil sempre que quiseres repetir uma mesma tarefa um número definido de vezes, seja uma soma matemática seja um movimento de um servo.