Bonjour a tous
Avec la carte Arduino Uno et un Module Capteur de température analogique linéaire LM35.
Le programme Panoramic ce décompose en trois parties
Température_ambiante.bas et en #include "Afficheur.bas" et "com_serie.bas"
la DLL_Panoramic\IO_Acces_COM.dll : paramétrage du port série suivant configuration
Code: Panoramic
' Température ambiante avec include
error_french
label err
on_error_goto err
width 0,1000:height 0,600:color 0,160,120,60
top 0,(screen_y-height(0))/2
left 0,(screen_x-width(0))/2
dim temp_cel$
temp_cel$ ="00.00"
label Afficheur,sp_com,sp_fin
gosub Afficheur
gosub sp_com
button 5:top 5,510:left 5,850:caption 5,"F I N"
on_click 5,sp_fin
on_close 0,sp_fin
' ======
end
' ======
#include "Afficheur.bas"
#include "com_serie.bas"
' =====FIN========
sp_fin:
timer_off 15:pause 40
dll_off:pause 100
terminate:return
' ======Error=======
err:
message "erreur "+str$(error_number)+" "+error_type$+" error_line "+str$( error_line)
terminate :return
' =============
' Afficheur.bas
' ======
Afficheur:
container 9 :top 9,30:left 9,60: width 9,850:height 9,420:color 9,50,50,50
alpha 11:parent 11,9:top 11,1:left 11,10
caption 11,temp_cel$:font_color 11,0,255,0
font_bold 11:font_italic 11 :font_size 11,242
alpha 42:parent 42,9:top 42,310:left 42,220
caption 42,"Température ambiante":font_color 42,255,0,0
font_size 42,30
progress_bar 50:parent 50,9:top 50,370:left 50,20: width 50,800:height 50,30
min 50,0: max 50,40: position 50,val(temp_cel$)
return
' ==================
' com_serie.bas
sp_com:
label sp_15,db_15
dim res%,dat%,donner$,memdonner$,r,rr
timer 15:timer_interval 15,300: timer_on 15
dll_on "C:\DLL_Panoramic\IO_Acces_COM.dll"
rem suivant configuration
r= dll_call1("ComUsePort",8)
rr= dll_call4("ComConfig",115200,8,1,0)
pause 20
if r=1 and rr=1
on_timer 15,sp_15:' Réception
else
message "Défaut du port série"
end_if
return
' ==========
sp_15:
timer_off 15 : pause 2
db_15:
res% = dll_call1("ComGetDataIn",adr(dat%)):pause 10
if res%>0
donner$=donner$+chr$(dat%):goto db_15
end_if
if memdonner$ <> donner$
temp_cel$=donner$
caption 11,temp_cel$
temp_cel$=left$(temp_cel$, 2)
position 50,val(temp_cel$)
end_if
donner$="":timer_on 15:retur
code arduino Code:
/*
http://www.matbra.com/en/2012/09/23/sensor-de-temperatura-com-arduino-e-lm35-arduino-lm35/
Nom: Matheus Bratfisch
Date de naissance: 08/12/1989
Sexe: Masculin
Capteur_température_Arduino_LM35
Le
capteur LM35 est un capteur de température , il sera variable aléatoire
10mV/Celsius . Il broches peut être vu sur l'image (attention , c'est
un regard en bas)
LM35 Pins
Donc, pour le connecter à
Arduino, vous devez vous connecter VCC pour Arduino 5V , GND à GND
Arduino , et l'axe du milieu, vous devez vous connecter à une broche
analogique , dans mon cas, j'ai utilisé A0.
Ce projet ne
nécessite aucune résistance ou un condensateur entre l'Arduino et le
capteur , donc suffit de le connecter . L'Arduino ADC a une précision de
10 bits , alors dans ce 5V / 2 cas ^ 10 = 5V / 1024 , de sorte que
0,0049 est notre facteur . Pour obtenir la température en degrés Celsius
, nous obtenons la valeur et calcule comme suit:
Température = (broche * 0,0049 ) * 100
Mais
pourquoi multiplier par 100 ? PIN * 0,0049 donnera les volts sur le
port , si l'on multiplie par 1000 nous aurons millivolts sur le port ,
le capteur varie 10mV / C nous avons donc besoin de le diviser par 10
pour obtenir la température . En mathématiques multiplier par 1000 et
diviser par 10 est le même que celui en multipliant par 100 . Comprendre
? [Ajouter le 12 /12]
Et pour l'avoir sur Fahrenheit , nous avons besoin de faire une conversion
TemperatureF = ( température * 1.8) + 32 .
Le code Arduino que j'ai utilisé est le suivant:
*/
// pour panoramic
http://' n° 201310191640
int analogPin = 0;
int readValue = 0;
float temperature = 0;
float temperatureF = 0;
void setup() {
Serial.begin(115200);
}
void loop() {
readValue = analogRead(analogPin);
//Serial.println(readValue);
temperature = (readValue * 0.0049);
temperature = temperature * 100;
// temperatureF = (temperature * 1.8) + 32;
// Serial.print("Temperature: ");
Serial.println(temperature);
// Serial.println("C ");
// Serial.print(temperatureF);
// Serial.println("F");
delay(2000);
}
Aucun commentaire:
Enregistrer un commentaire