bonjour tout le monde
étant donnée debutant en arduino ! j'ai subit quelques problémes et j'ai besoin de votre aide
j'utilise une carte arduino Mega 2560 connecté avec 4 capteurs (temperature , tension , son , à proximité pour calculer la vitesse) et un afficheur LCD. chaque programme de chaque capteur marche trés bien ! mais le probléme lorsque j'ai fait le programme complet et j'ai mis chaque programme de chaque capteur dans une fonction . quand je fais l'appel de son() et tension() et pourcentagebatterie() il marche trés bien ! mais quand j'ajoute l'appel de vittesse() ou temperature() seulement tension() et pourcentagebatterie() marchent , les autres non !!! la combinaison de son() avec vitesse() et temperature() ne marche pas !! quelle est le probléme s'il vous plait merci !
voici le fichier ino du programme ! j'attend votre aide
Code:#include <Wire.h> #include <OneWire.h> #include <DallasTemperature.h> #include <LiquidCrystal.h> const int RS=6; //declaration constante de broche const int E=7; //declaration constante de broche const int D4=8; //declaration constante de broche const int D5=9; //declaration constante de broche const int D6=10; //declaration constante de broche const int D7=11; //declaration constante de broche LiquidCrystal lcd(RS, E, D4, D5, D6, D7); float x1; float v; float pourc ; int etat_actuel=0; int ancien_etat=0; long chrono_depart=0; long duree_test=1000; float nbr_rotation=0; float rpm ; boolean flag; int x=0 ; float t ; float km ; float t1=0 ; float t2=0 ; float t3=0 ; float t4=0 ; OneWire oneWire(2); DallasTemperature sensors(&oneWire); void setup() { Serial.begin(9600); sensors.begin(); lcd.begin(16,4); pinMode(A1,INPUT); chrono_depart=0; pinMode(12, INPUT); pinMode(4, OUTPUT); flag=false ; } void loop() { if(son()) { t1=temperature(); t2=tension(); t3=pourcentagebatterie(); t4=vitesse(); affiche(); } } boolean son() { if((digitalRead(12))) { if(flag==true) { flag=false ; digitalWrite(4,LOW); } else { flag=true; digitalWrite(4,HIGH); } delay(50); } return(flag); } float temperature(){ sensors.requestTemperatures(); t=sensors.getTempCByIndex(0); return(t); } float tension() { x1=analogRead(A0); v=(x1*24)/1024 ; return(v); } float pourcentagebatterie() { v=tension(); pourc=(v*100)/24 ; return(pourc); } float vitesse() { etat_actuel=digitalRead(A1); if (millis()-chrono_depart<duree_test){ if (etat_actuel!=ancien_etat){ nbr_rotation=nbr_rotation+1; ancien_etat=etat_actuel; } } else { rpm=(60*nbr_rotation); km=rpm*0.00756; chrono_depart=millis(); nbr_rotation=0; } return(km); } void affiche() { lcd.setCursor(0,0); lcd.print("tension="); lcd.setCursor(8,0); lcd.print(t2); lcd.setCursor(13,0); lcd.print("V "); lcd.setCursor(0,1); lcd.print("batterie="); lcd.setCursor(9,1); lcd.print(t3); lcd.setCursor(0,2); lcd.print("t="); lcd.setCursor(2,2); lcd.print(t1); lcd.setCursor(7,2); lcd.print("C"); lcd.setCursor(0,3); lcd.print("vitesse="); lcd.setCursor(8,3); lcd.print(t4); lcd.setCursor(12,3); lcd.print("KM/H"); delay(1000);
-----