Ir ao conteúdo
  • Cadastre-se
Patrick Fernando Santos

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"""

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...😑

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a linha/conteúdo do erro? Cadê o programa completo?

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por gentileza me diga que você não está fazendo ctrl-c ctrl-v e juntamente com os números de linha...

  • Obrigado 1
  • Haha 1

Compartilhar este post


Link para o post
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;
} 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 15/02/2020 às 20:14, Isadora Ferraz disse:

Haja bola de cristal viu...😑

 

KKKKKKKK 

 

Pior que elas tão muito caras hoje em dia !

 

Paulo

  • Haha 1

Compartilhar este post


Link para o post
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. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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...

Redes de Computadores - Gabriel Torres

PROMOÇÃO DE QUARENTENA

De R$ 39,90 por apenas R$ 9,90 só até as 23h59min desta sexta-feira 03/04/2020

CLIQUE AQUI E COMPRE AGORA MESMO!