Go Down

Topic: Aide arduino + MIO283QT2 (Read 10 times) previous topic - next topic

Alfredo Ingrassia

Jean François excuse moi si je n'ai pas donné suite a ton exemple a titre d'exercice concernant le carré de 100 de coté, j'avais preparé ton exemple que j'avais égaré et que je viens de retrouver, donc j'ai bien un rectangle de couleur bleu en haut et de couleur marron en bas, avec comme ligne mediane des deux rectangles.

Voici le code que j'ai adopté selon ton exemple:

lcd.fillRect(0, 0, 319, 120, RGB(0,0,255)); // trace un rectangle plein bleu
lcd.fillRect(0, 120, 319, 239, RGB(152,52,2)); // trace un rectangle plein marron

J'essaye (sans succés) de faire incliner cette ligne a gauche ou a droite avec le MMA7260 mais je ne sais pas comment faire, as tu une idée lumineuse ?
Je crois qu'il fallait passer tout simplement par de la trigo..

Jean-François

Ma solution est purement graphique, ce qui la rend plus simple que de passer par de la trigo  XD

Tu fais un carré bleu, avec en son centre une ligne brune.

Ensuite tu modifies ta ligne avec cette exemple (à modifier pour ton écran):

Code: [Select]
roll = int(valeur du capteur)-valeur du capteur au repos ;
   int roll_L = 250+roll; // extrémité gauche de la ligne
   int roll_R = 250-roll; // extrémité droite de la ligne

line(0, roll_L, 399, roll_R);  //dessine la ligne d'horizon
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Alfredo Ingrassia

Je vais essayer ce code, je te tiens au courant..

Alfredo Ingrassia

#108
Jun 30, 2011, 07:29 pm Last Edit: Jun 30, 2011, 07:35 pm by Alfred Ingrassia Reason: 1
Voila, j'ai inseré ton bout de code dans cet ensemnble, mais j'ai une erreur de compilation, visiblement il ne reconnais pas la commande "line". Est ce que tu penses que cela va fonctionner ?

Horizon_Artificiel.cpp: In function 'void loop()':
Horizon_Artificiel:28: error: 'line' cannot be used as a function


#include <MI0283QT2.h>

MI0283QT2 lcd;

void setup()
{
  lcd.init(4);
  lcd.clear(COLOR_WHITE);
 

lcd.fillRect(0, 0, 319, 120, RGB(0,0,255)); // trace un rectangle plein bleu
lcd.fillRect(0, 120, 319, 239, RGB(152,52,2)); // trace un rectangle plein marron

}

int roll;

int repos = 337; // valeur roulis au repos exemple au pif
int roll_L = 337 + roll; // extrémité gauche de la ligne
int roll_R = 337 - roll; // extrémité droite de la ligne
//roll = int(valeur du capteur)-valeur du capteur au repos ;


void loop()
{
roll = analogRead(A0) - repos; // valeur du roulie en sorti du capteur
int roll_L = 337 + roll; // extrémité gauche de la ligne
int roll_R = 337 - roll; // extrémité droite de la ligne
line(0, roll_L, 1023, roll_R);  //dessine la ligne d'horizon
}

Jean-François

il faut adapter pour ton écran...

Code: [Select]
line(0, roll_L, 399, roll_R);

deviendra :

Code: [Select]
drawLine(0, roll_L, 399, roll_R);

Ou un truc du genre...
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Alfredo Ingrassia

#110
Jun 30, 2011, 07:39 pm Last Edit: Jun 30, 2011, 08:12 pm by Alfred Ingrassia Reason: 1
Idem, meme erreur, j'avais deja essayé...

Je pense selon la doc du lcd qu'il faut mettre sous cette forme la..

drawLine(x0, y0, x1, y1, color)

J'ai donc ajouté:
#define BLACK 0x000000
et
lcd.drawLine(0, roll_L, 337, roll_R, BLACK);

Miracle j'ai bien une ligne qui bouge, mais elle n'est pas au bon endroit....

Jean-François

#111
Jun 30, 2011, 08:18 pm Last Edit: Jun 30, 2011, 09:01 pm by Jean-François Reason: 1
Un bonne nouvelle... suit elle les mouvements de ton capteur ?

Elle est ou trop haut ou trop bas....

chez moi c'est pareille, et j'ai corrigé de cette façon :

Quote
line(0, roll_L-50, 399, roll_R-50);  //dessine la ligne d'horizon
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Alfredo Ingrassia

J'ai corrigé la ligne, elle semble suivre le sens du capteur, mais elle fonctionne par saccades et affiche une multitude de lignes, je pense qu'il faut afficher la ligne actuelle, effacer la ligne et afficher la ligne suivante (selon ma logique)..tu me corrige si je me trompe

skywodd

#113
Jun 30, 2011, 08:36 pm Last Edit: Jun 30, 2011, 09:50 pm by skywodd Reason: 1

J'ai corrigé la ligne, elle semble suivre le sens du capteur, mais elle fonctionne par saccades et affiche une multitude de lignes, je pense qu'il faut afficher la ligne actuelle, effacer la ligne et afficher la ligne suivante (selon ma logique)..tu me corrige si je me trompe


Tu dois tracer une ligne au point précédant pour éviter un clear complet de l'écran, exemple:
Code: [Select]

#include <MI0283QT2.h>

MI0283QT2 lcd;

void setup()
{
 lcd.init(4);
 lcd.clear(COLOR_WHITE);
 

lcd.fillRect(0, 0, 319, 120, RGB(0,0,255)); // trace un rectangle plein bleu
lcd.fillRect(0, 120, 319, 239, RGB(152,52,2)); // trace un rectangle plein marron

}

int roll;

int repos = 337; // valeur roulis au repos exemple au pif
int roll_L = 337 + roll; // extrémité gauche de la ligne
int roll_R = 337 - roll; // extrémité droite de la ligne
//roll = int(valeur du capteur)-valeur du capteur au repos ;
int beforeX = 0;
int beforeY = 0;

void loop()
{
roll = analogRead(A0) - repos; // valeur du roulie en sorti du capteur
int roll_L = 337 + roll; // extrémité gauche de la ligne
int roll_R = 337 - roll; // extrémité droite de la ligne
lcd.line(0, beforeX, 399, beforeY);  //efface l'ancienne ligne d'horizon
lcd.line(0, roll_L-50, 399, roll_R-50);  //dessine la ligne d'horizon
beforeX = roll_L-50;
beforeY = roll_R-50;
}
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Alfredo Ingrassia

OK Jean François je te laisse car je dois preparer mon planning pour demain, j'essayerais le code demain, la bonne soirée a toi et encore merci pour le coup de main, je commence a comprendre un peu le fonctionnement general...

Amitiées Fred

Jean-François

#115
Jun 30, 2011, 08:58 pm Last Edit: Jun 30, 2011, 09:05 pm by Jean-François Reason: 1
C'est sur que sans avoir l'écran sous les yeux c'est difficile pour moi d'apprécier...  :smiley-mr-green:

Merci Skywodd pour le coup de main  ;)


Est ce que :

Code: [Select]
line(0, beforeX, 399, beforeY);  //efface l'ancienne ligne d'horizon
line(0, roll_L-50, 399, roll_R-50);  //dessine la ligne d'horizon


ne devrait pas être :

Code: [Select]
lcd.drawLine(0, beforeX, 399, beforeY,BLEU);  //efface l'ancienne ligne d'horizon
lcd.drawLine(0, roll_L-50, 399, roll_R-50,BLACK);  //dessine la ligne d'horizon


?
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

skywodd


Est ce que :

Code: [Select]
line(0, beforeX, 399, beforeY);  //efface l'ancienne ligne d'horizon
line(0, roll_L-50, 399, roll_R-50);  //dessine la ligne d'horizon


ne devrait pas être :

Code: [Select]
lcd.drawLine(0, beforeX, 399, beforeY,BLEU);  //efface l'ancienne ligne d'horizon
lcd.drawLine(0, roll_L-50, 399, roll_R-50,BLACK);  //dessine la ligne d'horizon



Ho la boulette ! Mais oui bien sur (/facepalm), désolé j'ai passé 6 heures sur un casse google pour gagner un chromebook j'ai le cerveau en marmelade.
Post édité, désolé.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Alfredo Ingrassia

#117
Jul 01, 2011, 08:08 pm Last Edit: Jul 01, 2011, 08:15 pm by Alfred Ingrassia Reason: 1
Salut Skywodd, je changerais ces lignes demain, par contre normalement la ligne sur un horizon artificiel doit rester fixe, c'est la jonction du carré bleu(ciel) et du carré marron (sol) qui doit bouger...A propos connais tu PYXIS ?

skywodd


Salut Skywodd, je changerais ces lignes demain, par contre normalement la ligne sur un horizon artificiel doit rester fixe, c'est la jonction du carré bleu(ciel) et du carré marron (sol) qui doit bouger...

ça sort de mes capacité en math là ^^" je regarderai ça de plus prés.


A propos connais tu PYXIS ?

Heuu pyxis ? Pyxis Os ?
-> http://www.skewworks.com/pyxis/ ?
Si c'est lui oui je connais.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Jean-François


par contre normalement la ligne sur un horizon artificiel doit rester fixe, c'est la jonction du carré bleu(ciel) et du carré marron (sol) qui doit bouger


On va y venir...
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Go Up