Ir ao conteúdo
  • Cadastre-se

Arduino tentando ler 4 sensores yf s402. arduino mega


Posts recomendados

ola gostaria de ajuda para leitura de 4 sensor de fluxo. colega responsável travou e estamos ai na tentativa de resolver. obgd


16 volatile double waterFlow;
17 void setup() {
18 Serial.begin(9600); 
19 waterFlow1 = 0;
21 waterFlow2 = 0;
22 waterFlow3 = 0;
23 waterFlow4 = 0;
24 attachInterrupt(2, pulse, RISING); //DIGITAL Pin 2: Interrupt 0
25 attachInterrupt(3, pulse, RISING); //DIGITAL Pin 3: Interrupt 0
26 attachInterrupt(18, pulse, RISING); //DIGITAL Pin 18: Interrupt 0
27 attachInterrupt(19, pulse, RISING); //DIGITAL Pin 19: Interrupt 0
28 }
30 Serial.print("waterFlow1:");
31 Serial.print(waterFlow1);
32 Serial.println(" L");
33 Serial.print("waterFlow2:");
34 Serial.print(waterFlow2);
35 Serial.println(" L");
36 Serial.print("waterFlow3:");
37 Serial.print(waterFlow3);
38 Serial.println(" L");
39 Serial.print("waterFlow4:");
40 Serial.print(waterFlow4);
41 Serial.println(" L");
42 delay(500);
43 }
44
45 void pulse() //measure the quantity of square wave30 {
46 waterFlow += 1.0 / 5880.0;
47 } 



"""erro    expected unqualified-id before numeric constant"""

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

1º corrija a linha 45

void pulse() //measure the quantity of square wave30
{
waterFlow += 1.0 / 5880.0; 47
} 

2º defina de onde vem waterFlow. Das interrupts? E cadê as definições das outras waterFlows?

3º publique esquemas, desenhos e afins

 

Haja bola de cristal viu...😑

Link para o comentário
Compartilhar em outros sites

é uma tentativa de alterar o programa original que veio no datasheet. porém o próprio original esta apresentando erro

waterflow nada mais é do que a contagem dos pulsos das interrupts. que no novo caso é ter 4. mas o programa original ja esta dando erro.

image.png.1a95fba7437c27b6700bf97082ef6ad0.png

16 volatile double waterFlow;
17 void setup() {
18 Serial.begin(9600); //baudrate
19 waterFlow = 0;
20 attachInterrupt(0, pulse, RISING); //DIGITAL Pin 2: Interrupt 0
21 }
22 void loop() {
23 Serial.print("waterFlow:");
24 Serial.print(waterFlow);
25 Serial.println(" L");
26 delay(500);
27 }
28
29 void pulse() //measure the quantity of square wave
30 {
31 waterFlow += 1.0 / 5880.0;
32 } 

 

 

 

  • Confuso 1
Link para o comentário
Compartilhar em outros sites

esse é o programa completo.

 

 1 /***************************************************
 2 This example reads Water flow sensor Sensor.
 3
 4 Created 2016-3-13
 5 By berinie Chen <bernie.chen@dfrobot.com>
 6 
 7 GNU Lesser General Public License.
 8 See <http://www.gnu.org/licenses/> for details.
 9 All above must be included in any redistribution
10 ****************************************************/
11
12 /***********Notice and Trouble shooting***************
13 1.Connection and Diagram can be found here http://www.dfrobot.com/wiki/i
ndex.php?title=Water_Flow_Sensor_-_1/8%22_SKU:_SEN0216
14 2.This code is tested on Arduino Uno.
15 ****************************************************/
16 volatile double waterFlow;
17 void setup() {
18 Serial.begin(9600); //baudrate
19 waterFlow = 0;
20 attachInterrupt(0, pulse, RISING); //DIGITAL Pin 2: Interrupt 0
21 }
22 void loop() {
23 Serial.print("waterFlow:");
24 Serial.print(waterFlow);
25 Serial.println(" L");
26 delay(500);
27 }
28
29 void pulse() //measure the quantity of square wave
30 {
31 waterFlow += 1.0 / 5880.0;
32 } 

 

adicionado 0 minutos depois

image.png.132f30902d7490a34e84073c7d365b36.png

  • Confuso 1
Link para o comentário
Compartilhar em outros sites

problema resolvido.... envergonhadamente sim eu estava copiando o prog do datasheet direto.... resolvi isso e em seguida repliquei o prog alterando o pin mode de acordo com o arduino utilizado e pronto tudo funcional.  agora prox passo é testar o prog com o prototipo em funcionamento para ver se n se perde na leitura e tal. muitooooo obgd. eu n mexo com nada de prog. mas é um trabalho em grupo entao tive que me virar.. muito obgd mesmo. conforme der boa aviso aqui . abaixo ta o prog novo sem erros dessa vez... 


volatile double waterFlow1;
volatile double waterFlow2;
volatile double waterFlow3;
volatile double waterFlow4;
void setup() {
Serial.begin(9600); //baudrate
waterFlow1 = 0;
attachInterrupt(0, pulse, RISING); //DIGITAL Pin 2: Interrupt 0
Serial.begin(9600); //baudrate
waterFlow2 = 0;
attachInterrupt(1, pulse, RISING); //DIGITAL Pin 3: Interrupt 1
Serial.begin(9600); //baudrate
waterFlow3 = 0;
attachInterrupt(2, pulse, RISING); //DIGITAL Pin 21: Interrupt 2
Serial.begin(9600); //baudrate
waterFlow4 = 0;
attachInterrupt(3, pulse, RISING); //DIGITAL Pin 20: Interrupt 3
}
void loop() {
Serial.print("waterFlow1:");
Serial.print(waterFlow1);
Serial.println(" L");
delay(500);
Serial.print("waterFlow2:");
Serial.print(waterFlow2);
Serial.println(" L");
delay(500);
Serial.print("waterFlow3:");
Serial.print(waterFlow3);
Serial.println(" L");
delay(500);
Serial.print("waterFlow4:");
Serial.print(waterFlow4);
Serial.println(" L");
delay(500);
}

void pulse() //measure the quantity of square wave
{
waterFlow1 += 1.0 / 5880.0;
waterFlow2 += 1.0 / 5880.0;
waterFlow3 += 1.0 / 5880.0;
waterFlow4 += 1.0 / 5880.0;
} 

 

Link para o comentário
Compartilhar em outros sites

Teste realizado. Porém o programa funcionou semelhante a uma válvula OU. Ele faz a leitura do volume de água que passa pelo sensor, mas ele faz apenas uma leitura. Tendo 1 ou 4 pinos conectados. Ele le o volume como apenas 1. E meu objetivo e cada uma ler seu próprio fluxo. 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Algo me diz que você pode criar uma interrupt pra cada pino pra cada evento

void pulse1() //measure the quantity of square wave
{
waterFlow1 += 1.0 / 5880.0;
}


void pulse2() //measure the quantity of square wave
{
waterFlow2 += 1.0 / 5880.0;
}

...

não me pergunte como...

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...