la derniere version ne fonctionne pas, erreur lors de la compilation, j'ai essayer la v1, v1 beta et v3.
le blink fonctionne, test led avec timer fonctionne aussi.
pas de photo désolé, j'ai fait un montage sur plaque d'essai a souder bornes sorties résistances souder ensemble sur le signal rca. sur la 470 ohm je suis brancher sur la mega sur le pwm 11, celle de 1k sur pin 29. et ground rca sur le ground au niveau des pins digital (j'en ai essayer d'autres).
au niveau de l'ide j'ai essayer la version 1.01, v022 et v023.
TVout.cpp: In member function 'void TVout::render_setup(uint8_t)':
TVout.cpp:729: error: '_VID_DDR' was not declared in this scope
TVout.cpp:729: error: '_VID_PIN' was not declared in this scope
TVout.cpp:730: error: '_SYNC_DDR' was not declared in this scope
TVout.cpp:730: error: '_SYNC_PIN' was not declared in this scope
TVout.cpp:731: error: '_VID_PORT' was not declared in this scope
TVout.cpp:732: error: '_SYNC_PORT' was not declared in this scope
Tient on doit pas avoir la même version R5.91 alors.
Moi avec ma version (téléchargé directement depuis le gestion de version mercurial du google-code) j'ai tout qui compile correctement ...
//turbo jauge
TV.write("TURBO"); // “MAP:” at top right of display
TV.print(boost);
TV.write("BAR"); // “PSI” three digits to the right of “MAP:”
TV.write(254); // SerLCD instruction
TV.write(192); // “Peak:” at bottom right of display
TV.print("PEAK");
TV.write(254); // SerLCD instruction
TV.write(204); // “PSI” left of peakboost
TV.print("PSI");
et dans le void loop celui-ci:
void loop()
{
mapval= analogRead(mapsen); //Reads the MAP sensor raw value on analog port 0
boost = (mapval/1.9); //Converts raw MAP value to PSI and accounts for atomospheric pressure
if (boost > peakboost) // If current boost is higher than peak, store in peak memory
{
peakboost = boost ; // Store current boost in peak memory
}
if (peakboost <= 0) // Shifts peak value 1 character to the right if < 10PSI
{
TV.write(254); // SerLCD instruction
TV.write(197); // Peak display after “Peak:”
TV.print(peakboost,1); //peak to 1 decimal
}
else
{
TV.write(254); // SerLCD instruction
TV.write(197); // Go to position 22
TV.write(32); // Load clear bit at position 22
TV.write(254); // SerLCD instruction
TV.write(198); // Go to position 22
TV.write(32); // Load clear bit at position 23
TV.write(254); // SerLCD instruction
TV.write(199); // Go to position 22
TV.write(32); // Load clear bit at position 24
TV.write(254); // SerLCD instruction
TV.write(200); // Go to position 22
TV.write(32); // Load clear bit at position 25
TV.write(254); // SerLCD instruction
TV.write(201); // Go to position 22
TV.write(32); // Load clear bit at position 26
TV.write(254); // SerLCD instruction
TV.write(202); // Go to position 22
TV.write(32); // Load clear bit at position 26
TV.write(254); // SerLCD instruction
TV.write(198); // Peak display after “Peak:”
TV.print(peakboost,1); //peak to 1 decimal
}
if (boost <= 0) //Shifts the MAP value 1 character to the right if < 10PSI
{
TV.write(254); // SerLCD instruction
TV.write(133); // boost after “MAP:”
TV.print(boost,1); //boost to 1 decimal
}
else
{
TV.write(254); // SerLCD instruction
TV.write(133); // Go to position 6
TV.write(32); // Load clear bit at position 4
TV.write(254); // SerLCD instruction
TV.write(134); // Go to position 7
TV.write(32); // Load clear bit at position 4
TV.write(254); // SerLCD instruction
TV.write(135); // Go to position 8
TV.write(32); // Load clear bit at position 4
TV.write(254); // SerLCD instruction
TV.write(136); // Go to position 9
TV.write(32); // Load clear bit at position 4
TV.write(254); // SerLCD instruction
TV.write(137); // Go to position 10
TV.write(32); // Load clear bit at position 4
TV.write(254); // SerLCD instruction
TV.write(138); // Go to position 11
TV.write(32); // Load clear bit at position 4
TV.write(254); // SerLCD instruction
TV.write(134); // boost after “MAP:”
TV.print(boost,1); // boost to one decimal
}
delay(1000); // prevents LCD display from ghosting. Lower number refreshes faster, higher number has less ghosting on slow LCD’s
}
void preset() //peak reset if D2 goes low
{
peakboost = boost; //sets peakboost to current boost reading, resetting the peak memory
}
je vois que des pixels défilé sur l'écran.... j'ai un peu de mal a transcrire le scipt lcd avec le script TVout
oui j'ai mélangé le code, en fin de compte TV.write je n'en ai pas besoin.
dans le code du gars il met serial.write pour envoyer une instruction au LCD, tandis que moi je n'ai pas d'intruction a envoyé j'ai juste a utiliser le code TV.print et println.
antho59:
oui j'ai mélangé le code, en fin de compte TV.write je n'en ai pas besoin.
dans le code du gars il met serial.write pour envoyer une instruction au LCD, tandis que moi je n'ai pas d'intruction a envoyé j'ai juste a utiliser le code TV.print et println.
je suis dans le bon?
C'est bien ce que je pensai tu t'étais mélangé les pinceaux
Tu ne travaille pas (plus) avec un Serlcd, donc pas de commande spécial ou autre.
Tu as juste à utiliser TV.print pour afficher ton texte et tes valeurs c'est tout
un peu d'avancement aujourd'hui mais c'est pas encore çà mais je touche au but.
pour commencer le code
#include "TVout.h"
#include "fontALL.h"
TVout TV;
int capteurT = 3; // capteur pression turbo connecté broche 3
int valeur = 0; //variable de type int pour stocker la mesure
float pression = 0;
void setup()
{
TV.begin(NTSC,120,96);
TV.select_font(font6x8);
TV.println("test jauge turbo");
TV.delay(5000);
TV.println("BY ROCKS");
TV.delay(5000);
TV.clear_screen();
}
void loop()
{
valeur = analogRead(capteurT); //lit la valeur de la tension
pression = (valeur/1,9); //convertit la tension en valeur de pression
TV.select_font(font6x8);
TV.print("TURBO = ");
TV.print(pression);
}
erreurs dans le calcul et la boucle, si je met TV.print("TURBO = ") et TV.print(pression) je vois le mot turbo et la valeur qui défile sur tout l'écran, mais il faut deviner que c'est marqué...
pour le calcul j'ai un peu de mal a comprendre si je passe "valeur" en int ou float j'ai aucun changement, j'ai vu sur 2 codes qu'il divisait la valeur par 1023, si la valeur serait toujours a 5v ok mais là c'est pas mon cas, je pense qu'il faudrait diviser la valeur par 210 (pour 5v valeur affiché 1023, pour 4v valeur affiché 830, pour 3v valeur affiché 630) donc si je divise ma valeur affiché par 210 j'obtiendrais la tension en entrée me restera juste après a rediviser par 1.9 pour avoir ma pression.
Il y a une méthode set_cursor(x,y) qui permet de définir l'emplacement où le texte s'affiche.
Dans la beta1 il y a aussi des print et println(x,y,...) qui permettent de choisir l'emplacement de l'affichage. voir dans TVout.h et TVoutPrint.cpp ou là Google Code Archive - Long-term storage for Google Code Project Hosting.
sinon je regarde pour mettre une barre de progression en dessous, je compte utiliser TV.draw_rect(x0,y0,width,height,color,fillcolor) comment faire varier la largeur en fonction de la valeur lu en entrée ou de la valeur affiché sur la TV?
rafraichir l'écran uniquement si la valeur a été modifié (simple if en plus avec une secondes variable)
antho59:
sinon je regarde pour mettre une barre de progression en dessous, je compte utiliser TV.draw_rect(x0,y0,width,height,color,fillcolor) comment faire varier la largeur en fonction de la valeur lu en entrée ou de la valeur affiché sur la TV?
Utilise map (ou un bête produit en croix) :
Ensuite pour le reste c'est des maths pure et dure
[partie pleine = x][partie vide = largeur_total - x]
-> un map, et deux TV.draw_rect
int bar = analogRead (3) // valeur lu en entrée. bar: progress bar
bar = map(bar,0,800,10,100) // 800: valeur max lu en entrée que je ne dépasserai jamais car elle coresspond a une pression d'environ 2bar, valeur de 800 étalonné a 100 qui correspond à la largeur max du rectangle
par contre je comprends pas pourquoi il faut 2 ligne draw_rec?