Go Down

Topic: conseil matériel (Read 7694 times) previous topic - next topic

skywodd


sisi j'ai lu mais trop tard :smiley-mr-green: bon je viens de faire le branchement sur les bons pins mais çà change rien, aucun affichage sur la télé.

Tu as quoi comme TV ?
Et tu utilise quoi comme valeur de résistance actuellment (celle du schéma tv-out ou ce que tu as pu trouvé sous la main ?)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

antho59

j'ai une tv led samsung , en résistance j'utilise une de 1k ohm et une de 330ohm, j'ai bien 75 ohm entre signal et ground sur mon cable rca qui va a la télé.

merci pour ton aide

skywodd


j'ai une tv led samsung , en résistance j'utilise une de 1k ohm et une de 330ohm, j'ai bien 75 ohm entre signal et ground sur mon cable rca qui va a la télé.

Essaye 470 ohms comme dans le schéma officiel, 330 ohms ça me semble un peu léger.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

antho59

je viens de tester avec une de 470 ohm, essayer la librairie ntsc et pal, aucun changement toujours pas d'affichage

skywodd


je viens de tester avec une de 470 ohm, essayer la librairie ntsc et pal, aucun changement toujours pas d'affichage

Tu peut faire un photo de ton câblage ?

Tu est sûr d'avoir la derniére version de tv-out ?
Ta carte est fonctionnelle ? (le sketch blink marche par exemple ?)

Ya un truc pas nette dans ton histoire ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

antho59

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.


skywodd


la derniere version ne fonctionne pas, erreur lors de la compilation, j'ai essayer la v1, v1 beta et v3.

Tu peut copier / coller l'erreur ?
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

antho59



voici les erreurs avec la v5.91:

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

antho59

c'est bon j'ai réussi!!

j'ai pris la dernière version est corrigé tout les défauts, beaucoup de défauts dans les onglets ***.h fichier mal spécifié pour la plus part.

merci skywodd pour ton aide.

je vais enfin avancer...

skywodd

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 ...
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

antho59

je l'ai pris sur code.google.... le problème c'est que la compilation appelle des fichiers via #include .... mais la syntaxe est pas bonne

ex: #include <TVout.h> ne fonctionne pas il faut la remplacer par #include"TVout.h"

bon sinon j'ai un peu avancer depuis hier j'ai réussi a integrer mon propre bitmap d'intro et changer les differentes lignes affichés.

mais là je bloque pour afficher la valeur de pression turbo.

je me suis servis de ce topic: http://www.seatcupra.net/forums/showthread.php?t=348592

dans le void setup j'ai inscrusté ce code

Code: [Select]
//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:

Code: [Select]
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

skywodd

Attend tu est en train de tous mélanger !?

Code: [Select]
TV.write(254); // SerLCD instruction
TV.xxx c'est un objet TV-out ou un objet SoftwareSerial ?

Dans tout les cas :
Code: [Select]
TV.write("TURBO");Q
TV.print(boost);

-> FAUX

.write(x) -> envoi un octet brute de forme (valeur binaire 0~255)
.print(x) -> affiche une valeur sous forme de caractére

Donc "quelqueChoseEntreDoubleQuote" -> .print(x) et non .write(x) !
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

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?





skywodd


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 :smiley-mr-green:

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 ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

antho59

#29
Jul 24, 2012, 01:54 am Last Edit: Jul 24, 2012, 03:25 am by antho59 Reason: 1
un peu d'avancement aujourd'hui mais c'est pas encore çà mais je touche au but.

pour commencer le code

Code: [Select]
#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é...



si je met TV.println("TURBO = ") et TV.println(pression) j'obtient une dizaine de ligne avec turbo et la valeur comme ceci:



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.

Go Up