Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Maxime Robin
awesome_arduino
Commits
fb14bdf6
Commit
fb14bdf6
authored
Mar 08, 2017
by
Maxime Robin
Browse files
timer pour anemometre OK et comptage impulsions OK
parent
e02e6b8f
Changes
1
Hide whitespace changes
Inline
Side-by-side
testeurInstant/testeurInstant.ino
View file @
fb14bdf6
...
...
@@ -32,6 +32,7 @@
#include
<MAX31865.h>
#include
<SHTSensor.h>
#include
<I2CEEPROM.h>
#include
<TimerOne.h>
#define CHIP_ADDRESS 0x50
#define EEPROM_BYTES 64000 // Number of bytes in EEPROM chip
...
...
@@ -40,6 +41,9 @@
#define ROWS 4
#define COLS 4
#define TEMPS_ACQUISITION_ANEMOMETRE_us 1000000 // ça fait 1 seconde, en µs :)
// pour PT100
#define RTD_CS_PIN 10
...
...
@@ -219,29 +223,22 @@ void mesurePT100() {
}
unsigned
short
int
compteurImpulsions
=
0
;
float
vitesseVent
=
0
;
void
incrementCompteurAnemometre
()
{
compteurImpulsions
+=
1
;
}
void
mesureAnemometre
()
{
lcd
.
clear
();
Serial
.
println
(
"Entree mesure anemometre"
);
/**
* naturellement, à chaque front montant sur l'entrée de l'anémomètre,
* un compteur sera incrémenté.
* Au début de cette fonction, on remet ce compteur à 0 (compteurImpulsions = 0),
* On attends une seconde,
* Puis on détermine la fréquence associée puis la vitesse du vent.
*/
unsigned
short
int
startTime
=
millis
();
float
freqHz
=
0
,
vitesseVent
=
0
;
void
ISR_mesureVitVent
()
{
float
freqHz
=
(
compteurImpulsions
/
3.
);
// obtention du nombre de tours effectues
freqHz
=
freqHz
/
(
TEMPS_ACQUISITION_ANEMOMETRE_us
/
1000000.
);
vitesseVent
=
0.0980
*
freqHz
;
// vitesse en m/s. D'après datasheet, 0.0980 m/s per Hz
compteurImpulsions
=
0
;
while
(
millis
()
-
startTime
<
5000
);
//équivalent non bloquant d'un delay(). Permet au compteur de s'incrémenter.
freqHz
=
5
/
compteurImpulsions
;
v
itesseVent
=
0.0980
*
freqHz
;
// vit en m/s. D'après datasheet, 0.0980 m/s per Hz
}
void
mesureAnemometre
()
{
Serial
.
print
(
"V
itesse
Vent
: "
);
Serial
.
print
(
vitesseVent
);
Serial
.
println
(
" m/s"
);
lcd
.
setCursor
(
0
,
1
);
lcd
.
print
(
"V="
);
lcd
.
setCursor
(
2
,
1
);
lcd
.
print
(
vitesseVent
);
lcd
.
setCursor
(
3
,
1
);
lcd
.
print
(
vitesseVent
);
lcd
.
setCursor
(
8
,
1
);
lcd
.
print
(
"m/s"
);
}
...
...
@@ -250,7 +247,7 @@ void mesureGirouette() {
Serial
.
println
(
"Entree mesure Girouette"
);
float
dirVent
=
0
;
dirVent
=
360
*
analogRead
(
A0
)
/
1024
;
dirVent
=
360
.
*
analogRead
(
A0
)
/
1024
.
;
// conversion directe en degrés car le analogRead mappe les 5V sur 1024 points
lcd
.
setCursor
(
0
,
1
);
lcd
.
print
(
"D="
);
...
...
@@ -335,8 +332,11 @@ void setup()
maxPT100
.
configure
(
true
,
true
,
false
,
true
,
MAX31865_FAULT_DETECTION_NONE
,
true
,
true
,
0x0000
,
0x7fff
);
// Anemometre
// Reglage préalable pour l'anémomètre : à chaque front montant, on incrémente un compteur
attachInterrupt
(
digitalPinToInterrupt
(
2
),
incrementCompteurAnemometre
,
RISING
);
attachInterrupt
(
0
,
incrementCompteurAnemometre
,
RISING
);
Timer1
.
initialize
(
TEMPS_ACQUISITION_ANEMOMETRE_us
);
// set a timer of lenght 1 000 000 microseconds (or 1 sec)
Timer1
.
attachInterrupt
(
ISR_mesureVitVent
,
1000000
);
pinMode
(
A0
,
INPUT
);
...
...
@@ -434,9 +434,9 @@ void loop()
mesureSHT75
();
break
;
case
6
:
mesureThermocouple
();
break
;
case
7
:
break
;
case
7
:
mesurePT100
();
break
;
case
8
:
break
;
case
8
:
mesureAnemometre
();
break
;
case
9
:
mesureGirouette
();
break
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment