Ma régie de papier

Les utilisateurs de WhiteCat sont malicieux et débrouillards.... Voilà la section Battle, où se lancer des défis utilisateurs ;-)

Modérateur: christoph

Re: Ma régie de papier

Messagepar bouault » 26 Fév 2012, 01:04

TRES intéressant en effet! Du coup l'option avec condos pourrait être réalisé entièrement en papier.
As-tu testé le code avec la manipulation de ports et l'activation des pull up ? Ça doit normalement résoudre le problème des interférences.
Je suis en créa cette semaine : je n'aurai pas le temps de me pencher là dessus.
Il faut aussi que je fabrique un jee-shutter ;) .
Je t'appelle demain car je ne parviens pas à faire fonctionner ton patch vvvv. Vvvv reçoit les ordres de Wcat, j'ai du son mais le renderer reste désespérément noir... Help !
Jacques.
visitez mon site :
arpschuino.fr
Avatar de l’utilisateur
bouault
 
Messages: 396
Inscription: 29 Jan 2010, 14:37
Localisation: Paris

Re: Ma régie de papier

Messagepar bouault » 29 Mar 2012, 15:28

Je m'y remet un peu !
-L'activation de pull up résout complétement le problème des interférences.
-Des condensateurs entre la masse et la pin du signal réduisent considérablement (complétement en trouvant la valeur optimale ??) les fluctuations parasites. Il faudra tester la technique des condensateurs papiers avec la bare paint.
-Reste le problème des valeurs mini et maxi renvoyées qui changent constamment. La solution que je propose est de ne plus mesurer une tension, mais les variations (à partir d'une différence de 4 points pour filtrer les oscillations parasites), pour les additionner et renvoyer une valeur comprise entre 0 et 255.
Voilà ou j'en suis au nivaux du code :


Code: Tout sélectionner
 val0 = analogRead(A0);
  PORTC = B1111101;  //pull up
  Serial.print(val0);
  Serial.print(" : ");
 
  if (val0 <900){
    if (val0 > lastVal0 +4 && r0 < 255){ //valeur montante
      int diff = val0 - lastVal0;
      if ( r0 + diff -3 <256 && diff <20){
        r0 = r0 + diff -2 ;
      }
    }
 
    if (val0 < lastVal0 -4 && r0 > 0){//valeur descendante
      int diff = val0 - lastVal0;
      if ( r0 + diff +3 >= 0 && diff <20){
        r0 = r0 + diff +2 ;
      }
    }
  }
  lastVal0 = val0 ;
 
  Serial.print(r0,DEC);
  analogWrite(10, r0);
  Serial.print(" / ");
  delay(4);


C'est un extrait, non finalisé. Qu'en pense-tu?
Jacques.
visitez mon site :
arpschuino.fr
Avatar de l’utilisateur
bouault
 
Messages: 396
Inscription: 29 Jan 2010, 14:37
Localisation: Paris

Re: Ma régie de papier

Messagepar admin » 29 Mar 2012, 22:00

salut ami.

pfiou... je suis un peu loin, en plein dans plot. bref une autre galaxie, plus le boulot...

je pense qu'il vaut mieux avoir un sketch de callibrage maison avec seuil haut seuil bas par potard.
il y aura toujours physiquement des différences sur les matériaux. A moins de créer une routine qui va autoapprendre à calilbrer les potards ( auquel cas il faut stocker après sur une carte SIM), je ne vois pas...

j'ai un peu de mal à comprendre ton code, mais parceque je suis ailleurs, pas parcequ ' il serait plus ou moins excellent :mrgreen: !!! ! si ce n'est que tu fais des fourchettes, des sortes de threshold doubles.

quant à la technique des pull up, tu as réussi sur plusieurs potards ???
oulalalalalala....
Avatar de l’utilisateur
admin
Site Admin
 
Messages: 1947
Inscription: 21 Aoû 2008, 15:01
Localisation: France (78 / 27)

Re: Ma régie de papier

Messagepar bouault » 30 Mar 2012, 11:32

Les "fourchettes" c'est parce que je rajoute des trucs au fur et à mesure des essais, il faut que je finalise et que je clean le code.
Sinon je répete : LA TECHNIQUE DES PULL UP FONCTIONNE AVEC PLUSIEURS POTARDS !!!!!!! 8-) 8-) 8-) 8-) 8-)
Jacques.
visitez mon site :
arpschuino.fr
Avatar de l’utilisateur
bouault
 
Messages: 396
Inscription: 29 Jan 2010, 14:37
Localisation: Paris

Re: Ma régie de papier

Messagepar bouault » 30 Mar 2012, 12:10

C'est vrais que le code est confus....
j'en extrais l'essentiel:
Code: Tout sélectionner
 PORTC = B1111101;  //pull up

Ici on active les pull up par manipulation de ports. C'est beaucoup plus rapide qu'en langage arduino et les 6 broches analogs son commandés d'un coup.

Code: Tout sélectionner
     if (val0 > lastVal0 ) {                       //valeur montante
          int diff = val0 - lastVal0;
          r0 = r0 + diff  ;
          }
     

Si la valeur mesurée est supérieure à la précédente, on ajoute la différence à la valeur renvoyé.
Jacques.
visitez mon site :
arpschuino.fr
Avatar de l’utilisateur
bouault
 
Messages: 396
Inscription: 29 Jan 2010, 14:37
Localisation: Paris

Re: Ma régie de papier

Messagepar admin » 30 Mar 2012, 13:58

Code: Tout sélectionner
int valtemp= val0 - lastVal0;
int threshold= 20;

if( valtemp>threshold)
 {                       //valeur montante
          int diff = val0 - lastVal0;
          r0 = r0 + diff  ;
}
     


???

meuh non ce n est pas confus.

et je n avais pas compris le report aux pull up; je pensais devori activer le pullup à chaque fois manuellement ( grossière erreur de débutant)...
oulalalalalala....
Avatar de l’utilisateur
admin
Site Admin
 
Messages: 1947
Inscription: 21 Aoû 2008, 15:01
Localisation: France (78 / 27)

Précédente

Retourner vers Battles

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron