Pages: 1 ... 3 4 [5] 6   Go Down
Author Topic: ordi de bord  (Read 7024 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 48
Mr Swap
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ahhhhhhh forcément je commençait a désespérer de ne pas arriver a fractionner mes quadran comme je le souhaitais!

Bon je vais corriger tous çà est modifier ce qu'il faut. Merci beaucoup pour les info!
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 48
Mr Swap
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ouf c'est bon, je commençait a m’arracher les cheveux. Mais là c'est nickel.  smiley-cool

Code:
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);



void setup(){
  Serial.begin(9600);
 
  lcd.begin(20, 4);
 
   lcd.setCursor(0,0);
 lcd.print("Ti");
 lcd.setCursor(0,1);
 lcd.print("To");
 
  pinMode(A0, INPUT);
}

void loop() {
 int sonde=A0;
 int temp_val=0;
 int temp_in=analogRead(sonde);
 int quadran= map(temp_in,220,756,0,4);
 int Temp;

if (temp_in >= 220 && temp_in <235 ) quadran =0;
if (temp_in >= 235 && temp_in <247 ) quadran =1;
if (temp_in >= 247 && temp_in <343 ) quadran =2;
if (temp_in >= 343 && temp_in <611 ) quadran =3;
if (temp_in >= 611 && temp_in <756 ) quadran =4;

switch(quadran)
 {
 case 0:
 Temp= map(temp_in,220,235,0,20);
 break;
 
 case 1:
 Temp = map (temp_in,235,247,20,30);
 break;
 
 case 2:
 Temp = map(temp_in,247,343,30,50);
 break;
   
 case 3:
 Temp = map(temp_in,343,611,50,80);
 break;
 
 case 4:
 Temp = map (temp_in,611,756,80,100);
 break;

}

  Serial.print("temp_val");   
 Serial.print(temp_in);
 Serial.print("temp_val");
 Serial.println(Temp);

 lcd.setCursor(3,0);
 lcd.print("   ");
 lcd.setCursor(3,1);
 lcd.print("   ");
 lcd.setCursor(3,0);
 lcd.print(temp_in);
 lcd.setCursor(3,1);
 lcd.print(Temp);
  lcd.setCursor(0,2);
 lcd.print("   ");
 lcd.setCursor(0,2);
 lcd.print(quadran);

 delay(500);
 
 
}

Par contre c'est de quel variable que tu ma parle a décaler?
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 48
Mr Swap
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

parce que j'ai tenter de les déplacer mais ensuite je pense que les variable ne sont pas réactualiser car les valeur étaient nul ou fixe.
Logged

Bretagne
Offline Offline
Full Member
***
Karma: 2
Posts: 196
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir,


Code:
int quadran= map(temp_in,220,756,0,6);

3ème remarque :
la fonction "switch...case" ne sait gérer que des valeurs uniques en entrée, pas des fourchettes : c'est à toi de créer ces valeurs (0, 1 ... maxi) en fonction de ta lecture, par plages.

J'arrive un peu tard, mais si je peux me permettre...juste pour vous simplifier la vie.
 comme map joue sur des entiers, il retournera 0 ou 1 ou ....6  (donc les if avec fourchettes sont inutiles)
"The map() function uses integer math so will not generate fractions, when the math might indicate that it should do so. Fractional remainders are truncated, and are not rounded or averaged. "


Logged

...ils embarquèrent la logique, coupèrent les cordons, alors, libérés de leurs chaînes, une immensité s'ouvrait devant eux...

Offline Offline
Newbie
*
Karma: 1
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

je ne suis plus totalement sure, mais il me semble que, si tu utilise des else if quand tu détermine les valeurs de quadran, ça peut éviter la lecture des else if suivant celui où la condition est validée. ça peut faire gagner du temps d’exécution, si tu place les conditions correspondants à la température de fonctionnement du moteur au début de la liste. Vue que le moteur chauffe en quelques minutes pas la peine que les lignes de code pour les températures en dessous de 70 degrés soit lue en premier.


si tu copie colle le code, pense a retirer la fonction map dans int quadran= map(temp_in,220,756,0,4);  elle ne sert plus a rien.
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 48
Mr Swap
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah oui effectivement.

Je vais mètre tous çà en forme et l’intégrer a mon code principal.
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 48
Mr Swap
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

genre comme çà:
Code:
int sonde;
 int temp_in;
 int quadran;
 int Temp;

void setup(){

   pinMode(A0, INPUT);

}

void loop() {
 
 sonde=A0;
 temp_in=analogRead(sonde);

if (temp_in >= 611 ) quadran =4;
else if (temp_in >= 343 && temp_in <611 ) quadran =3;
else if (temp_in >= 247 && temp_in <343 ) quadran =2;
else if (temp_in >= 235 && temp_in <247 ) quadran =1;
else if (temp_in >= 220 && temp_in <235 ) quadran =0;

switch(quadran)
 {
 case 0:
 Temp= map(temp_in,220,235,0,20);
 break;
  
 case 1:
 Temp = map (temp_in,235,247,20,30);
 break;
 
 case 2:
 Temp = map(temp_in,247,343,30,50);
 break;
    
 case 3:
 Temp = map(temp_in,343,611,50,80);
 break;
 
 case 4:
 Temp = map (temp_in,611,756,80,100);
 break;
}
« Last Edit: August 24, 2013, 12:45:35 pm by McFleury » Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 48
Mr Swap
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui la vitesse m'importe peut dans mon cas, mais si je peut directement apprendre de la bonne manière c'est encore mieux!

Je pense que je trouverais bien d'autre applications a programmer.  smiley-mr-green
Logged

Québec
Offline Offline
God Member
*****
Karma: 16
Posts: 655
What ever! I'm gonna do what I want. Screw you guys! I'm going home. And other Cartman stuff. ;)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En utilisant un ADC externe qui se branche sur le port SPI tu peux facilement ajouter 8 entrés analogues en utilisant que 4 broches sur le port digitale.

Le circuit suivant, le TLC1518, a une résolution de 10 bits, donc la même que le port analogue qu'on retrouve sur le Arduino.

http://www.ti.com/product/tlc1518

Si tu utilises déjà la bibliothèque SPI dans ton projet, ça ne fera pas une grande différence au niveau de la mémoire que tu utilises.
Logged

Words cannot express how much I hate you guys. As we fight our way northward into the great unknown, only that one thing remains certain...

Offline Offline
Newbie
*
Karma: 1
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


mais dans l'absolu, tu ne gagneras que qqs µs, c'est surtout utile quand tu dois gérer des phénomènes rapides, ou savoir réagir vite à une capture, or les t° ne varient pas si vite, il y a une certaine inertie thermique dans un moteur, pas comme dans un proc qui peut passer de 45 à 60°C en qqs s (ce qui est déjà lent pour l'électronique même si c'est rapide pour nous)

bye

En faite c'est pas pour le capteur de température qu'il faut gagner des µs mais pour la boucle complète, il faut vraiment optimiser le code de chaque sonde et le traitement de son signal. C'est toujours dans le but de pouvoir rafraichir les tr/min le plus souvent possible, et avoir un affichage plus fluide sans perdre d'informations.     
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 48
Mr Swap
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En fait pour le moment le rafraichissement ce fait a chaque phase de détection d'un cran sur mon vilebrequin. Donc 5 fois plus souvent que mon régime moteur.
J'ai due mètre un petit délai pour avoir une lecture plus stable.

Mais hier soir je réfléchissais au problème car je souhaiterais gérer ma pression de turbo avec une électrovanne en PWM.
Je pense que je vais donc devoir modifier mon compte tour pour qu'il n'influe pas sur le déroulement du programme...
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 48
Mr Swap
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci de ton soutien 5_cylindres, car effectivement ce n'est pas le projet du siècle mais pour me faire la main c'est déjà sympa je trouve.  smiley-grin


Sinon pour mon turbo pensez vous que je doive utiliser une régulation PID pour gérer mon électrovanne ou avec de simple limites ou niveau de pwm a l’approche de la pression voulue?
Sachant toujours que c'est un camion avec une montée en régime qui n'est pas fulgurante mais la pression de turbo est plutôt réactive.
Logged

Québec
Offline Offline
God Member
*****
Karma: 16
Posts: 655
What ever! I'm gonna do what I want. Screw you guys! I'm going home. And other Cartman stuff. ;)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Initialement le type demandait si c'était possible de brancher plus que 6 trucs analogues la réponse est oui, mais ça prend un ADC externe. Le reste du bla bla ne m’intéresse guère.
Logged

Words cannot express how much I hate you guys. As we fight our way northward into the great unknown, only that one thing remains certain...

Offline Offline
Newbie
*
Karma: 1
Posts: 48
Mr Swap
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

pas grave je vais cherche sur les pid. Je vais bien trouver quelque chose!
Logged

Québec
Offline Offline
God Member
*****
Karma: 16
Posts: 655
What ever! I'm gonna do what I want. Screw you guys! I'm going home. And other Cartman stuff. ;)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
le "type" comme tu dis était Beru et non McFleury

Possible, je n'ai nommé aucun nom. Mais une chose est certaine, c'est que t'as plus de jasette que moi.lol Et je suis pourtant assez dur à battre habituellement
Logged

Words cannot express how much I hate you guys. As we fight our way northward into the great unknown, only that one thing remains certain...

Pages: 1 ... 3 4 [5] 6   Go Up
Jump to: